use of eu.pb4.armorstandeditor.helpers.ArmorStandInventory in project ArmorStandEditor by Patbox.
the class EditorGuis method openInventoryEditor.
public static void openInventoryEditor(ServerPlayerEntity player, LivingEntity entity) {
SimpleGui gui = new SimpleGui(ScreenHandlerType.GENERIC_9X2, player, false);
ArmorStandInventory inventory = new ArmorStandInventory(entity);
gui.setTitle(new TranslatableText("armorstandeditor.gui.inventory_title"));
for (int x = 0; x < inventory.size(); x++) {
gui.setSlotRedirect(x, new Slot(inventory, x, 0, 0));
if (entity instanceof ArmorStandEntity) {
ArmorStandEntity ae = (ArmorStandEntity) entity;
ArmorStandEntityAccessor asea = (ArmorStandEntityAccessor) ae;
boolean isUnlocked = isSlotUnlocked(ae, ArmorStandInventory.getEquipmentSlot(x));
gui.setSlot(x + 9, new GuiElementBuilder(isUnlocked ? Items.GREEN_STAINED_GLASS_PANE : Items.RED_STAINED_GLASS_PANE).setName(new TranslatableText(isUnlocked ? "narrator.button.difficulty_lock.unlocked" : "narrator.button.difficulty_lock.locked").setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
EquipmentSlot slot = ArmorStandInventory.getEquipmentSlot(index - 9);
int disabledSlots = asea.getDisabledSlots();
boolean isUnlockedTmp = isSlotUnlocked(ae, slot);
if (isUnlockedTmp) {
disabledSlots |= 1 << slot.getArmorStandSlotId();
disabledSlots |= 1 << slot.getArmorStandSlotId() + 8;
disabledSlots |= 1 << slot.getArmorStandSlotId() + 16;
} else {
disabledSlots &= ~(1 << slot.getArmorStandSlotId());
disabledSlots &= ~(1 << slot.getArmorStandSlotId() + 8);
disabledSlots &= ~(1 << slot.getArmorStandSlotId() + 16);
}
asea.setDisabledSlots(disabledSlots);
boolean isUnlocked2 = isSlotUnlocked(ae, slot);
ItemStack stack = new ItemStack(isUnlocked2 ? Items.GREEN_STAINED_GLASS_PANE : Items.RED_STAINED_GLASS_PANE);
stack.setCustomName(new TranslatableText(isUnlocked2 ? "narrator.button.difficulty_lock.unlocked" : "narrator.button.difficulty_lock.locked").setStyle(Style.EMPTY.withItalic(false)));
((GuiElement) gui.getSlot(index)).setItemStack(stack);
}));
} else {
gui.setSlot(x + 9, new GuiElementBuilder(Items.RED_STAINED_GLASS_PANE).setName(new TranslatableText("armorstandeditor.gui.cantlockslots").setStyle(Style.EMPTY.withItalic(false).withColor(Formatting.RED))));
}
}
GuiElement empty = new GuiElementBuilder(Items.GRAY_STAINED_GLASS_PANE).setName(new LiteralText("")).build();
gui.setSlot(6, empty);
gui.setSlot(7, empty);
gui.setSlot(8, empty);
gui.setSlot(15, empty);
gui.setSlot(16, empty);
gui.setSlot(17, new GuiElementBuilder(Items.BARRIER).setName(new TranslatableText("armorstandeditor.gui.close").setStyle(Style.EMPTY.withItalic(false))).setCallback(((index, type, action) -> {
gui.close();
})));
gui.open();
}
Aggregations