Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Added item tooltips
Browse files Browse the repository at this point in the history
Also "Q" now works in inventories and inject's now changed a little
  • Loading branch information
Buj Itself committed Jul 9, 2022
1 parent fafd4c7 commit 6497cf1
Show file tree
Hide file tree
Showing 31 changed files with 821 additions and 11 deletions.
2 changes: 2 additions & 0 deletions .idea/Rosepad.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions client/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,12 @@ tasks.register("deletePatches", DeletePatches) {

tasks.register("injectClasses", InjectClasses) {
source = "${projectDir}/inject"
dest = "${projectDir}/src/main/java"
dest = "${projectDir}/src/main"
}

tasks.register("ejectClasses", CreateInjectClasses) {
source = "${projectDir}/src/main/java"
orig = "${projectDir}/src/orig/java"
source = "${projectDir}/src/main"
orig = "${projectDir}/src/orig"
dest = "${projectDir}/inject"
}

Expand Down
254 changes: 254 additions & 0 deletions client/patches/net/minecraft/src/Block.java.diff

Large diffs are not rendered by default.

29 changes: 29 additions & 0 deletions client/patches/net/minecraft/src/BlockStep.java.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
--- BlockStep.java
+++ BlockStep.java
@@ -4,9 +4,9 @@

public class BlockStep extends Block {
- private boolean blockType;
+ private boolean fullBlock;

- public BlockStep(final int blockID, final boolean blockType) {
+ public BlockStep(final int blockID, final boolean fullBlock) {
super(blockID, 6, Material.ROCK);
- if (!(this.blockType = blockType)) {
+ if (!(this.fullBlock = fullBlock)) {
this.setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 0.5f, 1.0f);
}
@@ -24,5 +24,5 @@
@Override
public boolean isOpaqueCube() {
- return this.blockType;
+ return this.fullBlock;
}

@@ -52,5 +52,5 @@
@Override
public boolean renderAsNormalBlock() {
- return this.blockType;
+ return this.fullBlock;
}

70 changes: 63 additions & 7 deletions client/patches/net/minecraft/src/FontRenderer.java.diff
Original file line number Diff line number Diff line change
@@ -1,21 +1,77 @@
--- FontRenderer.java
+++ FontRenderer.java
@@ -132,11 +132,23 @@
@@ -93,27 +93,27 @@
}

- public void drawStringWithShadow(final String string, final int integer2, final int integer3, final int integer4) {
- this.renderString(string, integer2 + 1, integer3 + 1, integer4, true);
- this.drawString(string, integer2, integer3, integer4);
+ public void drawStringWithShadow(final String string, final int beginX, final int beginY, final int color) {
+ this.renderString(string, beginX + 1, beginY + 1, color, true);
+ this.drawString(string, beginX, beginY, color);
}

- public void drawString(final String string, final int integer2, final int integer3, final int integer4) {
- this.renderString(string, integer2, integer3, integer4, false);
+ public void drawString(final String string, final int beginX, final int beginY, final int color) {
+ this.renderString(string, beginX, beginY, color, false);
}

- public void renderString(final String string, final int integer2, final int integer3, int integer4, final boolean boolean5) {
+ public void renderString(final String string, final int beginX, final int beginY, int color, final boolean renderShadow) {
if (string == null) {
return;
}
- if (boolean5) {
- final int n = integer4 >> 24 & 0xFF;
- final int n2 = integer4 & 0xFF000000;
- integer4 = (integer4 & 0xFCFCFC) >> 2;
- integer4 += n2;
+ if (renderShadow) {
+ final int n = color >> 24 & 0xFF;
+ final int n2 = color & 0xFF000000;
+ color = (color & 0xFCFCFC) >> 2;
+ color += n2;
if (n == 255 || n == 0) {
- integer4 |= 0xFF000000;
+ color |= 0xFF000000;
}
else {
- integer4 |= n / 2 << 24;
+ color |= n / 2 << 24;
}
}
@@ -121,8 +121,8 @@
GL11.glBlendFunc(770, 771);
GL11.glBindTexture(3553, this.fontTextureName);
- final float n3 = (integer4 >> 16 & 0xFF) / 255.0f;
- final float n4 = (integer4 >> 8 & 0xFF) / 255.0f;
- final float n5 = (integer4 & 0xFF) / 255.0f;
- float n6 = (integer4 >> 24 & 0xFF) / 255.0f;
+ final float n3 = (color >> 16 & 0xFF) / 255.0f;
+ final float n4 = (color >> 8 & 0xFF) / 255.0f;
+ final float n5 = (color & 0xFF) / 255.0f;
+ float n6 = (color >> 24 & 0xFF) / 255.0f;
if (n6 == 0.0f) {
n6 = 1.0f;
@@ -131,12 +131,24 @@
this.buffer.clear();
GL11.glPushMatrix();
GL11.glTranslatef((float)integer2, (float)integer3, 0.0f);
- GL11.glTranslatef((float)integer2, (float)integer3, 0.0f);
- for (int i = 0; i < string.length(); ++i) {
- while (string.charAt(i) == '§' && string.length() > i + 1) {
- int n7 = "0123456789abcdef".indexOf((int)string.toLowerCase().charAt(i + 1));
- if (n7 < 0 || n7 > 15) {
- n7 = 15;
+ GL11.glTranslatef((float)beginX, (float)beginY, 0);
+ try {
+ for (int i = 0; i < string.length(); ++i) {
+ while (string.charAt(i) == '§' && string.length() > i + 2) {
+ int n7 = "0123456789abcdef".indexOf((int)string.toLowerCase().charAt(i + 1));
+ if (n7 < 0 || n7 > 15) {
+ int n7 = "0123456789abcdef".indexOf(string.toLowerCase().charAt(i + 1));
+ if (n7 < 0) {
+ n7 = 15;
+ }
+ this.buffer.put(this.fontDisplayLists + 256 + n7 + (boolean5 ? 16 : 0));
+ this.buffer.put(this.fontDisplayLists + 256 + n7 + (renderShadow ? 16 : 0));
+ if (this.buffer.remaining() == 0) {
+ this.buffer.flip();
+ GL11.glCallLists(this.buffer);
Expand Down Expand Up @@ -44,10 +100,10 @@
+ for (int i = 0; i < errorStr.length(); ++i) {
+ while (errorStr.charAt(i) == '§' && errorStr.length() > i + 2) {
+ int n7 = "0123456789abcdef".indexOf((int) errorStr.toLowerCase().charAt(i + 1));
+ if (n7 < 0 || n7 > 15) {
+ if (n7 < 0) {
+ n7 = 15;
+ }
+ this.buffer.put(this.fontDisplayLists + 256 + n7 + (boolean5 ? 16 : 0));
+ this.buffer.put(this.fontDisplayLists + 256 + n7 + (renderShadow ? 16 : 0));
+ if (this.buffer.remaining() == 0) {
+ this.buffer.flip();
+ GL11.glCallLists(this.buffer);
Expand Down
153 changes: 153 additions & 0 deletions client/patches/net/minecraft/src/GuiContainer.java.diff
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
--- GuiContainer.java
+++ GuiContainer.java
@@ -10,4 +10,6 @@
protected int ySize;
protected List<SlotInventory> inventorySlots;
+ protected int selectedSlot = 0;
+ protected IInventory selectedInventory = null;

static {
@@ -20,7 +22,94 @@
this.inventorySlots = (List<SlotInventory>)new ArrayList();
}
-
+
+ public static String getItemInfo(final ItemStack stack, List<String> additionalInfo, GuiContainer inventory) {
+ StringBuilder renderItemName;
+
+ Item item = stack.getItem();
+ switch (item.getRarity()) {
+ case -1:
+ renderItemName = new StringBuilder("§4");
+ break;
+ case 1:
+ renderItemName = new StringBuilder("§e");
+ break;
+ case 2:
+ renderItemName = new StringBuilder("§b");
+ break;
+ case 3:
+ renderItemName = new StringBuilder("§d");
+ break;
+ default:
+ renderItemName = new StringBuilder();
+ break;
+ }
+ renderItemName.append(item.getName());
+
+ if (stack.itemDmg > 0 && (item instanceof ItemArmor || item instanceof ItemTool)) {
+ int max = stack.getMaxDamage();
+ float per = 1 - stack.itemDmg / (float) max;
+ String durColor = per > 0.6f ? "a" : per > 0.2f ? "e" : "c";
+ additionalInfo.add("Durability: §" + durColor + (max - stack.itemDmg) + "§r/" + max);
+ }
+
+ if (item instanceof ItemBow && inventory != null) {
+ int count = 0;
+ for (SlotInventory slot : inventory.inventorySlots) {
+ ItemStack stack1;
+ if ((stack1 = slot.getStack()) == null) continue;
+ if (stack1.getItem() != Item.ARROW) continue;
+
+ count += Math.max(1, stack1.stackSize); // Negative arrows act like 1 arrow
+ }
+ additionalInfo.add("Ammo: §e" + count);
+ }
+
+ if (item == Item.DOOR_IRON) {
+ additionalInfo.add("§6Hub code is missing from Lilypad QA");
+ }
+
+ if (item == Item.edibleFire) {
+ additionalInfo.add("It does look tasty, but please don't eat it");
+ }
+
+ if (inventory instanceof GuiFurnace && TileEntityFurnace.getItemBurnTime(stack) > 0) {
+ int time = TileEntityFurnace.getItemBurnTime(stack);
+ String burnColor = time > 1600 ? "b" : time > 300 ? "c" : time > 100 ? "6" : "e";
+ additionalInfo.add("Burn time: §" + burnColor + (TileEntityFurnace.getItemBurnTime(stack) / 20) + " seconds");
+ }
+
+ return renderItemName.toString();
+ }
+
+ public static void drawTooltip(final int x, final int y, final String name, final List<String> info, GuiScreen screen) {
+ GL11.glDisable(GL11.GL_DEPTH_TEST);
+
+ int lenX = screen.fontRenderer.getStringWidth(name);
+ int lenY = 10;
+ if (info.size() > 0) {
+ lenY *= 2 + info.size();
+ for (String str : info) {
+ lenX = Math.max(screen.fontRenderer.getStringWidth(str), lenX);
+ }
+ }
+
+ screen.drawRect(
+ x, y,
+ x + 10 + lenX, y + 8 + lenY,
+ 0xAA000000
+ );
+ screen.fontRenderer.drawString(name, x + 5, y + 5, 0xffffff);
+
+ for (int i = 0; i < info.size(); i++) {
+ screen.fontRenderer.drawString(info.get(i), x + 5, y + 25 + i * 10, 0xffffff);
+ }
+
+ GL11.glEnable(GL11.GL_DEPTH_TEST);
+ }
+
@Override
public void drawScreen(final int mouseX, final int mouseY, final float renderPartialTick) {
+ String renderItemName = null;
+ List<String> additionalInfo = new ArrayList<>();
this.drawDefaultBackground();
final int n = (this.width - this.xSize) / 2;
@@ -35,12 +124,19 @@
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
GL11.glEnable(32826);
- for (int i = 0; i < this.inventorySlots.size(); ++i) {
- final SlotInventory slotInventory = (SlotInventory)this.inventorySlots.get(i);
+ selectedInventory = null;
+ selectedSlot = -1;
+ for (int i = 0; i < this.inventorySlots.size(); i++) {
+ final SlotInventory slotInventory = this.inventorySlots.get(i);
this.drawSlotInventory(slotInventory);
if (slotInventory.getIsMouseOverSlot(mouseX, mouseY)) {
+ selectedInventory = slotInventory.inventory;
+ selectedSlot = slotInventory.slotIndex;
GL11.glDisable(2896);
GL11.glDisable(2929);
final int xDisplayPosition = slotInventory.xDisplayPosition;
final int yDisplayPosition = slotInventory.yDisplayPosition;
+ if (slotInventory.getStack() != null && slotInventory.getStack().getItem() != null) {
+ renderItemName = getItemInfo(slotInventory.getStack(), additionalInfo, this);
+ }
this.drawGradientRect(xDisplayPosition, yDisplayPosition, xDisplayPosition + 16, yDisplayPosition + 16, -2130706433, -2130706433);
GL11.glEnable(2896);
@@ -59,4 +155,12 @@
GL11.glDisable(2929);
this.drawGuiContainerForegroundLayer();
+ if (renderItemName != null) {
+ drawTooltip(
+ mouseX - n + 10, mouseY - n2 + 10,
+ renderItemName,
+ additionalInfo,
+ this
+ );
+ }
GL11.glEnable(2896);
GL11.glEnable(2929);
@@ -215,4 +319,12 @@
this.mc.displayGuiScreen(null);
}
+
+ if (key == this.mc.gameSettings.keyBindDrop.keyCode && this.selectedInventory != null) {
+ ItemStack stack = this.selectedInventory.getStackInSlot(this.selectedSlot);
+ this.mc.thePlayer.dropPlayerItem(stack.splitStack(1));
+ if (stack.stackSize <= 0) {
+ selectedInventory.setInventorySlotContents(selectedSlot, null);
+ }
+ }
}

Loading

0 comments on commit 6497cf1

Please sign in to comment.