use of eu.pb4.sgui.api.gui.SimpleGui in project ArmorStandEditor by Patbox.
the class EditorGuis method createIcon.
private static void createIcon(ServerPlayerEntity player, SimpleGui gui, int index, Item item, String text, EditorActions action) {
if (!Permissions.check(player, "armorstandeditor" + action.permission, ConfigManager.getConfig().configData.toggleAllPermissionOnByDefault)) {
return;
}
ItemStack itemStack = item.getDefaultStack();
itemStack.setCustomName(new TranslatableText("armorstandeditor.gui.name." + text).setStyle(Style.EMPTY.withItalic(false)));
itemStack.addHideFlag(ItemStack.TooltipSection.ENCHANTMENTS);
itemStack.addHideFlag(ItemStack.TooltipSection.MODIFIERS);
if (((SPEInterface) player).getArmorStandEditorAction() == action) {
itemStack.addEnchantment(Enchantments.POWER, 1);
}
gui.setSlot(index, itemStack, (index2, type, actionType) -> {
((SPEInterface) player).setArmorStandEditorAction(action);
});
}
use of eu.pb4.sgui.api.gui.SimpleGui in project ArmorStandEditor by Patbox.
the class EditorGuis method openPresetSelector.
public static void openPresetSelector(ServerPlayerEntity player) {
List<ArmorStandPreset> presets = new ArrayList<>(ConfigManager.PRESETS.values());
final int presetsSize = presets.size();
AtomicInteger page = new AtomicInteger();
final int maxPage = (int) Math.ceil((double) presetsSize / 18);
SimpleGui gui = new SimpleGui(ScreenHandlerType.GENERIC_9X3, player, false) {
@Override
public void onUpdate(boolean firstUpdate) {
super.onUpdate(firstUpdate);
if (firstUpdate) {
for (int x = 0; x < 9; x++) {
this.setSlot(x + 18, new GuiElementBuilder(Items.GRAY_STAINED_GLASS_PANE).setName(new LiteralText("")));
}
}
for (int x = 0; x < 18; x++) {
this.clearSlot(x);
if (page.get() * 18 + x < presetsSize) {
final ArmorStandPreset preset = presets.get(page.get() * 18 + x);
this.setSlot(x, new GuiElementBuilder(Items.ARMOR_STAND).setName(new LiteralText(preset.name).setStyle(Style.EMPTY.withItalic(false).withColor(Formatting.GREEN))).addLoreLine(new TranslatableText("armorstandeditor.gui.preset-author", preset.author).setStyle(Style.EMPTY.withItalic(false).withColor(Formatting.GRAY))).setCallback((t1, t2, t3) -> {
((SPEInterface) this.player).setArmorStandEditorData(preset.asData());
((SPEInterface) this.player).setArmorStandEditorAction(EditorActions.PASTE);
player.sendMessage(new TranslatableText("armorstandeditor.message.copied"), true);
this.close();
}));
}
}
this.setSlot(this.size - 5, new GuiElementBuilder(Items.BARRIER).setName(new TranslatableText("dataPack.validation.back").setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
this.close();
}));
this.setSlot(this.size - 8, new GuiElementBuilder(page.get() != 0 ? Items.ARROW : Items.LIGHT_GRAY_STAINED_GLASS_PANE).setName(new TranslatableText("spectatorMenu.previous_page").setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
if (page.addAndGet(-1) < 0) {
page.set(0);
}
this.onUpdate(false);
}));
this.setSlot(this.size - 2, new GuiElementBuilder(page.get() != maxPage - 1 ? Items.ARROW : Items.LIGHT_GRAY_STAINED_GLASS_PANE).setName(new TranslatableText("spectatorMenu.next_page").setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
if (page.addAndGet(1) >= maxPage) {
page.set(maxPage - 1);
}
this.onUpdate(false);
}));
}
};
gui.setTitle(new TranslatableText("armorstandeditor.gui.presets_title"));
gui.open();
}
use of eu.pb4.sgui.api.gui.SimpleGui in project ArmorStandEditor by Patbox.
the class EditorGuis method openItemFrameEditor.
public static void openItemFrameEditor(ServerPlayerEntity player, ItemFrameEntity entity) {
ItemFrameEntityAccessor ifa = (ItemFrameEntityAccessor) entity;
SimpleGui gui = new SimpleGui(ScreenHandlerType.GENERIC_9X1, player, false);
ItemFrameInventory inventory = new ItemFrameInventory(entity);
GuiElement empty = new GuiElementBuilder(Items.GRAY_STAINED_GLASS_PANE).setName(new LiteralText("")).build();
gui.setTitle(new TranslatableText("armorstandeditor.gui.item_frame_title"));
gui.setSlotRedirect(0, new Slot(inventory, 0, 0, 0));
gui.setSlot(1, empty);
gui.setSlot(2, new GuiElementBuilder(ifa.getFixed() ? Items.GREEN_STAINED_GLASS_PANE : Items.RED_STAINED_GLASS_PANE).setName(new TranslatableText("armorstandeditor.gui.name.if-fixed", ifa.getFixed()).setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
ifa.setFixed(!ifa.getFixed());
ItemStack stack = new ItemStack(ifa.getFixed() ? Items.GREEN_STAINED_GLASS_PANE : Items.RED_STAINED_GLASS_PANE);
stack.setCustomName(new TranslatableText("armorstandeditor.gui.name.if-fixed", ifa.getFixed()).setStyle(Style.EMPTY.withItalic(false)));
((GuiElement) gui.getSlot(index)).setItemStack(stack);
}));
gui.setSlot(3, new GuiElementBuilder(entity.isInvisible() ? Items.GREEN_STAINED_GLASS_PANE : Items.RED_STAINED_GLASS_PANE).setName(new TranslatableText("armorstandeditor.gui.name.if-invisible", entity.isInvisible()).setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
entity.setInvisible(!entity.isInvisible());
System.out.println(entity.isInvisible());
ItemStack stack = new ItemStack(entity.isInvisible() ? Items.GREEN_STAINED_GLASS_PANE : Items.RED_STAINED_GLASS_PANE);
stack.setCustomName(new TranslatableText("armorstandeditor.gui.name.if-invisible", entity.isInvisible()).setStyle(Style.EMPTY.withItalic(false)));
((GuiElement) gui.getSlot(index)).setItemStack(stack);
}));
gui.setSlot(4, new GuiElementBuilder(Items.ARROW).setName(new TranslatableText("armorstandeditor.gui.name.if-rotate", entity.getRotation()).setStyle(Style.EMPTY.withItalic(false))).setCallback((index, type, action) -> {
if (type.isLeft || type.isRight) {
int rotation = entity.getRotation() + (type.isLeft ? -1 : 1);
if (rotation < 0) {
rotation = 8 + rotation;
}
entity.setRotation(rotation % 8);
ItemStack stack = new ItemStack(Items.ARROW);
stack.setCustomName(new TranslatableText("armorstandeditor.gui.name.if-rotate", rotation).setStyle(Style.EMPTY.withItalic(false)));
((GuiElement) gui.getSlot(index)).setItemStack(stack);
}
}));
for (int x = 5; x < 8; x++) {
gui.setSlot(x, empty);
}
gui.setSlot(8, new GuiElementBuilder(Items.BARRIER).setName(new TranslatableText("armorstandeditor.gui.close").setStyle(Style.EMPTY.withItalic(false))).setCallback(((index, type, action) -> {
gui.close();
})));
gui.open();
}
use of eu.pb4.sgui.api.gui.SimpleGui 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();
}
use of eu.pb4.sgui.api.gui.SimpleGui in project ArmorStandEditor by Patbox.
the class EditorGuis method createIconCustomPower.
private static void createIconCustomPower(ServerPlayerEntity player, SimpleGui gui, int index, Item item) {
ItemStack itemStack = item.getDefaultStack();
itemStack.setCustomName(new TranslatableText("armorstandeditor.gui.name.custom_change").setStyle(Style.EMPTY.withItalic(false)));
SPEInterface spe = (SPEInterface) player;
float power = spe.getArmorStandEditorPower();
ListTag lore = new ListTag();
lore.add(StringTag.of(Text.Serializer.toJson(new TranslatableText("armorstandeditor.gui.blocksdeg", (Math.round(power * 100) / 100f), Math.floor(power * 3000) / 100).setStyle(Style.EMPTY.withItalic(false).withColor(Formatting.GRAY)))));
itemStack.getOrCreateTag().getCompound("display").put("Lore", lore);
itemStack.addHideFlag(ItemStack.TooltipSection.ENCHANTMENTS);
itemStack.addHideFlag(ItemStack.TooltipSection.MODIFIERS);
if (power != 1f && power != 0.01f && power != 0.1f) {
itemStack.addEnchantment(Enchantments.POWER, 1);
}
gui.setSlot(index, itemStack, (index2, type, actionType) -> {
if (!type.isMiddle) {
float tmp = power + (0.01f * (type.shift ? 10 : 1) * (type.isLeft ? -1 : 1));
float value = (Math.round(tmp * 100) / 100f);
if (value > 0 && value < 5) {
spe.setArmorStandEditorPower(value);
}
}
});
}
Aggregations