diff --git a/src/main/java/com/muxiu1997/mxrandom/api/IConfigurableMetaTileEntity.java b/src/main/java/com/muxiu1997/mxrandom/api/IConfigurableMetaTileEntity.java deleted file mode 100644 index 7ce7b13..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/api/IConfigurableMetaTileEntity.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.muxiu1997.mxrandom.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraftforge.common.util.ForgeDirection; - -import com.muxiu1997.mxrandom.MXRandom; -import com.muxiu1997.mxrandom.network.message.MessageSyncMetaTileEntityConfig; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import io.netty.buffer.ByteBuf; - -public interface IConfigurableMetaTileEntity { - - IGregTechTileEntity getBaseMetaTileEntity(); - - void readConfigFromBytes(ByteBuf buf); - - void writeConfigToBytes(ByteBuf buf); - - default void applyConfigChanges() { - IGregTechTileEntity te = getBaseMetaTileEntity(); - te.markDirty(); - if (te.isServerSide()) { - MXRandom.network.sendToServer(new MessageSyncMetaTileEntityConfig(this, false)); - } else if (te.isClientSide()) { - MXRandom.network.sendToAll(new MessageSyncMetaTileEntityConfig(this, false)); - } - } - - Object getServerGuiElement(int ID, EntityPlayer player); - - @SideOnly(Side.CLIENT) - Object getClientGuiElement(int ID, EntityPlayer player); - - void onScrewdriverRightClick(ForgeDirection side, EntityPlayer player, float x, float y, float z); -} diff --git a/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageBothSideHandler.java b/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageBothSideHandler.java deleted file mode 100644 index 33b0d72..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageBothSideHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.muxiu1997.mxrandom.api.network; - -import org.jetbrains.annotations.NotNull; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; - -public interface IMessageBothSideHandler - extends IMessageServerSideHandler, IMessageClientSideHandler { - - @Override - default REPLY onMessage(@NotNull REQ message, @NotNull MessageContext ctx) { - if (ctx.side == Side.SERVER) { - return handleServerSideMessage(message, ctx); - } else { - return handleClientSideMessage(message, ctx); - } - } -} diff --git a/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageClientSideHandler.java b/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageClientSideHandler.java deleted file mode 100644 index 14dcd36..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageClientSideHandler.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.muxiu1997.mxrandom.api.network; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public interface IMessageClientSideHandler - extends IMessageHandler { - - @Override - default REPLY onMessage(REQ message, MessageContext ctx) { - if (ctx.side == Side.SERVER) { - throw new IllegalAccessError("Cannot handle server-side messages"); - } - return handleClientSideMessage(message, ctx); - } - - @SideOnly(Side.CLIENT) - REPLY handleClientSideMessage(REQ message, MessageContext ctx); -} diff --git a/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageServerSideHandler.java b/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageServerSideHandler.java deleted file mode 100644 index b9e2475..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/api/network/IMessageServerSideHandler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.muxiu1997.mxrandom.api.network; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; - -public interface IMessageServerSideHandler - extends IMessageHandler { - - @Override - default REPLY onMessage(REQ message, MessageContext ctx) { - if (ctx.side == Side.CLIENT) { - throw new IllegalAccessError("Cannot handle client-side messages"); - } - return handleServerSideMessage(message, ctx); - } - - REPLY handleServerSideMessage(REQ message, MessageContext ctx); -} diff --git a/src/main/java/com/muxiu1997/mxrandom/client/MXUITextures.java b/src/main/java/com/muxiu1997/mxrandom/client/MXUITextures.java new file mode 100644 index 0000000..855ce37 --- /dev/null +++ b/src/main/java/com/muxiu1997/mxrandom/client/MXUITextures.java @@ -0,0 +1,12 @@ +package com.muxiu1997.mxrandom.client; + +import com.gtnewhorizons.modularui.api.drawable.UITexture; +import com.muxiu1997.mxrandom.MXRandom; + +public class MXUITextures { + + public static final UITexture OVERLAY_BUTTON_LMA_ANIMATION_ON = UITexture + .fullImage(MXRandom.MODID, "gui/overlay_button/lma_animation_on"); + public static final UITexture OVERLAY_BUTTON_LMA_ANIMATION_OFF = UITexture + .fullImage(MXRandom.MODID, "gui/overlay_button/lma_animation_off"); +} diff --git a/src/main/java/com/muxiu1997/mxrandom/client/gui/GuiConfigLargeMolecularAssembler.java b/src/main/java/com/muxiu1997/mxrandom/client/gui/GuiConfigLargeMolecularAssembler.java deleted file mode 100644 index 3528036..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/client/gui/GuiConfigLargeMolecularAssembler.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.muxiu1997.mxrandom.client.gui; - -import java.awt.Color; - -import net.minecraft.client.gui.GuiButton; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.StatCollector; - -import com.muxiu1997.mxrandom.MXRandom; -import com.muxiu1997.mxrandom.metatileentity.MTELargeMolecularAssembler; -import com.muxiu1997.mxrandom.network.container.ContainerConfigLargeMolecularAssembler; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class GuiConfigLargeMolecularAssembler extends GuiContainer { - - private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation( - MXRandom.MODID, - "textures/gui/configMetaTileEntity.png"); - private static final String LANG_CRAFTING_FX = "mxrandom.client.gui.GuiConfigLargeMolecularAssembler.craftingFX"; - private static final String LANG_VISIBLE = "mxrandom.client.gui.GuiConfigLargeMolecularAssembler.visible"; - private static final String LANG_HIDDEN = "mxrandom.client.gui.GuiConfigLargeMolecularAssembler.hidden"; - - private static final int PADDING = 8; - private static final int BUTTON_WIDTH = 40; - private static final int BUTTON_HEIGHT = 18; - - private GuiButton buttonToggleCraftingFX; - private final MTELargeMolecularAssembler LMA; - - public GuiConfigLargeMolecularAssembler(ContainerConfigLargeMolecularAssembler container) { - super(container); - this.LMA = container.LMA; - this.xSize = 176; - this.ySize = 107; - } - - @Override - public void initGui() { - super.initGui(); - buttonToggleCraftingFX = new GuiButton( - 0, - guiLeft + xSize - BUTTON_WIDTH - PADDING, - guiTop + PADDING + 16, - BUTTON_WIDTH, - BUTTON_HEIGHT, - buttonToggleCraftingFXDisplayString()); - buttonList.add(buttonToggleCraftingFX); - } - - @Override - public void updateScreen() { - super.updateScreen(); - buttonToggleCraftingFX.displayString = buttonToggleCraftingFXDisplayString(); - } - - @Override - protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { - this.mc.getTextureManager().bindTexture(BACKGROUND_TEXTURE); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - } - - @Override - protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - fontRendererObj.drawString(LMA.getLocalName(), PADDING, PADDING, Color.BLACK.getRGB()); - fontRendererObj.drawString( - StatCollector.translateToLocal(LANG_CRAFTING_FX), - PADDING, - PADDING + 20, - Color.BLACK.getRGB()); - } - - @Override - protected void actionPerformed(GuiButton button) { - if (button == buttonToggleCraftingFX) { - LMA.hiddenCraftingFX = !LMA.hiddenCraftingFX; - LMA.applyConfigChanges(); - } - } - - private String buttonToggleCraftingFXDisplayString() { - if (LMA.hiddenCraftingFX) { - return StatCollector.translateToLocal(LANG_HIDDEN); - } - return StatCollector.translateToLocal(LANG_VISIBLE); - } -} diff --git a/src/main/java/com/muxiu1997/mxrandom/loader/NetworkLoader.java b/src/main/java/com/muxiu1997/mxrandom/loader/NetworkLoader.java index e70c801..5042494 100644 --- a/src/main/java/com/muxiu1997/mxrandom/loader/NetworkLoader.java +++ b/src/main/java/com/muxiu1997/mxrandom/loader/NetworkLoader.java @@ -1,28 +1,13 @@ package com.muxiu1997.mxrandom.loader; import com.muxiu1997.mxrandom.MXRandom; -import com.muxiu1997.mxrandom.network.GuiHandler; import com.muxiu1997.mxrandom.network.message.MessageCraftingFX; -import com.muxiu1997.mxrandom.network.message.MessageSyncMetaTileEntityConfig; -import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; public class NetworkLoader { public static void load() { MXRandom.network.registerMessage(new MessageCraftingFX.Handler(), MessageCraftingFX.class, 0, Side.CLIENT); - MXRandom.network.registerMessage( - new MessageSyncMetaTileEntityConfig.Handler(), - MessageSyncMetaTileEntityConfig.class, - 1, - Side.SERVER); - MXRandom.network.registerMessage( - new MessageSyncMetaTileEntityConfig.Handler(), - MessageSyncMetaTileEntityConfig.class, - 2, - Side.CLIENT); - - NetworkRegistry.INSTANCE.registerGuiHandler(MXRandom.MODID, new GuiHandler()); } } diff --git a/src/main/java/com/muxiu1997/mxrandom/metatileentity/MTELargeMolecularAssembler.java b/src/main/java/com/muxiu1997/mxrandom/metatileentity/MTELargeMolecularAssembler.java index 5c38638..e6b1972 100644 --- a/src/main/java/com/muxiu1997/mxrandom/metatileentity/MTELargeMolecularAssembler.java +++ b/src/main/java/com/muxiu1997/mxrandom/metatileentity/MTELargeMolecularAssembler.java @@ -1,6 +1,7 @@ package com.muxiu1997.mxrandom.metatileentity; import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.metatileentity.BaseTileEntity.TOOLTIP_DELAY; import static gregtech.api.util.GTStructureUtility.ofHatchAdder; import java.util.ArrayList; @@ -15,13 +16,13 @@ import java.util.stream.IntStream; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.InventoryCrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.Constants; @@ -32,13 +33,16 @@ import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.IStructureElementCheckOnly; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import com.gtnewhorizons.modularui.api.drawable.IDrawable; +import com.gtnewhorizons.modularui.api.drawable.UITexture; +import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import com.gtnewhorizons.modularui.api.screen.UIBuildContext; +import com.gtnewhorizons.modularui.common.widget.ButtonWidget; +import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget; import com.mojang.authlib.GameProfile; import com.muxiu1997.mxrandom.MXRandom; -import com.muxiu1997.mxrandom.api.IConfigurableMetaTileEntity; -import com.muxiu1997.mxrandom.client.gui.GuiConfigLargeMolecularAssembler; -import com.muxiu1997.mxrandom.network.container.ContainerConfigLargeMolecularAssembler; +import com.muxiu1997.mxrandom.client.MXUITextures; import com.muxiu1997.mxrandom.network.message.MessageCraftingFX; -import com.muxiu1997.mxrandom.network.message.MessageSyncMetaTileEntityConfig; import appeng.api.AEApi; import appeng.api.networking.GridFlags; @@ -63,11 +67,10 @@ import appeng.util.Platform; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; import gregtech.api.enums.ItemList; import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -78,10 +81,9 @@ import gregtech.api.util.MultiblockTooltipBuilder; import gregtech.common.items.behaviors.BehaviourDataOrb; import gregtech.common.tileentities.machines.MTEHatchCraftingInputME; -import io.netty.buffer.ByteBuf; public class MTELargeMolecularAssembler extends MTEExtendedPowerMultiBlockBase - implements IConfigurableMetaTileEntity, ICraftingProvider, IActionHost, IGridProxyable { + implements ICraftingProvider, IActionHost, IGridProxyable { private static final String DATA_ORB_JOBS_KEY = "MX-CraftingJobs"; private static final String DATA_ORB_JOBS_JOB_KEY = "Job"; @@ -302,7 +304,6 @@ protected MultiblockTooltipBuilder createTooltip() { + EnumChatFormatting.GRAY + "s") .addInfo("Subsequent Overclocks:").addInfo("-Double the number of Jobs finished at once") - .addInfo("Use the screwdriver to right-click the Controller to open the config GUI") .beginStructureBlock(5, 5, 5, true).addController("Front center") .addCasingInfoMin("Robust Tungstensteel Machine Casing", MIN_CASING_COUNT, false) .addInputBus("Any casing", 1).addEnergyHatch("Any casing", 1).addMaintenanceHatch("Any casing", 1) @@ -361,16 +362,6 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { } } - @Override - public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ, - ItemStack aTool) { - super.onScrewdriverRightClick(side, aPlayer, aX, aY, aZ, aTool); - if (getBaseMetaTileEntity().isClientSide() || !(aPlayer instanceof EntityPlayerMP playerMP)) return; - if (side == getBaseMetaTileEntity().getFrontFacing()) { - MXRandom.network.sendTo(new MessageSyncMetaTileEntityConfig(this, true), playerMP); - } - } - // dataOrb, aeJobs private boolean withAeJobs(BiFunction>, Boolean> action) { if (mInventory[1] == cachedDataOrb && cachedDataOrb != null) { @@ -574,27 +565,6 @@ private boolean addToLargeMolecularAssemblerList(IGregTechTileEntity tileEntity, return addEnergyInputToMachineList(tileEntity, baseCasingIndex); } - @Override - public void readConfigFromBytes(ByteBuf buf) { - hiddenCraftingFX = buf.readBoolean(); - } - - @Override - public void writeConfigToBytes(ByteBuf buf) { - buf.writeBoolean(hiddenCraftingFX); - } - - @Override - public Object getServerGuiElement(int ID, EntityPlayer player) { - return new ContainerConfigLargeMolecularAssembler(this); - } - - @SideOnly(Side.CLIENT) - @Override - public Object getClientGuiElement(int ID, EntityPlayer player) { - return new GuiConfigLargeMolecularAssembler(new ContainerConfigLargeMolecularAssembler(this)); - } - @Override public boolean pushPattern(ICraftingPatternDetails patternDetails, InventoryCrafting table) { return withAeJobs(($, aeJobs) -> { @@ -670,6 +640,29 @@ public IGridNode getActionableNode() { return getProxy().getNode(); } + @Override + public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) { + super.addUIWidgets(builder, buildContext); + builder.widget( + new ButtonWidget().setOnClick((clickData, widget) -> hiddenCraftingFX = !hiddenCraftingFX) + .setPlayClickSound(true).setBackground(() -> { + List ret = new ArrayList<>(); + if (hiddenCraftingFX) { + ret.add(GTUITextures.BUTTON_STANDARD); + ret.add(MXUITextures.OVERLAY_BUTTON_LMA_ANIMATION_OFF); + } else { + ret.add(GTUITextures.BUTTON_STANDARD_PRESSED); + ret.add(MXUITextures.OVERLAY_BUTTON_LMA_ANIMATION_ON); + } + return ret.toArray(new IDrawable[0]); + }) + .attachSyncer( + new FakeSyncWidget.BooleanSyncer(() -> hiddenCraftingFX, val -> hiddenCraftingFX = val), + builder) + .addTooltip(StatCollector.translateToLocal("mxrandom.client.gui.craftingfx")) + .setTooltipShowUpDelay(TOOLTIP_DELAY).setPos(80, 91).setSize(16, 16)); + } + @SuppressWarnings("all") private static class CraftingDisplayPoint { diff --git a/src/main/java/com/muxiu1997/mxrandom/network/GuiHandler.java b/src/main/java/com/muxiu1997/mxrandom/network/GuiHandler.java deleted file mode 100644 index 21524b8..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/network/GuiHandler.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.muxiu1997.mxrandom.network; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.world.World; - -import com.muxiu1997.mxrandom.Utils; -import com.muxiu1997.mxrandom.api.IConfigurableMetaTileEntity; - -import cpw.mods.fml.common.network.IGuiHandler; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; - -public class GuiHandler implements IGuiHandler { - - private static final int ID_CONFIG_META_TILE_ENTITY = 1; - - @Override - public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - if (ID == ID_CONFIG_META_TILE_ENTITY) { - IMetaTileEntity mte = Utils.getMetaTileEntity(world, x, y, z); - if (mte instanceof IConfigurableMetaTileEntity icmte) { - return icmte.getServerGuiElement(ID, player); - } - } - return null; - } - - @Override - public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { - if (ID == ID_CONFIG_META_TILE_ENTITY) { - IMetaTileEntity mte = Utils.getMetaTileEntity(world, x, y, z); - if (mte instanceof IConfigurableMetaTileEntity icmte) { - return icmte.getClientGuiElement(ID, player); - } - } - return null; - } -} diff --git a/src/main/java/com/muxiu1997/mxrandom/network/container/ContainerConfigLargeMolecularAssembler.java b/src/main/java/com/muxiu1997/mxrandom/network/container/ContainerConfigLargeMolecularAssembler.java deleted file mode 100644 index a15a42e..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/network/container/ContainerConfigLargeMolecularAssembler.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.muxiu1997.mxrandom.network.container; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; - -import com.muxiu1997.mxrandom.metatileentity.MTELargeMolecularAssembler; - -public class ContainerConfigLargeMolecularAssembler extends Container { - - public final MTELargeMolecularAssembler LMA; - - public ContainerConfigLargeMolecularAssembler(MTELargeMolecularAssembler LMA) { - this.LMA = LMA; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return true; - } -} diff --git a/src/main/java/com/muxiu1997/mxrandom/network/message/MessageCraftingFX.java b/src/main/java/com/muxiu1997/mxrandom/network/message/MessageCraftingFX.java index ab64ae0..1b6f8b1 100644 --- a/src/main/java/com/muxiu1997/mxrandom/network/message/MessageCraftingFX.java +++ b/src/main/java/com/muxiu1997/mxrandom/network/message/MessageCraftingFX.java @@ -5,12 +5,12 @@ import net.minecraft.client.Minecraft; import com.muxiu1997.mxrandom.MXRandom; -import com.muxiu1997.mxrandom.api.network.IMessageClientSideHandler; import com.muxiu1997.mxrandom.client.fx.CraftingFX; import appeng.api.storage.data.IAEItemStack; import appeng.util.item.AEItemStack; import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -61,11 +61,18 @@ public void toBytes(ByteBuf buf) { } } - public static class Handler implements IMessageClientSideHandler { + public static class Handler implements IMessageHandler { - @SideOnly(Side.CLIENT) @Override - public IMessage handleClientSideMessage(MessageCraftingFX message, MessageContext ctx) { + public IMessage onMessage(MessageCraftingFX message, MessageContext ctx) { + if (ctx.side == Side.CLIENT) { + spawnFX(message); + } + return null; + } + + @SideOnly(Side.CLIENT) + private void spawnFX(MessageCraftingFX message) { CraftingFX fx = new CraftingFX( Minecraft.getMinecraft().theWorld, message.x, @@ -74,7 +81,6 @@ public IMessage handleClientSideMessage(MessageCraftingFX message, MessageContex message.age, message.itemStack); Minecraft.getMinecraft().effectRenderer.addEffect(fx); - return null; } } } diff --git a/src/main/java/com/muxiu1997/mxrandom/network/message/MessageSyncMetaTileEntityConfig.java b/src/main/java/com/muxiu1997/mxrandom/network/message/MessageSyncMetaTileEntityConfig.java deleted file mode 100644 index 6c38511..0000000 --- a/src/main/java/com/muxiu1997/mxrandom/network/message/MessageSyncMetaTileEntityConfig.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.muxiu1997.mxrandom.network.message; - -import net.minecraft.client.Minecraft; -import net.minecraft.world.World; -import net.minecraftforge.common.DimensionManager; - -import com.muxiu1997.mxrandom.MXRandom; -import com.muxiu1997.mxrandom.Utils; -import com.muxiu1997.mxrandom.api.IConfigurableMetaTileEntity; -import com.muxiu1997.mxrandom.api.network.IMessageBothSideHandler; - -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import gregtech.api.interfaces.metatileentity.IMetaTileEntity; -import gregtech.api.interfaces.tileentity.IGregTechTileEntity; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; - -public class MessageSyncMetaTileEntityConfig implements IMessage { - - private int x; - private int y; - private int z; - private int dimID; - private ByteBuf configData; - private boolean openGui; - - @SuppressWarnings("unused") - public MessageSyncMetaTileEntityConfig() {} - - public MessageSyncMetaTileEntityConfig(IConfigurableMetaTileEntity mte, boolean openGui) { - IGregTechTileEntity igtte = mte.getBaseMetaTileEntity(); - this.x = igtte.getXCoord(); - this.y = igtte.getYCoord(); - this.z = igtte.getZCoord(); - this.dimID = igtte.getWorld().provider.dimensionId; - this.configData = Unpooled.buffer(); - mte.writeConfigToBytes(this.configData); - this.openGui = openGui; - } - - public MessageSyncMetaTileEntityConfig(int x, int y, int z, int dimID, ByteBuf configData, boolean openGui) { - this.x = x; - this.y = y; - this.z = z; - this.dimID = dimID; - this.configData = configData; - this.openGui = openGui; - } - - @Override - public void fromBytes(ByteBuf buf) { - this.x = buf.readInt(); - this.y = buf.readInt(); - this.z = buf.readInt(); - this.dimID = buf.readInt(); - this.configData = buf.readBytes(buf.readInt()); - this.openGui = buf.readBoolean(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(this.x); - buf.writeInt(this.y); - buf.writeInt(this.z); - buf.writeInt(this.dimID); - buf.writeInt(this.configData.readableBytes()); - buf.writeBytes(this.configData); - buf.writeBoolean(this.openGui); - } - - public static class Handler implements IMessageBothSideHandler { - - @SideOnly(Side.CLIENT) - @Override - public IMessage handleClientSideMessage(MessageSyncMetaTileEntityConfig message, MessageContext ctx) { - World world = DimensionManager.getWorld(message.dimID); - if (world == null) { - return null; - } - - IMetaTileEntity mte = Utils.getMetaTileEntity(world, message.x, message.y, message.z); - if (mte instanceof IConfigurableMetaTileEntity icmte) { - icmte.readConfigFromBytes(message.configData); - if (message.openGui) { - Minecraft.getMinecraft().thePlayer - .openGui(MXRandom.MODID, 1, world, message.x, message.y, message.z); - } - } - return null; - } - - @Override - public IMessage handleServerSideMessage(MessageSyncMetaTileEntityConfig message, MessageContext ctx) { - World world = DimensionManager.getWorld(message.dimID); - if (world == null) { - return null; - } - - IMetaTileEntity mte = Utils.getMetaTileEntity(world, message.x, message.y, message.z); - if (mte instanceof IConfigurableMetaTileEntity icmte) { - ByteBuf configData = message.configData.copy(); - icmte.readConfigFromBytes(message.configData); - message.openGui = false; - message.configData = configData; - MXRandom.network.sendToAll(message); - } - return null; - } - } -} diff --git a/src/main/resources/assets/mxrandom/lang/en_US.lang b/src/main/resources/assets/mxrandom/lang/en_US.lang index f0842ff..7800ea9 100644 --- a/src/main/resources/assets/mxrandom/lang/en_US.lang +++ b/src/main/resources/assets/mxrandom/lang/en_US.lang @@ -1,3 +1 @@ -mxrandom.client.gui.GuiConfigLargeMolecularAssembler.craftingFX=Crafting FX -mxrandom.client.gui.GuiConfigLargeMolecularAssembler.hidden=Hidden -mxrandom.client.gui.GuiConfigLargeMolecularAssembler.visible=Visible +mxrandom.client.gui.craftingfx=Show Crafting Effects diff --git a/src/main/resources/assets/mxrandom/lang/zh_CN.lang b/src/main/resources/assets/mxrandom/lang/zh_CN.lang index 7cf5a50..55d68d0 100644 --- a/src/main/resources/assets/mxrandom/lang/zh_CN.lang +++ b/src/main/resources/assets/mxrandom/lang/zh_CN.lang @@ -1,5 +1,3 @@ tile.mxrandom.largemolecularassembler.name=大型分子装配室 -mxrandom.client.gui.GuiConfigLargeMolecularAssembler.craftingFX=合成FX -mxrandom.client.gui.GuiConfigLargeMolecularAssembler.hidden=隐藏 -mxrandom.client.gui.GuiConfigLargeMolecularAssembler.visible=可见 \ No newline at end of file +mxrandom.client.gui.craftingfx=合成FX diff --git a/src/main/resources/assets/mxrandom/textures/gui/overlay_button/lma_animation_off.png b/src/main/resources/assets/mxrandom/textures/gui/overlay_button/lma_animation_off.png new file mode 100644 index 0000000..71d9d68 Binary files /dev/null and b/src/main/resources/assets/mxrandom/textures/gui/overlay_button/lma_animation_off.png differ diff --git a/src/main/resources/assets/mxrandom/textures/gui/overlay_button/lma_animation_on.png b/src/main/resources/assets/mxrandom/textures/gui/overlay_button/lma_animation_on.png new file mode 100644 index 0000000..d4673d7 Binary files /dev/null and b/src/main/resources/assets/mxrandom/textures/gui/overlay_button/lma_animation_on.png differ