Update to MUI2

This commit is contained in:
ReignOfFROZE committed 2025-03-02 17:58:32 -05:00
1 parent fc21641317
commit 8c6fb516e7
8 files changed
+242 -156

No files matched your search

+2 -1
View File
@@ -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