0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-20 17:20:12 +02:00

Fix multiple issues when the player doesn't have glowstone/anchors

This commit is contained in:
Alexander01998 2021-04-22 01:34:20 +02:00
parent b0936e2d06
commit 1d20073ec9

View File

@ -218,7 +218,8 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
return; return;
} }
if(!unchargedAnchors.isEmpty()) if(!unchargedAnchors.isEmpty()
&& hasItem(item -> item == Items.GLOWSTONE))
{ {
charge(unchargedAnchors); charge(unchargedAnchors);
// TODO: option to wait until next tick? // TODO: option to wait until next tick?
@ -226,13 +227,14 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
return; return;
} }
if(!autoPlace.isChecked()) if(!autoPlace.isChecked()
|| !hasItem(item -> item == Items.RESPAWN_ANCHOR))
return; return;
ArrayList<Entity> targets = getNearbyTargets(); ArrayList<Entity> targets = getNearbyTargets();
ArrayList<BlockPos> newAnchors = placeAnchorsNear(targets); ArrayList<BlockPos> newAnchors = placeAnchorsNear(targets);
if(!newAnchors.isEmpty()) if(!newAnchors.isEmpty() && hasItem(item -> item == Items.GLOWSTONE))
{ {
// TODO: option to wait until next tick? // TODO: option to wait until next tick?
charge(newAnchors); charge(newAnchors);
@ -271,7 +273,8 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
if(isSneaking()) if(isSneaking())
return; return;
selectItem(item -> item != Items.GLOWSTONE); if(!selectItem(item -> item != Items.GLOWSTONE))
return;
boolean shouldSwing = false; boolean shouldSwing = false;
@ -288,7 +291,8 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
if(isSneaking()) if(isSneaking())
return; return;
selectItem(item -> item == Items.GLOWSTONE); if(!selectItem(item -> item == Items.GLOWSTONE))
return;
boolean shouldSwing = false; boolean shouldSwing = false;
@ -300,7 +304,7 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
MC.player.swingHand(Hand.MAIN_HAND); MC.player.swingHand(Hand.MAIN_HAND);
} }
private void selectItem(Predicate<Item> item) private boolean selectItem(Predicate<Item> item)
{ {
PlayerInventory inventory = MC.player.inventory; PlayerInventory inventory = MC.player.inventory;
IClientPlayerInteractionManager im = IMC.getInteractionManager(); IClientPlayerInteractionManager im = IMC.getInteractionManager();
@ -309,7 +313,7 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
for(int slot = 0; slot < maxInvSlot; slot++) for(int slot = 0; slot < maxInvSlot; slot++)
{ {
ItemStack stack = inventory.getStack(slot); ItemStack stack = inventory.getStack(slot);
if(stack.isEmpty() || !item.test(stack.getItem())) if(!item.test(stack.getItem()))
continue; continue;
if(slot < 9) if(slot < 9)
@ -327,8 +331,27 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
im.windowClick_PICKUP(inventory.selectedSlot + 36); im.windowClick_PICKUP(inventory.selectedSlot + 36);
} }
return; return true;
} }
return false;
}
private boolean hasItem(Predicate<Item> item)
{
PlayerInventory inventory = MC.player.inventory;
int maxInvSlot = takeItemsFrom.getSelected().maxInvSlot;
for(int slot = 0; slot < maxInvSlot; slot++)
{
ItemStack stack = inventory.getStack(slot);
if(!item.test(stack.getItem()))
continue;
return true;
}
return false;
} }
private boolean rightClickBlock(BlockPos pos) private boolean rightClickBlock(BlockPos pos)
@ -401,9 +424,10 @@ public final class AnchorAuraHack extends Hack implements UpdateListener
.getType() != HitResult.Type.MISS) .getType() != HitResult.Type.MISS)
continue; continue;
faceBlocks.getSelected().face(hitVec); if(!selectItem(item -> item == Items.RESPAWN_ANCHOR))
return false;
selectItem(item -> item == Items.RESPAWN_ANCHOR); faceBlocks.getSelected().face(hitVec);
// place block // place block
IMC.getInteractionManager().rightClickBlock(neighbor, IMC.getInteractionManager().rightClickBlock(neighbor,