chestplate swapping
This commit is contained in:
@@ -7,14 +7,13 @@ import net.minecraft.entity.attribute.EntityAttributes;
|
|||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.item.*;
|
import net.minecraft.item.*;
|
||||||
import net.minecraft.registry.tag.ItemTags;
|
import net.minecraft.registry.tag.ItemTags;
|
||||||
import net.minecraft.screen.slot.SlotActionType;
|
import net.minecraft.registry.tag.TagKey;
|
||||||
|
import net.minecraft.util.Hand;
|
||||||
|
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
public class ElytraMace implements ClientModInitializer
|
public class ElytraMace implements ClientModInitializer
|
||||||
{
|
{
|
||||||
private boolean unequipped = false;
|
|
||||||
|
|
||||||
private int getItem(PlayerInventory inventory, Item item)
|
private int getItem(PlayerInventory inventory, Item item)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 9; i++)
|
for (int i = 0; i < 9; i++)
|
||||||
@@ -27,7 +26,7 @@ public class ElytraMace implements ClientModInitializer
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getAxe(PlayerInventory inventory)
|
private int getBestItem(PlayerInventory inventory, TagKey<Item> tag)
|
||||||
{
|
{
|
||||||
int index = -1;
|
int index = -1;
|
||||||
int durability = -1;
|
int durability = -1;
|
||||||
@@ -35,7 +34,7 @@ public class ElytraMace implements ClientModInitializer
|
|||||||
{
|
{
|
||||||
ItemStack stack = inventory.getStack(i);
|
ItemStack stack = inventory.getStack(i);
|
||||||
int maxDamage = stack.getMaxDamage();
|
int maxDamage = stack.getMaxDamage();
|
||||||
if (stack.isIn(ItemTags.AXES) && maxDamage > durability)
|
if (stack.isIn(tag) && maxDamage > durability)
|
||||||
{
|
{
|
||||||
index = i;
|
index = i;
|
||||||
durability = maxDamage;
|
durability = maxDamage;
|
||||||
@@ -53,31 +52,45 @@ public class ElytraMace implements ClientModInitializer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LivingEntity target = client.world.getEntitiesByClass(LivingEntity.class, client.player.getBoundingBox().expand(client.player.getAttributeValue(EntityAttributes.ENTITY_INTERACTION_RANGE) + client.player.getVelocity().length() * 2), e -> e != client.player).stream().min(Comparator.comparingDouble(client.player::squaredDistanceTo)).orElse(null);
|
LivingEntity target = client.world.getEntitiesByClass(LivingEntity.class, client.player.getBoundingBox().expand(client.player.getAttributeValue(EntityAttributes.ENTITY_INTERACTION_RANGE) + client.player.getVelocity().length() * 2), e -> e != client.player).stream().min(Comparator.comparingDouble(client.player::squaredDistanceTo)).orElse(null);
|
||||||
if (unequipped && !client.player.isGliding())
|
if (target == null || client.player.fallDistance < 1.5)
|
||||||
{
|
{
|
||||||
client.interactionManager.clickSlot(client.player.playerScreenHandler.syncId, 6, 0, SlotActionType.PICKUP, client.player);
|
return;
|
||||||
unequipped = false;
|
}
|
||||||
if (target != null)
|
PlayerInventory inventory = client.player.getInventory();
|
||||||
|
if (client.player.isGliding())
|
||||||
|
{
|
||||||
|
int chestplate = getBestItem(inventory, ItemTags.CHEST_ARMOR);
|
||||||
|
if (chestplate == -1)
|
||||||
{
|
{
|
||||||
PlayerInventory inventory = client.player.getInventory();
|
return;
|
||||||
int axe = getAxe(inventory);
|
}
|
||||||
int mace = getItem(inventory, Items.MACE);
|
inventory.setSelectedSlot(chestplate);
|
||||||
int fireworks = getItem(inventory, Items.FIREWORK_ROCKET);
|
client.interactionManager.interactItem(client.player, Hand.MAIN_HAND);
|
||||||
if (target.isBlocking() && axe > -1)
|
}
|
||||||
{
|
else
|
||||||
inventory.setSelectedSlot(axe);
|
{
|
||||||
client.interactionManager.attackEntity(client.player, target);
|
int mace = getItem(inventory, Items.MACE);
|
||||||
}
|
int elytra = getItem(inventory, Items.ELYTRA);
|
||||||
inventory.setSelectedSlot(mace);
|
if (mace == -1 || elytra == -1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
inventory.setSelectedSlot(elytra);
|
||||||
|
client.interactionManager.interactItem(client.player, Hand.MAIN_HAND);
|
||||||
|
int axe = getBestItem(inventory, ItemTags.AXES);
|
||||||
|
if (target.isBlocking() && axe > -1)
|
||||||
|
{
|
||||||
|
inventory.setSelectedSlot(axe);
|
||||||
client.interactionManager.attackEntity(client.player, target);
|
client.interactionManager.attackEntity(client.player, target);
|
||||||
|
}
|
||||||
|
inventory.setSelectedSlot(mace);
|
||||||
|
client.interactionManager.attackEntity(client.player, target);
|
||||||
|
int fireworks = getItem(inventory, Items.FIREWORK_ROCKET);
|
||||||
|
if (fireworks != -1)
|
||||||
|
{
|
||||||
inventory.setSelectedSlot(fireworks);
|
inventory.setSelectedSlot(fireworks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!unequipped && target != null && client.player.isGliding())
|
|
||||||
{
|
|
||||||
client.interactionManager.clickSlot(client.player.playerScreenHandler.syncId, 6, 0, SlotActionType.PICKUP, client.player);
|
|
||||||
unequipped = true;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user