mirror of
https://github.com/GTNewHorizons/Botania.git
synced 2026-11-13 00:37:57 +00:00
Update to MUI2
This commit is contained in:
1 parent
fc21641317
commit
8c6fb516e7
8 files changed
+242
-156
No files matched your search
+2
-1
@@ -11,10 +11,11 @@ dependencies {
|
||||
compileOnly('com.github.GTNewHorizons:NotEnoughItems:2.7.18-GTNH:dev')
|
||||
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.42:api') {transitive=false}
|
||||
api('com.github.GTNewHorizons:GTNHLib:0.6.1:dev')
|
||||
compileOnly("com.github.GTNewHorizons:ModularUI:1.2.18:dev")
|
||||
compileOnly('com.github.GTNewHorizons:ModularUI2:2.2.4-1.7.10:dev')
|
||||
|
||||
compileOnly('curse.maven:cofh-lib-220333:2388748')
|
||||
compileOnly('curse.maven:minefactory-reloaded-66672:2366150')
|
||||
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.7.18-GTNH:dev')
|
||||
// runtimeOnlyNonPublishable('com.github.GTNewHorizons:ModularUI2:2.2.4-1.7.10:dev')
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package vazkii.botania.client.core.handler;
|
||||
|
||||
import com.cleanroommc.modularui.factory.ClientGUI;
|
||||
import com.cleanroommc.modularui.factory.GuiData;
|
||||
import com.cleanroommc.modularui.factory.GuiFactories;
|
||||
import cpw.mods.fml.client.registry.ClientRegistry;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
@@ -70,7 +73,7 @@ public class KeyHandler {
|
||||
private static void ringOfLokiOpenUI() {
|
||||
if(ItemLokiRing.isModularUIEnabled) {
|
||||
ItemStack ring = ItemLokiRing.getLokiRing(Minecraft.getMinecraft().thePlayer);
|
||||
GuiLokiSchematics.openUI(Minecraft.getMinecraft().thePlayer, ring);
|
||||
GuiLokiSchematics.open(ring);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,30 @@
|
||||
package vazkii.botania.client.gui.loki;
|
||||
|
||||
import com.gtnewhorizons.modularui.api.ModularUITextures;
|
||||
import com.gtnewhorizons.modularui.api.UIInfos;
|
||||
import com.gtnewhorizons.modularui.api.drawable.AdaptableUITexture;
|
||||
import com.gtnewhorizons.modularui.api.drawable.IDrawable;
|
||||
import com.gtnewhorizons.modularui.api.drawable.Text;
|
||||
import com.gtnewhorizons.modularui.api.math.Alignment;
|
||||
import com.gtnewhorizons.modularui.api.math.Pos2d;
|
||||
import com.gtnewhorizons.modularui.api.math.Size;
|
||||
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
|
||||
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
|
||||
import com.gtnewhorizons.modularui.api.widget.IWidgetParent;
|
||||
import com.gtnewhorizons.modularui.common.widget.ButtonWidget;
|
||||
import com.gtnewhorizons.modularui.common.widget.MultiChildWidget;
|
||||
import com.gtnewhorizons.modularui.common.widget.Scrollable;
|
||||
import com.gtnewhorizons.modularui.common.widget.TextWidget;
|
||||
import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget;
|
||||
import com.cleanroommc.modularui.api.drawable.IKey;
|
||||
import com.cleanroommc.modularui.api.value.IStringValue;
|
||||
import com.cleanroommc.modularui.api.widget.IGuiAction;
|
||||
import com.cleanroommc.modularui.drawable.AdaptableUITexture;
|
||||
import com.cleanroommc.modularui.drawable.Rectangle;
|
||||
import com.cleanroommc.modularui.drawable.UITexture;
|
||||
import com.cleanroommc.modularui.factory.ClientGUI;
|
||||
import com.cleanroommc.modularui.screen.CustomModularScreen;
|
||||
import com.cleanroommc.modularui.screen.ModularPanel;
|
||||
import com.cleanroommc.modularui.screen.RichTooltip;
|
||||
import com.cleanroommc.modularui.screen.viewport.ModularGuiContext;
|
||||
import com.cleanroommc.modularui.utils.Alignment;
|
||||
import com.cleanroommc.modularui.utils.Color;
|
||||
import com.cleanroommc.modularui.value.sync.InteractionSyncHandler;
|
||||
import com.cleanroommc.modularui.value.sync.SyncHandler;
|
||||
import com.cleanroommc.modularui.widget.ParentWidget;
|
||||
import com.cleanroommc.modularui.widget.ScrollWidget;
|
||||
import com.cleanroommc.modularui.widget.scroll.VerticalScrollData;
|
||||
import com.cleanroommc.modularui.widgets.ButtonWidget;
|
||||
import com.cleanroommc.modularui.widgets.TextWidget;
|
||||
import com.cleanroommc.modularui.widgets.layout.Row;
|
||||
import com.cleanroommc.modularui.widgets.textfield.TextFieldWidget;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import vazkii.botania.common.item.relic.ItemLokiRing;
|
||||
@@ -28,140 +32,217 @@ import vazkii.botania.common.network.PacketHandler;
|
||||
import vazkii.botania.common.network.PacketLokiChangeSchematic;
|
||||
import vazkii.botania.common.network.PacketLokiDeleteSchematic;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.*;
|
||||
|
||||
public class GuiLokiSchematics {
|
||||
@Optional.Interface(modid = "modularui2", iface="com.cleanroommc.modularui.screen.CustomModularScreen", striprefs = true)
|
||||
public class GuiLokiSchematics extends CustomModularScreen {
|
||||
|
||||
public static void open(ItemStack ring) {
|
||||
GuiLokiSchematics.itemStack = ring;
|
||||
ClientGUI.open(new GuiLokiSchematics(ring));
|
||||
}
|
||||
|
||||
public static ItemStack itemStack;
|
||||
|
||||
public GuiLokiSchematics(ItemStack itemStack) {
|
||||
this.itemStack = itemStack;
|
||||
}
|
||||
|
||||
private static Object selectedSchematic;
|
||||
|
||||
private static String newSchematicName = "";
|
||||
private static Object schematicToBeRenamed;
|
||||
|
||||
private static final int WINDOW_WIDTH = 350, WINDOW_HEIGHT = 225, SCROLL_AREA_WIDTH = 350, SCROLL_AREA_HEIGHT = 200, SAVED_SCHEMATICS_HEADER_HEIGHT = 25, X_PADDING = 5, Y_PADDING = 5;
|
||||
|
||||
@Optional.Method(modid = "modularui")
|
||||
public static ModularWindow createWindow(Object buildContext, ItemStack heldStack) {
|
||||
ItemLokiRing loki = (ItemLokiRing) heldStack.getItem();
|
||||
loki.window = GuiLokiSchematics.getWindow((UIBuildContext) buildContext, heldStack);
|
||||
loki.schematicNames = new ArrayList<>(heldStack.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).tagMap.keySet());
|
||||
return (ModularWindow) loki.window;
|
||||
}
|
||||
@Override
|
||||
@Optional.Method(modid = "modularui2")
|
||||
public ModularPanel buildUI(ModularGuiContext context) {
|
||||
|
||||
@Optional.Method(modid = "modularui")
|
||||
public static void openUI(EntityPlayer player, ItemStack stack) {
|
||||
if(ItemLokiRing.isLokiRing(stack) && stack.getItem() instanceof ItemLokiRing) {
|
||||
UIInfos.openClientUI(player, uiBuildContext -> GuiLokiSchematics.createWindow(uiBuildContext, stack));
|
||||
}
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "modularui")
|
||||
public static ModularWindow getWindow(UIBuildContext buildContext, ItemStack lokiRing) {
|
||||
final AdaptableUITexture BACKGROUND = AdaptableUITexture
|
||||
.of("botania:textures/gui/croppedPaper", 330, 252, 12);
|
||||
final AdaptableUITexture DELETE = AdaptableUITexture
|
||||
.of("botania:textures/gui/lokiDelete", 500, 500, 0);
|
||||
final AdaptableUITexture RENAME = AdaptableUITexture
|
||||
.of("botania:textures/gui/lokiRename", 500, 500, 0);
|
||||
if(lokiRing.getTagCompound().tagMap.containsKey(ItemLokiRing.TAG_CURRENT_SCHEMATIC)) {
|
||||
// Substring to remove the leading and ending double quotes
|
||||
selectedSchematic = lokiRing.stackTagCompound.getString(ItemLokiRing.TAG_CURRENT_SCHEMATIC).substring(1);
|
||||
selectedSchematic = selectedSchematic.toString().substring(0, selectedSchematic.toString().length() - 1);
|
||||
}
|
||||
ItemLokiRing ring = (ItemLokiRing) lokiRing.getItem();
|
||||
ModularWindow.Builder builder = ModularWindow.builder(WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||
buildContext.setShowNEI(false);
|
||||
builder.setBackground(ModularUITextures.VANILLA_BACKGROUND);
|
||||
Scrollable scrollArea =
|
||||
new Scrollable()
|
||||
.setVerticalScroll();
|
||||
if(lokiRing.getTagCompound().tagMap.containsKey(ItemLokiRing.TAG_SAVED_SCHEMATICS) && !lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).tagMap.keySet().isEmpty()) {
|
||||
final AtomicInteger offset = new AtomicInteger();
|
||||
final AtomicInteger disabled = new AtomicInteger();
|
||||
for(Object schematicName : lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).tagMap.keySet()) {
|
||||
scrollArea = scrollArea.widget(new ButtonWidget()
|
||||
.setOnClick((clickData, widget) -> {
|
||||
selectedSchematic = schematicName;
|
||||
PacketHandler.INSTANCE.sendToServer(new PacketLokiChangeSchematic(schematicName.toString()));
|
||||
})
|
||||
.setBackground(() -> new IDrawable[]{new Text(schematicName.toString()).format(selectedSchematic.toString().equals(schematicName.toString()) ? EnumChatFormatting.DARK_GREEN : EnumChatFormatting.BLACK)})
|
||||
.setSize(SCROLL_AREA_WIDTH - 60, SCROLL_AREA_HEIGHT / 10)
|
||||
.setEnabled((widget) -> {
|
||||
if(lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).hasKey(schematicName.toString())) {
|
||||
return true;
|
||||
}
|
||||
disabled.getAndIncrement();
|
||||
return false;
|
||||
})
|
||||
.setPosProvider((Size screenSize, ModularWindow window, IWidgetParent parent) -> new Pos2d(0, ring.schematicNames.indexOf(schematicName) * (SCROLL_AREA_HEIGHT / 10 + 1))));
|
||||
scrollArea = scrollArea.widget(new ButtonWidget()
|
||||
.setOnClick((clickData, widget) -> {
|
||||
UIInfos.openClientUI(buildContext.getPlayer(), (context) -> GuiLokiSchematics.getRenameWindow(context, lokiRing, schematicName));
|
||||
})
|
||||
.setBackground(RENAME)
|
||||
.setPosProvider((Size screenSize, ModularWindow window, IWidgetParent parent) -> new Pos2d(SCROLL_AREA_WIDTH - 55, ring.schematicNames.indexOf(schematicName) * (SCROLL_AREA_HEIGHT / 10 + 1)))
|
||||
.setEnabled((widget) -> lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).hasKey(schematicName.toString()))
|
||||
.setSize(20, 20));
|
||||
scrollArea = scrollArea.widget(new ButtonWidget()
|
||||
.setOnClick((clickData, widget) -> {
|
||||
PacketHandler.INSTANCE.sendToServer(new PacketLokiDeleteSchematic(schematicName.toString()));
|
||||
buildContext.setValidator(() -> false);
|
||||
})
|
||||
.setBackground(DELETE)
|
||||
.setPosProvider((Size screenSize, ModularWindow window, IWidgetParent parent) -> new Pos2d(SCROLL_AREA_WIDTH - 30, ring.schematicNames.indexOf(schematicName) * (SCROLL_AREA_HEIGHT / 10 + 1)))
|
||||
.setEnabled((widget) -> lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).hasKey(schematicName.toString()))
|
||||
.setSize(20, 20));
|
||||
offset.addAndGet((SCROLL_AREA_HEIGHT / 10) + 1);
|
||||
}
|
||||
}
|
||||
scrollArea = scrollArea.widget(new TextWidget("No saved schematics!")
|
||||
.setEnabled((widget) -> !lokiRing.getTagCompound().hasKey(ItemLokiRing.TAG_SAVED_SCHEMATICS) || lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).tagMap.keySet().isEmpty())
|
||||
.setSize(SCROLL_AREA_WIDTH, SCROLL_AREA_HEIGHT)
|
||||
.setPos(0, 0));
|
||||
return builder
|
||||
.widget(
|
||||
new MultiChildWidget()
|
||||
.addChild(
|
||||
new TextWidget()
|
||||
.setScale(0.5F)
|
||||
.setTextSupplier(() -> new Text(selectedSchematic == null ? StatCollector.translateToLocal("botaniamisc.select_schematic") : StatCollector.translateToLocal("botaniamisc.selected_schematic") + " " + selectedSchematic)
|
||||
.format(selectedSchematic == null ? EnumChatFormatting.RED : EnumChatFormatting.BLACK)
|
||||
.alignment(Alignment.Center))
|
||||
.setSize(SCROLL_AREA_WIDTH, SAVED_SCHEMATICS_HEADER_HEIGHT))
|
||||
.addChild(
|
||||
scrollArea
|
||||
.setSize(SCROLL_AREA_WIDTH, SCROLL_AREA_HEIGHT - SAVED_SCHEMATICS_HEADER_HEIGHT - Y_PADDING * 2)
|
||||
.setPos(0, SAVED_SCHEMATICS_HEADER_HEIGHT))
|
||||
.setPos(WINDOW_WIDTH - SCROLL_AREA_WIDTH - X_PADDING, 0))
|
||||
.setBackground(BACKGROUND)
|
||||
final UITexture backgroundTexture = AdaptableUITexture
|
||||
.builder()
|
||||
.location("botania:textures/gui/croppedPaper")
|
||||
.imageSize(330, 252)
|
||||
.adaptable(12)
|
||||
.build();
|
||||
final UITexture checkIcon = AdaptableUITexture
|
||||
.builder()
|
||||
.location("botania:textures/gui/check")
|
||||
.imageSize(16, 16)
|
||||
.build();
|
||||
final UITexture deleteIcon = AdaptableUITexture
|
||||
.builder()
|
||||
.location("botania:textures/gui/delete")
|
||||
.imageSize(16, 16)
|
||||
.build();
|
||||
final UITexture renameIcon = AdaptableUITexture
|
||||
.builder()
|
||||
.location("botania:textures/gui/rename")
|
||||
.imageSize(16, 16)
|
||||
.build();
|
||||
|
||||
selectedSchematic = itemStack.getTagCompound().getString(ItemLokiRing.TAG_CURRENT_SCHEMATIC);
|
||||
|
||||
ItemLokiRing ring = (ItemLokiRing) itemStack.getItem();
|
||||
ring.schematicNames = Arrays.asList(itemStack.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).tagMap.keySet().stream().sorted(Comparator.comparing(Object::toString)).toArray());
|
||||
|
||||
Set<Object> deleted = new HashSet<>();
|
||||
|
||||
final ScrollWidget<?> scrollWidget = new ScrollWidget<>(new VerticalScrollData());
|
||||
scrollWidget.getScrollArea().getScrollY().setScrollSize(ring.schematicNames.size() * (SCROLL_AREA_HEIGHT / 10 + 1));
|
||||
int idx = 0;
|
||||
for(Object key : itemStack.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).tagMap.keySet()) {
|
||||
scrollWidget.child(
|
||||
new Row()
|
||||
.sizeRel(1f, 0.1f)
|
||||
.pos(0, ring.schematicNames.indexOf(key) * (SCROLL_AREA_HEIGHT / 10 + 1))
|
||||
.padding(5, 0, 5, 5)
|
||||
.setEnabledIf((w) -> !deleted.contains(key))
|
||||
.background(new Rectangle()
|
||||
.setColor(idx % 2 == 0 ? Color.ORANGE.brighter(3) : Color.ORANGE.brighter(2)))
|
||||
.child(
|
||||
new TextWidget(key.toString())
|
||||
.scale(0.5f)
|
||||
.widthRel(0.72f))
|
||||
.child(
|
||||
new ParentWidget<>()
|
||||
.tooltip(new RichTooltip(new TextWidget("Activate Schematic")))
|
||||
.widthRel(0.083f)
|
||||
.heightRel(1f)
|
||||
.setEnabledIf((w) -> !key.equals(selectedSchematic))
|
||||
.child(
|
||||
new ButtonWidget<>()
|
||||
.onMousePressed(ignored -> {
|
||||
PacketHandler.INSTANCE.sendToServer(new PacketLokiChangeSchematic(key.toString()));
|
||||
selectedSchematic = key;
|
||||
return true;
|
||||
})
|
||||
.background(checkIcon)
|
||||
.hoverBackground(checkIcon)
|
||||
.size(8, 8)
|
||||
.center()))
|
||||
.child(
|
||||
new ParentWidget<>()
|
||||
.widthRel(0.083f)
|
||||
.heightRel(1f)
|
||||
.child(
|
||||
new ButtonWidget<>()
|
||||
.tooltip(new RichTooltip(new TextWidget("Rename Schematic")))
|
||||
.onMousePressed(ignored -> {
|
||||
this.schematicToBeRenamed = key;
|
||||
ClientGUI.open(new RenameGui());
|
||||
return true;
|
||||
})
|
||||
.background(renameIcon)
|
||||
.hoverBackground(renameIcon)
|
||||
.size(8, 8)
|
||||
.center()))
|
||||
.child(
|
||||
new ParentWidget<>()
|
||||
.widthRel(0.083f)
|
||||
.heightRel(1f)
|
||||
.child(
|
||||
new ButtonWidget<>()
|
||||
.tooltip(new RichTooltip(new TextWidget("Delete Schematic")))
|
||||
.onMousePressed(ignored -> {
|
||||
PacketHandler.INSTANCE.sendToServer(new PacketLokiDeleteSchematic(key.toString()));
|
||||
deleted.add(key);
|
||||
return true;
|
||||
})
|
||||
.background(deleteIcon)
|
||||
.hoverBackground(deleteIcon)
|
||||
.size(8, 8)
|
||||
.center())));
|
||||
idx++;
|
||||
}
|
||||
|
||||
return ModularPanel.defaultPanel("lokiSchematics")
|
||||
.child(
|
||||
new TextWidget(IKey.dynamic(() -> selectedSchematic == null ? StatCollector.translateToLocal("botaniamisc.select_schematic") : StatCollector.translateToLocal("botaniamisc.selected_schematic") + " " + selectedSchematic))
|
||||
.style(EnumChatFormatting.BLACK)
|
||||
.align(Alignment.TopCenter)
|
||||
.marginTop(8)
|
||||
.scale(0.5F))
|
||||
.child(
|
||||
scrollWidget
|
||||
.pos(10, 20)
|
||||
.widthRel(SCROLL_AREA_WIDTH - 20)
|
||||
.margin(10, 0)
|
||||
.height(SCROLL_AREA_HEIGHT - 10))
|
||||
.background(backgroundTexture)
|
||||
.size(WINDOW_WIDTH, WINDOW_HEIGHT);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "modularui")
|
||||
public static ModularWindow getRenameWindow(UIBuildContext buildContext, ItemStack lokiRing, Object schematicName) {
|
||||
final AdaptableUITexture BACKGROUND = AdaptableUITexture
|
||||
.of("botania:textures/gui/croppedPaper", 330, 252, 12);
|
||||
ModularWindow.Builder builder = ModularWindow.builder(200, 100);
|
||||
public static class RenameGui extends CustomModularScreen {
|
||||
|
||||
buildContext.addCloseListener(() -> {
|
||||
if(lokiRing.getTagCompound().getString(ItemLokiRing.TAG_CURRENT_SCHEMATIC).equals(schematicName)) {
|
||||
lokiRing.getTagCompound().setString(ItemLokiRing.TAG_CURRENT_SCHEMATIC, newSchematicName);
|
||||
private String newValue = "";
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
super.close();
|
||||
this.persist();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close(boolean force) {
|
||||
super.close(force);
|
||||
this.persist();
|
||||
}
|
||||
|
||||
public void persist() {
|
||||
if (itemStack.getTagCompound().getString(ItemLokiRing.TAG_CURRENT_SCHEMATIC).equals(schematicToBeRenamed)) {
|
||||
itemStack.getTagCompound().setString(ItemLokiRing.TAG_CURRENT_SCHEMATIC, newValue);
|
||||
}
|
||||
NBTBase nbt = lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).getTag(schematicName.toString());
|
||||
lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).removeTag(schematicName.toString());
|
||||
lokiRing.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).setTag(newSchematicName, nbt);
|
||||
});
|
||||
NBTBase nbt = itemStack.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).getTag(schematicToBeRenamed.toString());
|
||||
itemStack.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).removeTag(schematicToBeRenamed.toString());
|
||||
itemStack.getTagCompound().getCompoundTag(ItemLokiRing.TAG_SAVED_SCHEMATICS).setTag(newValue, nbt);
|
||||
}
|
||||
|
||||
return builder
|
||||
.widget(new TextWidget()
|
||||
.setTextSupplier(() -> new Text("Schematic Name:").format(EnumChatFormatting.BLACK))
|
||||
.setPos(10, 10)
|
||||
.setSize(180, 20))
|
||||
.widget(new TextFieldWidget()
|
||||
.setGetter(() -> newSchematicName)
|
||||
.setSetter((newValue) -> newSchematicName = newValue)
|
||||
.setSize(150, 20)
|
||||
.setPos(25, 40))
|
||||
.setBackground(BACKGROUND)
|
||||
.build();
|
||||
@Override
|
||||
public ModularPanel buildUI(ModularGuiContext context) {
|
||||
final UITexture BACKGROUND = AdaptableUITexture.builder()
|
||||
.location("botania:textures/gui/croppedPaper")
|
||||
.imageSize(330, 252)
|
||||
.adaptable(12)
|
||||
.build();
|
||||
|
||||
InteractionSyncHandler handler = new InteractionSyncHandler();
|
||||
|
||||
handler.setOnKeyPressed((key) -> {
|
||||
System.out.println(key.character);
|
||||
});
|
||||
|
||||
return ModularPanel.defaultPanel("rename")
|
||||
.child(new TextWidget("Schematic Name:")
|
||||
.style(EnumChatFormatting.BLACK)
|
||||
.pos(10, 10)
|
||||
.size(180, 20))
|
||||
.child(new TextFieldWidget()
|
||||
.value(new IStringValue<String>() {
|
||||
@Override
|
||||
public String getStringValue() {
|
||||
return newValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStringValue(String val) {
|
||||
newValue = val;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getValue() {
|
||||
return newValue;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValue(String value) {
|
||||
newValue = value;
|
||||
}
|
||||
})
|
||||
.disableHoverBackground()
|
||||
.size(150, 20)
|
||||
.pos(25, 40))
|
||||
.background(BACKGROUND)
|
||||
.size(200, 100);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -16,9 +16,6 @@ import baubles.common.container.InventoryBaubles;
|
||||
import baubles.common.lib.PlayerHandler;
|
||||
import baubles.common.network.PacketSyncBauble;
|
||||
import com.gtnewhorizon.gtnhlib.GTNHLib;
|
||||
import com.gtnewhorizons.modularui.api.UIInfos;
|
||||
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
|
||||
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
@@ -52,7 +49,6 @@ import vazkii.botania.api.item.ISequentialBreaker;
|
||||
import vazkii.botania.api.mana.IManaUsingItem;
|
||||
import vazkii.botania.api.mana.ManaItemHandler;
|
||||
import vazkii.botania.client.core.handler.BoundTileRenderer;
|
||||
import vazkii.botania.client.gui.loki.GuiLokiSchematics;
|
||||
import vazkii.botania.common.core.helper.ItemNBTHelper;
|
||||
import vazkii.botania.common.core.helper.LokiCursor;
|
||||
import vazkii.botania.common.item.ModItems;
|
||||
@@ -63,11 +59,10 @@ import vazkii.botania.common.network.PacketLokiHudNotificationAck;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeCoordinateListProvider, IManaUsingItem, IInWorldRenderable {
|
||||
|
||||
public static final boolean isModularUIEnabled = Loader.isModLoaded("modularui");
|
||||
public static final boolean isModularUIEnabled = Loader.isModLoaded("modularui2");
|
||||
|
||||
public static final String TAG_CURSOR_LIST = "cursorList";
|
||||
public static final String TAG_CURSOR_PREFIX = "cursor";
|
||||
@@ -86,7 +81,7 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
|
||||
|
||||
public List<Object> schematicNames;
|
||||
|
||||
public static enum HUD_MESSAGE {
|
||||
public enum HUD_MESSAGE {
|
||||
MODE, BREAKING, CLEAR, MIRROR, INSUFFICIENT_MANA, SCHEMATIC_SAVED
|
||||
}
|
||||
|
||||
@@ -308,7 +303,14 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
|
||||
if(stack.getTagCompound().getTag(s) != null)
|
||||
currentState.setTag(s, stack.getTagCompound().getTag(s));
|
||||
}
|
||||
String newSchematicName = UUID.randomUUID().toString();
|
||||
String newSchematicName = "New Schematic";
|
||||
int idx = 1;
|
||||
if(map.hasKey(newSchematicName)) {
|
||||
do {
|
||||
newSchematicName = "New Schematic (" + idx + ")";
|
||||
idx++;
|
||||
} while (map.hasKey(newSchematicName));
|
||||
}
|
||||
map.setTag(newSchematicName, currentState);
|
||||
stack.getTagCompound().setTag(TAG_CURRENT_SCHEMATIC, new NBTTagString(newSchematicName));
|
||||
}
|
||||
@@ -339,7 +341,7 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
|
||||
stack.getTagCompound().setTag(TAG_CURRENT_SCHEMATIC, new NBTTagString(schematicName));
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "modularui")
|
||||
@Optional.Method(modid = "modularui2")
|
||||
public static void deleteSchematic(ItemStack lokiStack, String schematicName) {
|
||||
NBTTagCompound map = lokiStack.getTagCompound().getCompoundTag(TAG_SAVED_SCHEMATICS);
|
||||
if(map != null) {
|
||||
@@ -348,11 +350,11 @@ public class ItemLokiRing extends ItemRelicBauble implements IExtendedWireframeC
|
||||
}
|
||||
}
|
||||
ItemLokiRing lokiRing = ((ItemLokiRing) lokiStack.getItem());
|
||||
if(lokiRing != null) {
|
||||
lokiRing.schematicNames.remove(schematicName);
|
||||
if(isModularUIEnabled)
|
||||
((ModularWindow) lokiRing.window).markNeedsRebuild();
|
||||
}
|
||||
// if(lokiRing != null) {
|
||||
// lokiRing.schematicNames.remove(schematicName);
|
||||
// if(isModularUIEnabled)
|
||||
// ((ModularWindow) lokiRing.window).markNeedsRebuild();
|
||||
// }
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
||||
@@ -21,7 +21,6 @@ import vazkii.botania.client.gui.box.GuiBaubleBox;
|
||||
import vazkii.botania.client.gui.crafting.ContainerCraftingHalo;
|
||||
import vazkii.botania.client.gui.crafting.GuiCraftingHalo;
|
||||
import vazkii.botania.client.gui.lexicon.GuiLexicon;
|
||||
import vazkii.botania.client.gui.loki.GuiLokiSchematics;
|
||||
import vazkii.botania.common.lib.LibGuiIDs;
|
||||
import cpw.mods.fml.common.network.IGuiHandler;
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 339 B |
Binary file not shown.
|
After Width: | Height: | Size: 350 B |
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
Reference in new issue
Block a user