aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNopoTheGamer <40329022+NopoTheGamer@users.noreply.github.com>2023-03-12 01:51:05 +1100
committerGitHub <noreply@github.com>2023-03-11 15:51:05 +0100
commite010edcc074d5819118e6032746efd26ebed6cef (patch)
tree3559737a6cad085893f81e971555b653a2d5eb72
parent1869ce4d63f4ef9b16bc3140f4bb5a53d8bfe646 (diff)
downloadNotEnoughUpdates-e010edcc074d5819118e6032746efd26ebed6cef.tar.gz
NotEnoughUpdates-e010edcc074d5819118e6032746efd26ebed6cef.tar.bz2
NotEnoughUpdates-e010edcc074d5819118e6032746efd26ebed6cef.zip
Clean up garden stuff in CustomItemEffects (#643)
* change location to use array * move overlays to separate methods * early returns * move getting nbt to its own method * move overlays to their own methods * dont do expensive thing 4 times in a row * fix the crash
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CustomItemEffects.java712
1 files changed, 425 insertions, 287 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CustomItemEffects.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CustomItemEffects.java
index 16a40290..d7c84a6f 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CustomItemEffects.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CustomItemEffects.java
@@ -335,8 +335,7 @@ public class CustomItemEffects {
}
}
- boolean onPrivateIsland = SBInfo.getInstance().getLocation() == null || SBInfo.getInstance().getLocation().equals(
- "dynamic") || SBInfo.getInstance().getLocation().equals("garden");
+ boolean onPrivateIsland = Arrays.asList("dynamic","garden").contains(SBInfo.getInstance().getLocation());
if (NotEnoughUpdates.INSTANCE.config.itemOverlays.enableWandOverlay &&
Minecraft.getMinecraft().objectMouseOver != null &&
@@ -348,129 +347,210 @@ public class CustomItemEffects {
Minecraft.getMinecraft().objectMouseOver.sideHit, 1));
if (hover.getBlock() == Blocks.air) {
- if (heldInternal != null && (heldInternal.equals("BUILDERS_WAND") || heldInternal.equals("BUILDERS_RULER"))) {
- ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
+ if (heldInternal != null && (heldInternal.equals("BUILDERS_WAND"))) buildersWandText(event, world);
+ else if (heldInternal != null && (heldInternal.equals("BUILDERS_RULER"))) buildersRulerText(event, world);
- HashSet<BlockPos> candidatesOld = new HashSet<>();
- TreeMap<Float, Set<BlockPos>> candidatesOldSorted = new TreeMap<>();
-
- IBlockState match =
- world.getBlockState(Minecraft.getMinecraft().objectMouseOver.getBlockPos());
- Item matchItem = Item.getItemFromBlock(match.getBlock());
- if (matchItem != null) {
- boolean ruler = heldInternal.equals("BUILDERS_RULER");
- ItemStack matchStack;
-
- matchStack = new ItemStack(matchItem, 1,
- match
- .getBlock()
- .getDamageValue(
- world,
- Minecraft.getMinecraft().objectMouseOver.getBlockPos()
- )
- );
- if (ruler) {
- if (!Minecraft.getMinecraft().thePlayer.isSneaking()) matchStack = getFirstItemInRuler();
- match = Blocks.dirt.getDefaultState();
- }
- if (matchStack == null) return;
-
- if (heldInternal.equals("BUILDERS_WAND")) {
- getBuildersWandCandidates(
- Minecraft.getMinecraft().thePlayer,
- Minecraft.getMinecraft().objectMouseOver,
- event.partialTicks,
- candidatesOld,
- candidatesOldSorted,
- 999 - MAX_BUILDERS_BLOCKS
- );
- } else {
- getBuildersRulerCandidates(
- Minecraft.getMinecraft().thePlayer,
- Minecraft.getMinecraft().objectMouseOver,
- event.partialTicks,
- candidatesOld,
- candidatesOldSorted,
- 199 - MAX_BUILDERS_BLOCKS
- );
- }
+ }
+ }
+ }
+ }
- boolean usingDirtWand = false;
- int itemCount;
- if (Minecraft.getMinecraft().thePlayer.isSneaking() && ruler) {
- itemCount = candidatesOld.size();
- } else {
- if (match.getBlock() == Blocks.dirt && matchStack.getItemDamage() == 0 && hasDirtWand()) {
- itemCount = candidatesOld.size();
- usingDirtWand = true;
- } else {
- itemCount = countItemsInInventoryAndStorage(matchStack);
- }
- }
- if (candidatesOld.size() == 0) return;
-
- if (!Minecraft.getMinecraft().thePlayer.isSneaking() || !ruler) {
- if (candidatesOld.size() > MAX_BUILDERS_BLOCKS) {
- Utils.drawStringCentered(
- EnumChatFormatting.RED.toString() + candidatesOld.size() + "/" + MAX_BUILDERS_BLOCKS,
- Minecraft.getMinecraft().fontRendererObj,
- scaledResolution.getScaledWidth() / 2f,
- scaledResolution.getScaledHeight() / 2f + 10,
- true,
- 0
- );
- } else {
- String pre = EnumChatFormatting.GREEN.toString();
- if (itemCount < candidatesOld.size() && !ruler) {
- pre = EnumChatFormatting.RED.toString();
- }
- Utils.drawStringCentered(pre + Math.min(candidatesOld.size(), itemCount) + "/" +
- Math.min(candidatesOld.size(), MAX_BUILDERS_BLOCKS),
- Minecraft.getMinecraft().fontRendererObj,
- scaledResolution.getScaledWidth() / 2f, scaledResolution.getScaledHeight() / 2f + 10, true, 0
- );
- }
- }
+ public void buildersWandText(RenderGameOverlayEvent.Post event, WorldClient world) {
+ ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
+
+ HashSet<BlockPos> candidatesOld = new HashSet<>();
+ TreeMap<Float, Set<BlockPos>> candidatesOldSorted = new TreeMap<>();
+
+ IBlockState match =
+ world.getBlockState(Minecraft.getMinecraft().objectMouseOver.getBlockPos());
+ Item matchItem = Item.getItemFromBlock(match.getBlock());
+ if (matchItem == null) return;
+ ItemStack matchStack;
+
+ matchStack = new ItemStack(matchItem, 1,
+ match
+ .getBlock()
+ .getDamageValue(
+ world,
+ Minecraft.getMinecraft().objectMouseOver.getBlockPos()
+ )
+ );
- String itemCountS = EnumChatFormatting.DARK_GRAY + "x" + EnumChatFormatting.RESET + itemCount;
- int itemCountLen = Minecraft.getMinecraft().fontRendererObj.getStringWidth(itemCountS);
+ getBuildersWandCandidates(
+ Minecraft.getMinecraft().thePlayer,
+ Minecraft.getMinecraft().objectMouseOver,
+ event.partialTicks,
+ candidatesOld,
+ candidatesOldSorted,
+ 999 - MAX_BUILDERS_BLOCKS
+ );
- if (NotEnoughUpdates.INSTANCE.config.itemOverlays.wandBlockCount) {
- if (usingDirtWand) {
- Utils.drawItemStack(
- new ItemStack(Items.gold_nugget),
- scaledResolution.getScaledWidth() / 2 - (itemCountLen + 16) / 2,
- scaledResolution.getScaledHeight() / 2 + 10 + 4
- );
- Minecraft.getMinecraft().fontRendererObj.drawString(
- itemCountS,
- scaledResolution.getScaledWidth() / 2f - (itemCountLen + 16) / 2f + 11,
- scaledResolution.getScaledHeight() / 2f + 10 + 8,
- -1,
- true
- );
- } else {
- Utils.drawItemStack(matchStack, scaledResolution.getScaledWidth() / 2 - (itemCountLen + 16) / 2,
- scaledResolution.getScaledHeight() / 2 + 10 + 4
- );
- Minecraft.getMinecraft().fontRendererObj.drawString(
- itemCountS,
- scaledResolution.getScaledWidth() / 2f - (itemCountLen + 16) / 2f + 16,
- scaledResolution.getScaledHeight() / 2f + 10 + 8,
- -1,
- true
- );
- }
+ boolean usingDirtWand = false;
+ int itemCount;
+ if (match.getBlock() == Blocks.dirt && matchStack.getItemDamage() == 0 && hasDirtWand()) {
+ itemCount = candidatesOld.size();
+ usingDirtWand = true;
+ } else {
+ itemCount = countItemsInInventoryAndStorage(matchStack);
+ }
+ if (candidatesOld.size() == 0) return;
+
+ if (candidatesOld.size() > MAX_BUILDERS_BLOCKS) {
+ Utils.drawStringCentered(
+ EnumChatFormatting.RED.toString() + candidatesOld.size() + "/" + MAX_BUILDERS_BLOCKS,
+ Minecraft.getMinecraft().fontRendererObj,
+ scaledResolution.getScaledWidth() / 2f,
+ scaledResolution.getScaledHeight() / 2f + 10,
+ true,
+ 0
+ );
+ } else {
+ String pre = EnumChatFormatting.GREEN.toString();
+ if (itemCount < candidatesOld.size()) {
+ pre = EnumChatFormatting.RED.toString();
+ }
+ Utils.drawStringCentered(pre + Math.min(candidatesOld.size(), itemCount) + "/" +
+ Math.min(candidatesOld.size(), MAX_BUILDERS_BLOCKS),
+ Minecraft.getMinecraft().fontRendererObj,
+ scaledResolution.getScaledWidth() / 2f, scaledResolution.getScaledHeight() / 2f + 10, true, 0
+ );
+ }
- }
+ String itemCountS = EnumChatFormatting.DARK_GRAY + "x" + EnumChatFormatting.RESET + itemCount;
+ int itemCountLen = Minecraft.getMinecraft().fontRendererObj.getStringWidth(itemCountS);
+
+ if (NotEnoughUpdates.INSTANCE.config.itemOverlays.wandBlockCount) {
+ if (usingDirtWand) {
+ Utils.drawItemStack(
+ new ItemStack(Items.gold_nugget),
+ scaledResolution.getScaledWidth() / 2 - (itemCountLen + 16) / 2,
+ scaledResolution.getScaledHeight() / 2 + 10 + 4
+ );
+ Minecraft.getMinecraft().fontRendererObj.drawString(
+ itemCountS,
+ scaledResolution.getScaledWidth() / 2f - (itemCountLen + 16) / 2f + 11,
+ scaledResolution.getScaledHeight() / 2f + 10 + 8,
+ -1,
+ true
+ );
+ } else {
+ Utils.drawItemStack(matchStack, scaledResolution.getScaledWidth() / 2 - (itemCountLen + 16) / 2,
+ scaledResolution.getScaledHeight() / 2 + 10 + 4
+ );
+ Minecraft.getMinecraft().fontRendererObj.drawString(
+ itemCountS,
+ scaledResolution.getScaledWidth() / 2f - (itemCountLen + 16) / 2f + 16,
+ scaledResolution.getScaledHeight() / 2f + 10 + 8,
+ -1,
+ true
+ );
+ }
- GlStateManager.color(1, 1, 1, 1);
- }
+ }
- }
- }
+ GlStateManager.color(1, 1, 1, 1);
+ }
+
+ public void buildersRulerText(RenderGameOverlayEvent.Post event, WorldClient world) {
+ ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft());
+
+ HashSet<BlockPos> candidatesOld = new HashSet<>();
+ TreeMap<Float, Set<BlockPos>> candidatesOldSorted = new TreeMap<>();
+
+ IBlockState match =
+ world.getBlockState(Minecraft.getMinecraft().objectMouseOver.getBlockPos());
+ Item matchItem = Item.getItemFromBlock(match.getBlock());
+ if (matchItem == null) return;
+ ItemStack matchStack;
+
+ matchStack = new ItemStack(matchItem, 1,
+ match
+ .getBlock()
+ .getDamageValue(
+ world,
+ Minecraft.getMinecraft().objectMouseOver.getBlockPos()
+ )
+ );
+ if (!Minecraft.getMinecraft().thePlayer.isSneaking()) matchStack = getFirstItemInRuler();
+ match = Blocks.dirt.getDefaultState();
+ if (matchStack == null) return;
+
+ getBuildersRulerCandidates(
+ Minecraft.getMinecraft().thePlayer,
+ Minecraft.getMinecraft().objectMouseOver,
+ event.partialTicks,
+ candidatesOld,
+ candidatesOldSorted,
+ 199 - MAX_BUILDERS_BLOCKS
+ );
+
+ boolean usingDirtWand = false;
+ int itemCount;
+ if (Minecraft.getMinecraft().thePlayer.isSneaking()) {
+ itemCount = candidatesOld.size();
+ } else {
+ if (match.getBlock() == Blocks.dirt && matchStack.getItemDamage() == 0 && hasDirtWand()) {
+ itemCount = candidatesOld.size();
+ usingDirtWand = true;
+ } else {
+ itemCount = countItemsInInventoryAndStorage(matchStack);
+ }
+ }
+ if (candidatesOld.size() == 0) return;
+
+ if (!Minecraft.getMinecraft().thePlayer.isSneaking()) {
+ if (candidatesOld.size() > MAX_BUILDERS_BLOCKS) {
+ Utils.drawStringCentered(
+ EnumChatFormatting.RED.toString() + candidatesOld.size() + "/" + MAX_BUILDERS_BLOCKS,
+ Minecraft.getMinecraft().fontRendererObj,
+ scaledResolution.getScaledWidth() / 2f,
+ scaledResolution.getScaledHeight() / 2f + 10,
+ true,
+ 0
+ );
+ } else {
+ String pre = EnumChatFormatting.GREEN.toString();
+ Utils.drawStringCentered(pre + Math.min(candidatesOld.size(), itemCount) + "/" +
+ Math.min(candidatesOld.size(), MAX_BUILDERS_BLOCKS),
+ Minecraft.getMinecraft().fontRendererObj,
+ scaledResolution.getScaledWidth() / 2f, scaledResolution.getScaledHeight() / 2f + 10, true, 0
+ );
}
}
+
+ String itemCountS = EnumChatFormatting.DARK_GRAY + "x" + EnumChatFormatting.RESET + itemCount;
+ int itemCountLen = Minecraft.getMinecraft().fontRendererObj.getStringWidth(itemCountS);
+
+ if (NotEnoughUpdates.INSTANCE.config.itemOverlays.wandBlockCount) {
+ if (usingDirtWand) {
+ Utils.drawItemStack(
+ new ItemStack(Items.gold_nugget),
+ scaledResolution.getScaledWidth() / 2 - (itemCountLen + 16) / 2,
+ scaledResolution.getScaledHeight() / 2 + 10 + 4
+ );
+ Minecraft.getMinecraft().fontRendererObj.drawString(
+ itemCountS,
+ scaledResolution.getScaledWidth() / 2f - (itemCountLen + 16) / 2f + 11,
+ scaledResolution.getScaledHeight() / 2f + 10 + 8,
+ -1,
+ true
+ );
+ } else {
+ Utils.drawItemStack(matchStack, scaledResolution.getScaledWidth() / 2 - (itemCountLen + 16) / 2,
+ scaledResolution.getScaledHeight() / 2 + 10 + 4
+ );
+ Minecraft.getMinecraft().fontRendererObj.drawString(
+ itemCountS,
+ scaledResolution.getScaledWidth() / 2f - (itemCountLen + 16) / 2f + 16,
+ scaledResolution.getScaledHeight() / 2f + 10 + 8,
+ -1,
+ true
+ );
+ }
+
+ }
+
+ GlStateManager.color(1, 1, 1, 1);
}
//ethermerge
@@ -524,6 +604,26 @@ public class CustomItemEffects {
return null;
}
+ public NBTTagCompound getBuildersNbt(boolean isWand) {
+ ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem();
+ if (held == null) return null;
+
+ if (held.hasTagCompound() && held.getTagCompound().hasKey("ExtraAttributes", 10) &&
+ held.getTagCompound().getCompoundTag("ExtraAttributes").hasKey(isWand
+ ? "builder's_wand_data"
+ : "builder's_ruler_data", 7)) {
+ byte[] bytes = held.getTagCompound().getCompoundTag("ExtraAttributes").getByteArray(isWand
+ ? "builder's_wand_data"
+ : "builder's_ruler_data");
+ try {
+ return CompressedStreamTools.readCompressed(new ByteArrayInputStream(bytes));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+ return null;
+ }
+
public int countItemsInInventoryAndStorage(ItemStack match) {
if (match == null) return 0;
int count = 0;
@@ -538,28 +638,18 @@ public class CustomItemEffects {
String heldInternal = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(held);
boolean isWand = heldInternal != null && heldInternal.equals("BUILDERS_WAND");
- if (heldInternal != null && heldInternal.equals(isWand ? "BUILDERS_WAND" : "BUILDERS_RULER")) {
- if (held.hasTagCompound() && held.getTagCompound().hasKey("ExtraAttributes", 10) &&
- held.getTagCompound().getCompoundTag("ExtraAttributes").hasKey(isWand
- ? "builder's_wand_data"
- : "builder's_ruler_data", 7)) {
- byte[] bytes = held.getTagCompound().getCompoundTag("ExtraAttributes").getByteArray(isWand
- ? "builder's_wand_data"
- : "builder's_ruler_data");
- try {
- NBTTagCompound contents_nbt = CompressedStreamTools.readCompressed(new ByteArrayInputStream(bytes));
- NBTTagList items = contents_nbt.getTagList("i", 10);
- for (int j = 0; j < items.tagCount(); j++) {
- NBTTagCompound buildersItem = items.getCompoundTagAt(j);
- if (buildersItem.getKeySet().size() > 0) {
- if (buildersItem.getInteger("id") == Item.getIdFromItem(match.getItem()) &&
- buildersItem.getInteger("Damage") == match.getItemDamage()) {
- count += items.getCompoundTagAt(j).getByte("Count");
- }
- }
- }
- } catch (Exception e) {
- return count;
+ if (heldInternal == null || !heldInternal.equals(isWand ? "BUILDERS_WAND" : "BUILDERS_RULER")) return count;
+
+ NBTTagCompound contents_nbt = getBuildersNbt(isWand);
+ if (contents_nbt == null) return count;
+
+ NBTTagList items = contents_nbt.getTagList("i", 10);
+ for (int j = 0; j < items.tagCount(); j++) {
+ NBTTagCompound buildersItem = items.getCompoundTagAt(j);
+ if (buildersItem.getKeySet().size() > 0) {
+ if (buildersItem.getInteger("id") == Item.getIdFromItem(match.getItem()) &&
+ buildersItem.getInteger("Damage") == match.getItemDamage()) {
+ count += items.getCompoundTagAt(j).getByte("Count");
}
}
}
@@ -568,32 +658,25 @@ public class CustomItemEffects {
}
public ItemStack getFirstItemInRuler() {
- int count = 0;
ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem();
String heldInternal = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(held);
- if (heldInternal != null && heldInternal.equals("BUILDERS_RULER")) {
- if (held.hasTagCompound() && held.getTagCompound().hasKey("ExtraAttributes", 10) &&
- held.getTagCompound().getCompoundTag("ExtraAttributes").hasKey("builder's_ruler_data", 7)) {
- byte[] bytes = held.getTagCompound().getCompoundTag("ExtraAttributes").getByteArray("builder's_ruler_data");
- try {
- NBTTagCompound contents_nbt = CompressedStreamTools.readCompressed(new ByteArrayInputStream(bytes));
- NBTTagList items = contents_nbt.getTagList("i", 10);
- for (int j = 0; j < items.tagCount(); j++) {
- NBTTagCompound buildersItem = items.getCompoundTagAt(j);
- if (buildersItem.getKeySet().size() > 0) {
- ItemStack newStack = new ItemStack(
- Item.getItemById(buildersItem.getInteger("id")),
- 1,
- buildersItem.getInteger("Damage")
- );
- return newStack;
- }
- }
- } catch (Exception e) {
- return null;
- }
+ if (heldInternal == null || !heldInternal.equals("BUILDERS_RULER")) return null;
+
+ NBTTagCompound contents_nbt = getBuildersNbt(false);
+ if (contents_nbt == null) return null;
+
+ NBTTagList items = contents_nbt.getTagList("i", 10);
+ for (int j = 0; j < items.tagCount(); j++) {
+ NBTTagCompound buildersItem = items.getCompoundTagAt(j);
+ if (buildersItem.getKeySet().size() > 0) {
+ ItemStack newStack = new ItemStack(
+ Item.getItemById(buildersItem.getInteger("id")),
+ 1,
+ buildersItem.getInteger("Damage")
+ );
+ return newStack;
}
}
@@ -601,7 +684,6 @@ public class CustomItemEffects {
/*for (ItemStack stack : Minecraft.getMinecraft().thePlayer.inventory.mainInventory) {
if (stack != null && stack.getItem() instanceof ItemBlock) return stack;
}*/
-
return null;
}
@@ -691,8 +773,7 @@ public class CustomItemEffects {
ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem();
String heldInternal = NotEnoughUpdates.INSTANCE.manager.getInternalNameForItem(held);
if (heldInternal != null) {
- boolean onPrivateIsland = SBInfo.getInstance().getLocation() == null || SBInfo.getInstance().getLocation().equals(
- "dynamic") || SBInfo.getInstance().getLocation().equals("garden");
+ boolean onPrivateIsland = Arrays.asList("dynamic","garden").contains(SBInfo.getInstance().getLocation());
EntityPlayer player = event.player;
double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) event.partialTicks;
double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) event.partialTicks;
@@ -914,127 +995,11 @@ public class CustomItemEffects {
GlStateManager.disableBlend();
}
} else if (NotEnoughUpdates.INSTANCE.config.itemOverlays.enableWandOverlay) {
- if ((heldInternal.equals("BUILDERS_WAND") || heldInternal.equals("BUILDERS_RULER")) && onPrivateIsland) {
- int maxBlocks = MAX_BUILDERS_BLOCKS;
- if (event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
- IBlockState hover = Minecraft.getMinecraft().theWorld.getBlockState(event.target
- .getBlockPos()
- .offset(event.target.sideHit, 1));
- if (hover.getBlock() == Blocks.air) {
- IBlockState match = Minecraft.getMinecraft().theWorld.getBlockState(event.target.getBlockPos());
- Item matchItem = Item.getItemFromBlock(match.getBlock());
- if (matchItem != null) {
- GlStateManager.enableBlend();
- GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
- GlStateManager.disableTexture2D();
- GlStateManager.depthMask(false);
-
- HashSet<BlockPos> candidatesOld = new HashSet<>();
- TreeMap<Float, Set<BlockPos>> candidatesOldSorted = new TreeMap<>();
-
- boolean ruler = heldInternal.equals("BUILDERS_RULER");
-
- if (!ruler) {
- getBuildersWandCandidates(
- player,
- event.target,
- event.partialTicks,
- candidatesOld,
- candidatesOldSorted,
- 10
- );
- } else {
- getBuildersRulerCandidates(
- player,
- event.target,
- event.partialTicks,
- candidatesOld,
- candidatesOldSorted,
- 10
- );
- if (!Minecraft.getMinecraft().thePlayer.isSneaking()) {
- Item item = getFirstItemInRuler() == null ? null : getFirstItemInRuler().getItem();
- if (item != null) {
- if (item instanceof ItemBlock) match = ((ItemBlock) item).getBlock().getStateFromMeta(
- getFirstItemInRuler().getItemDamage());
- else match = Blocks.dirt.getDefaultState();
- }
- }
- }
-
- ItemStack matchStack;
- if (ruler) {
- if (Minecraft.getMinecraft().thePlayer.isSneaking()) {
- matchStack = new ItemStack(Minecraft.getMinecraft().theWorld
- .getBlockState(event.target.getBlockPos())
- .getBlock());
- } else {
- matchStack = getFirstItemInRuler();
- }
- } else {
-
- matchStack = new ItemStack(matchItem, 1,
- match.getBlock().getDamageValue(Minecraft.getMinecraft().theWorld, event.target.getBlockPos())
- );
- }
- int itemCount;
- if (matchStack != null) {
- if (match.getBlock() == Blocks.dirt && matchStack.getItemDamage() == 0 && hasDirtWand()) {
- itemCount = candidatesOld.size();
- } else {
- itemCount = countItemsInInventoryAndStorage(matchStack);
- }
- } else {
- return;
- }
-
- String special = (candidatesOld.size() <= itemCount)
- ? NotEnoughUpdates.INSTANCE.config.itemOverlays.wandOverlayColour : "0:255:255:0:0";
-
- if (candidatesOld.size() <= maxBlocks || ruler) {
- for (Set<BlockPos> candidatesSorted : candidatesOldSorted.values()) {
- for (BlockPos candidate : candidatesSorted) {
- match.getBlock().setBlockBoundsBasedOnState(Minecraft.getMinecraft().theWorld, candidate);
- AxisAlignedBB bb = match.getBlock().getSelectedBoundingBox(
- Minecraft.getMinecraft().theWorld,
- candidate.add(0, Minecraft.getMinecraft().thePlayer.isSneaking() && ruler ? -1 : 0, 0)
- )
- .offset(
- event.target.sideHit.getFrontOffsetX(),
- event.target.sideHit.getFrontOffsetY(),
- event.target.sideHit.getFrontOffsetZ()
- );
-
- drawBlock((int) bb.minX, (int) bb.minY, (int) bb.minZ + 1, match, event.partialTicks, 0.75f);
- }
- }
-
- for (BlockPos candidate : candidatesOld) {
- match.getBlock().setBlockBoundsBasedOnState(Minecraft.getMinecraft().theWorld, candidate);
- AxisAlignedBB bb = match.getBlock().getSelectedBoundingBox(
- Minecraft.getMinecraft().theWorld,
- candidate.add(0, Minecraft.getMinecraft().thePlayer.isSneaking() && ruler ? -1 : 0, 0)
- )
- .expand(0.001D, 0.001D, 0.001D).offset(-d0, -d1, -d2)
- .offset(
- event.target.sideHit.getFrontOffsetX(),
- event.target.sideHit.getFrontOffsetY(),
- event.target.sideHit.getFrontOffsetZ()
- );
-
- drawOutlineBoundingBox(bb, 1f,
- (ruler && Minecraft.getMinecraft().thePlayer.isSneaking())
- ? NotEnoughUpdates.INSTANCE.config.itemOverlays.wandOverlayColour : special);
- }
- }
-
- GlStateManager.depthMask(true);
- GlStateManager.enableTexture2D();
- GlStateManager.disableBlend();
- }
- }
- }
- } else if (heldInternal.equals("INFINIDIRT_WAND") &&
+ if (heldInternal.equals("BUILDERS_WAND") && onPrivateIsland) {
+ buildersWandOverlay(event, d0, d1, d2);
+ } else if (heldInternal.equals("BUILDERS_RULER") && onPrivateIsland) {
+ buildersRulerOverlay(event, d0, d1, d2);
+ }else if (heldInternal.equals("INFINIDIRT_WAND") &&
event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK &&
NotEnoughUpdates.INSTANCE.config.itemOverlays.enableDirtWandOverlay) {
BlockPos hover = event.target.getBlockPos().offset(event.target.sideHit, 1);
@@ -1255,9 +1220,9 @@ public class CustomItemEffects {
.offset(-d0, -d1, -d2);
drawFilledBoundingBox(bbExpanded, 1f, "0:100:178:34:34");
- GlStateManager.depthMask(true);
- GlStateManager.enableTexture2D();
- GlStateManager.disableBlend();
+ GlStateManager.depthMask(true);
+ GlStateManager.enableTexture2D();
+ GlStateManager.disableBlend();
}
} else if ((heldInternal.equals("SAM_SCYTHE") || heldInternal.equals("GARDEN_SCYTHE") &&
NotEnoughUpdates.INSTANCE.config.itemOverlays.enableScytheOverlay && onPrivateIsland) &&
@@ -1301,6 +1266,179 @@ public class CustomItemEffects {
}
}
+ public void buildersWandOverlay(DrawBlockHighlightEvent event, double d0, double d1, double d2) {
+ if (event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ IBlockState hover = Minecraft.getMinecraft().theWorld.getBlockState(event.target
+ .getBlockPos()
+ .offset(event.target.sideHit, 1));
+ if (hover.getBlock() != Blocks.air) return;
+ IBlockState match = Minecraft.getMinecraft().theWorld.getBlockState(event.target.getBlockPos());
+ Item matchItem = Item.getItemFromBlock(match.getBlock());
+ if (matchItem == null) return;
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GlStateManager.disableTexture2D();
+ GlStateManager.depthMask(false);
+
+ HashSet<BlockPos> candidatesOld = new HashSet<>();
+ TreeMap<Float, Set<BlockPos>> candidatesOldSorted = new TreeMap<>();
+
+ getBuildersWandCandidates(Minecraft.getMinecraft().thePlayer,
+ event.target,
+ event.partialTicks,
+ candidatesOld,
+ candidatesOldSorted,
+ 10
+ );
+
+ ItemStack matchStack;
+
+ matchStack = new ItemStack(matchItem,
+ 1,
+ match.getBlock().getDamageValue(Minecraft.getMinecraft().theWorld, event.target.getBlockPos())
+ );
+
+ int itemCount;
+ if (match.getBlock() == Blocks.dirt && matchStack.getItemDamage() == 0 && hasDirtWand()) {
+ itemCount = candidatesOld.size();
+ } else {
+ itemCount = countItemsInInventoryAndStorage(matchStack);
+ }
+
+ String special = (candidatesOld.size() <= itemCount)
+ ? NotEnoughUpdates.INSTANCE.config.itemOverlays.wandOverlayColour
+ : "0:255:255:0:0";
+
+ if (candidatesOld.size() <= MAX_BUILDERS_BLOCKS) {
+ for (Set<BlockPos> candidatesSorted : candidatesOldSorted.values()) {
+ for (BlockPos candidate : candidatesSorted) {
+ match.getBlock().setBlockBoundsBasedOnState(Minecraft.getMinecraft().theWorld, candidate);
+ Minecraft.getMinecraft().thePlayer.isSneaking();
+ AxisAlignedBB bb = match.getBlock().getSelectedBoundingBox(Minecraft.getMinecraft().theWorld,
+ candidate.add(0, 0, 0)
+ ).offset(event.target.sideHit.getFrontOffsetX(),
+ event.target.sideHit.getFrontOffsetY(),
+ event.target.sideHit.getFrontOffsetZ()
+ );
+
+ drawBlock((int) bb.minX, (int) bb.minY, (int) bb.minZ + 1, match, event.partialTicks, 0.75f);
+ }
+ }
+
+ for (BlockPos candidate : candidatesOld) {
+ match.getBlock().setBlockBoundsBasedOnState(Minecraft.getMinecraft().theWorld, candidate);
+ Minecraft.getMinecraft().thePlayer.isSneaking();
+ AxisAlignedBB bb = match.getBlock().getSelectedBoundingBox(Minecraft.getMinecraft().theWorld,
+ candidate.add(0, 0, 0)
+ ).expand(0.001D, 0.001D, 0.001D).offset(-d0, -d1, -d2).offset(event.target.sideHit.getFrontOffsetX(),
+ event.target.sideHit.getFrontOffsetY(),
+ event.target.sideHit.getFrontOffsetZ()
+ );
+
+ drawOutlineBoundingBox(bb, 1f, special);
+ }
+ }
+
+ GlStateManager.depthMask(true);
+ GlStateManager.enableTexture2D();
+ GlStateManager.disableBlend();
+ }
+ }
+
+ public void buildersRulerOverlay(DrawBlockHighlightEvent event, double d0, double d1, double d2) {
+ if (event.target.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ IBlockState hover = Minecraft.getMinecraft().theWorld.getBlockState(event.target
+ .getBlockPos()
+ .offset(event.target.sideHit, 1));
+
+ if (hover.getBlock() != Blocks.air) return;
+
+ IBlockState match = Minecraft.getMinecraft().theWorld.getBlockState(event.target.getBlockPos());
+ Item matchItem = Item.getItemFromBlock(match.getBlock());
+ if (matchItem == null) return;
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
+ GlStateManager.disableTexture2D();
+ GlStateManager.depthMask(false);
+
+ HashSet<BlockPos> candidatesOld = new HashSet<>();
+ TreeMap<Float, Set<BlockPos>> candidatesOldSorted = new TreeMap<>();
+
+ getBuildersRulerCandidates(Minecraft.getMinecraft().thePlayer,
+ event.target,
+ event.partialTicks,
+ candidatesOld,
+ candidatesOldSorted,
+ 10
+ );
+ ItemStack firstItemInRuler = getFirstItemInRuler();
+ if (!Minecraft.getMinecraft().thePlayer.isSneaking()) {
+ Item item = firstItemInRuler == null ? null : firstItemInRuler.getItem();
+ if (item != null) {
+ if (item instanceof ItemBlock)
+ match = ((ItemBlock) item).getBlock().getStateFromMeta(firstItemInRuler.getItemDamage());
+ else match = Blocks.dirt.getDefaultState();
+ }
+ }
+
+ ItemStack matchStack;
+ if (Minecraft.getMinecraft().thePlayer.isSneaking()) {
+ matchStack = new ItemStack(Minecraft.getMinecraft().theWorld
+ .getBlockState(event.target.getBlockPos())
+ .getBlock());
+ } else {
+ matchStack = firstItemInRuler;
+ }
+ int itemCount;
+ if (matchStack != null) {
+ if (match.getBlock() == Blocks.dirt && matchStack.getItemDamage() == 0 && hasDirtWand()) {
+ itemCount = candidatesOld.size();
+ } else {
+ itemCount = countItemsInInventoryAndStorage(matchStack);
+ }
+ } else {
+ return;
+ }
+
+ String special = (candidatesOld.size() <= itemCount)
+ ? NotEnoughUpdates.INSTANCE.config.itemOverlays.wandOverlayColour
+ : "0:255:255:0:0";
+
+ for (Set<BlockPos> candidatesSorted : candidatesOldSorted.values()) {
+ for (BlockPos candidate : candidatesSorted) {
+ AxisAlignedBB bb = match.getBlock().getSelectedBoundingBox(Minecraft.getMinecraft().theWorld,
+ candidate.add(0, Minecraft.getMinecraft().thePlayer.isSneaking() ? -1 : 0, 0)
+ ).offset(event.target.sideHit.getFrontOffsetX(),
+ event.target.sideHit.getFrontOffsetY(),
+ event.target.sideHit.getFrontOffsetZ()
+ );
+
+ drawBlock((int) bb.minX, (int) bb.minY, (int) bb.minZ + 1, match, event.partialTicks, 0.75f);
+ }
+ }
+
+ for (BlockPos candidate : candidatesOld) {
+ AxisAlignedBB bb = match.getBlock().getSelectedBoundingBox(Minecraft.getMinecraft().theWorld,
+ candidate.add(0, Minecraft.getMinecraft().thePlayer.isSneaking() ? -1 : 0, 0)
+ ).expand(0.001D, 0.001D, 0.001D).offset(-d0, -d1, -d2).offset(event.target.sideHit.getFrontOffsetX(),
+ event.target.sideHit.getFrontOffsetY(),
+ event.target.sideHit.getFrontOffsetZ()
+ );
+
+ drawOutlineBoundingBox(bb,
+ 1f,
+ (Minecraft.getMinecraft().thePlayer.isSneaking())
+ ? NotEnoughUpdates.INSTANCE.config.itemOverlays.wandOverlayColour
+ : special
+ );
+ }
+
+ GlStateManager.depthMask(true);
+ GlStateManager.enableTexture2D();
+ GlStateManager.disableBlend();
+ }
+ }
+
public void getBuildersWandCandidates(
EntityPlayer player, MovingObjectPosition target, float partialTicks,
HashSet<BlockPos> candidatesOld, TreeMap<Float, Set<BlockPos>> candidatesOldSorted, int extraMax