From c6128dc065fde61a08b8f0bb86fe679a15f256b3 Mon Sep 17 00:00:00 2001 From: Nicolas BARBOTIN Date: Mon, 12 Feb 2018 17:11:13 +0100 Subject: [PATCH] * Updated MCEF API to latest version * Fixed GUIs-not-closing-on-destruction bug --- README.md | 3 +- libs/mcef-1.12.2-0.9-api.jar | Bin 311591 -> 313717 bytes src/main/java/net/montoyo/wd/SharedProxy.java | 4 + .../net/montoyo/wd/block/BlockPeripheral.java | 18 ++++- .../net/montoyo/wd/block/BlockScreen.java | 2 +- .../net/montoyo/wd/client/ClientProxy.java | 14 +++- .../montoyo/wd/client/gui/GuiKeyboard.java | 10 +-- .../net/montoyo/wd/client/gui/GuiMinePad.java | 5 +- .../wd/client/gui/GuiRedstoneCtrl.java | 7 ++ .../wd/client/gui/GuiScreenConfig.java | 10 ++- .../net/montoyo/wd/client/gui/GuiServer.java | 13 +++- .../net/montoyo/wd/client/gui/GuiSetURL2.java | 6 ++ .../net/montoyo/wd/client/gui/WDScreen.java | 9 +++ .../net/montoyo/wd/data/ScreenConfigData.java | 2 +- .../java/net/montoyo/wd/data/ServerData.java | 8 +- .../montoyo/wd/entity/TileEntityScreen.java | 24 ++---- .../montoyo/wd/entity/TileEntityServer.java | 2 +- .../java/net/montoyo/wd/net/Messages.java | 1 + .../wd/net/client/CMessageCloseGui.java | 71 ++++++++++++++++++ .../net/montoyo/wd/utilities/Vector3i.java | 4 + 20 files changed, 167 insertions(+), 46 deletions(-) create mode 100644 src/main/java/net/montoyo/wd/net/client/CMessageCloseGui.java diff --git a/README.md b/README.md index 36df641..6ceb821 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,6 @@ This is the unfinished port of the WebDisplays mod for Minecraft 1.12.2. The text below is my "TODO" list. ### Bugs to fix -* Memory leak (screens aren't deleted?!?) -* GUIs are not closed blocks gets destroyed * Remove remaining printed debug infos and check for TODOs ### Things before release @@ -21,3 +19,4 @@ This is the unfinished port of the WebDisplays mod for Minecraft 1.12.2. The tex * minePad management: check GuiContainer.draggedStack for minePad * In-game command to add/remove blacklisted domains * Config: RPMP (Real pixels per Minecraft pixels) +* Disable miniserv in solo diff --git a/libs/mcef-1.12.2-0.9-api.jar b/libs/mcef-1.12.2-0.9-api.jar index 60ffc723da71a545bd9654f7af68eeae8095b781..0a8686b1a02f15a80ed0e70dc6eb24a3ed56eecb 100644 GIT binary patch delta 37834 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 delta 35500 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%0A9x-Gsmc$NVQo;& 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 eoV-p4IGP+G1;If=vKzG lines = new ArrayList<>(); private String prompt = ""; @@ -68,7 +68,8 @@ public class GuiServer extends WDScreen { private String uploadFilter = ""; private long uploadFilterTime; - public GuiServer(NameUUIDPair owner) { + public GuiServer(Vector3i vec, NameUUIDPair owner) { + serverPos = vec; this.owner = owner; //userPrompt = owner.name + "@miniserv$ "; userPrompt = "> "; @@ -695,4 +696,8 @@ public class GuiServer extends WDScreen { writeLine(tr("upload.uploading")); } + @Override + public boolean isForBlock(BlockPos bp, BlockSide side) { + return serverPos.equalsBlockPos(bp); + } } diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java b/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java index ddbd2cc..f475927 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiSetURL2.java @@ -7,6 +7,7 @@ package net.montoyo.wd.client.gui; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumHand; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; import net.montoyo.mcef.api.IBrowser; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.client.ClientProxy; @@ -112,4 +113,9 @@ public class GuiSetURL2 extends WDScreen { mc.displayGuiScreen(null); } + @Override + public boolean isForBlock(BlockPos bp, BlockSide side) { + return (remoteLocation != null && remoteLocation.equalsBlockPos(bp)) || (bp.equals(tileEntity.getPos()) && side == screenSide); + } + } diff --git a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java index 3993ffe..0bf9b04 100644 --- a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java +++ b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java @@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.BlockPos; import net.montoyo.wd.WebDisplays; import net.montoyo.wd.client.gui.controls.Container; import net.montoyo.wd.client.gui.controls.Control; @@ -19,6 +20,7 @@ import net.montoyo.wd.client.gui.loading.FillControl; import net.montoyo.wd.client.gui.loading.GuiLoader; import net.montoyo.wd.client.gui.loading.JsonOWrapper; import net.montoyo.wd.net.server.SMessageACQuery; +import net.montoyo.wd.utilities.BlockSide; import net.montoyo.wd.utilities.Log; import net.montoyo.wd.utilities.NameUUIDPair; import org.lwjgl.input.Keyboard; @@ -364,4 +366,11 @@ public abstract class WDScreen extends GuiScreen { postDrawList.add(ctrl); } + @Override + public boolean doesGuiPauseGame() { + return false; + } + + public abstract boolean isForBlock(BlockPos bp, BlockSide side); + } diff --git a/src/main/java/net/montoyo/wd/data/ScreenConfigData.java b/src/main/java/net/montoyo/wd/data/ScreenConfigData.java index 9fd7bda..428c926 100644 --- a/src/main/java/net/montoyo/wd/data/ScreenConfigData.java +++ b/src/main/java/net/montoyo/wd/data/ScreenConfigData.java @@ -46,7 +46,7 @@ public class ScreenConfigData extends GuiData { if(old != null && old instanceof GuiScreenConfig) { GuiScreenConfig gsc = (GuiScreenConfig) old; - if(gsc.isScreen(pos, side)) { + if(gsc.isForBlock(pos.toBlock(), side)) { gsc.updateFriends(friends); gsc.updateFriendRights(friendRights); gsc.updateOtherRights(otherRights); diff --git a/src/main/java/net/montoyo/wd/data/ServerData.java b/src/main/java/net/montoyo/wd/data/ServerData.java index b23be03..7471637 100644 --- a/src/main/java/net/montoyo/wd/data/ServerData.java +++ b/src/main/java/net/montoyo/wd/data/ServerData.java @@ -5,27 +5,31 @@ package net.montoyo.wd.data; import net.minecraft.client.gui.GuiScreen; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.montoyo.wd.client.gui.GuiServer; import net.montoyo.wd.utilities.NameUUIDPair; +import net.montoyo.wd.utilities.Vector3i; public class ServerData extends GuiData { + public Vector3i pos; public NameUUIDPair owner; public ServerData() { } - public ServerData(NameUUIDPair owner) { + public ServerData(BlockPos bp, NameUUIDPair owner) { + pos = new Vector3i(bp); this.owner = owner; } @SideOnly(Side.CLIENT) @Override public GuiScreen createGui(GuiScreen old, World world) { - return new GuiServer(owner); + return new GuiServer(pos, owner); } @Override diff --git a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java index 1c6c87a..d6f6254 100644 --- a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java +++ b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java @@ -27,6 +27,7 @@ import net.montoyo.wd.core.JSServerRequest; import net.montoyo.wd.core.ScreenRights; import net.montoyo.wd.data.ScreenConfigData; import net.montoyo.wd.net.client.CMessageAddScreen; +import net.montoyo.wd.net.client.CMessageCloseGui; import net.montoyo.wd.net.client.CMessageJSResponse; import net.montoyo.wd.net.client.CMessageScreenUpdate; import net.montoyo.wd.net.server.SMessageRequestTEData; @@ -688,14 +689,6 @@ public class TileEntityScreen extends TileEntity { } } - /*@Override - public void validate() { - super.validate(); - - if(world.isRemote) - Log.info("===> TES( VALIDATE) %s", pos.toString()); - }*/ - @Override public void invalidate() { super.invalidate(); @@ -844,7 +837,7 @@ public class TileEntityScreen extends TileEntity { } IUpgrade itemAsUpgrade = (IUpgrade) is.getItem(); - if(abortIfExisting && scr.upgrades.stream().anyMatch((otherStack) -> itemAsUpgrade.isSameUpgrade(is, otherStack))) + if(abortIfExisting && scr.upgrades.stream().anyMatch(otherStack -> itemAsUpgrade.isSameUpgrade(is, otherStack))) return false; //Upgrade already exists ItemStack isCopy = is.copy(); //FIXME: Duct tape fix, because the original stack will be shrinked @@ -867,7 +860,7 @@ public class TileEntityScreen extends TileEntity { return false; IUpgrade itemAsUpgrade = (IUpgrade) is.getItem(); - return scr.upgrades.stream().anyMatch((otherStack) -> itemAsUpgrade.isSameUpgrade(is, otherStack)); + return scr.upgrades.stream().anyMatch(otherStack -> itemAsUpgrade.isSameUpgrade(is, otherStack)); } public boolean hasUpgrade(BlockSide side, DefaultUpgrade du) { @@ -950,10 +943,6 @@ public class TileEntityScreen extends TileEntity { } public void laserDownMove(BlockSide side, EntityPlayer ply, Vector2i pos, boolean down) { - //System.out.println("called laser" + (down ? "Down" : "Move")); - if(down) - System.out.println("called laserDown"); - Screen scr = getScreenForLaserOp(side, ply); if(scr != null) { @@ -969,7 +958,6 @@ public class TileEntityScreen extends TileEntity { } public void laserUp(BlockSide side, EntityPlayer ply) { - System.out.println("called laserUp"); Screen scr = getScreenForLaserOp(side, ply); if(scr != null) { @@ -982,11 +970,11 @@ public class TileEntityScreen extends TileEntity { public void onDestroy(@Nullable EntityPlayer ply) { for(Screen scr: screens) { - for(ItemStack is: scr.upgrades) - dropUpgrade(is, scr.side, ply); - + scr.upgrades.forEach(is -> dropUpgrade(is, scr.side, ply)); scr.upgrades.clear(); } + + WebDisplays.NET_HANDLER.sendToAllAround(new CMessageCloseGui(pos), point()); } public void setOwner(BlockSide side, EntityPlayer newOwner) { diff --git a/src/main/java/net/montoyo/wd/entity/TileEntityServer.java b/src/main/java/net/montoyo/wd/entity/TileEntityServer.java index f9acb36..a133c74 100644 --- a/src/main/java/net/montoyo/wd/entity/TileEntityServer.java +++ b/src/main/java/net/montoyo/wd/entity/TileEntityServer.java @@ -44,7 +44,7 @@ public class TileEntityServer extends TileEntity { if(WebDisplays.INSTANCE.miniservPort == 0) Util.toast(ply, "noMiniserv"); else if(owner != null && ply instanceof EntityPlayerMP) - (new ServerData(owner)).sendTo((EntityPlayerMP) ply); + (new ServerData(pos, owner)).sendTo((EntityPlayerMP) ply); return true; } diff --git a/src/main/java/net/montoyo/wd/net/Messages.java b/src/main/java/net/montoyo/wd/net/Messages.java index 15e5910..e74b43e 100644 --- a/src/main/java/net/montoyo/wd/net/Messages.java +++ b/src/main/java/net/montoyo/wd/net/Messages.java @@ -32,6 +32,7 @@ public abstract class Messages { l.add(SMessageMiniservConnect.class); l.add(CMessageMiniservKey.class); l.add(CMessageServerInfo.class); + l.add(CMessageCloseGui.class); messages = l.toArray(new Class[0]); } diff --git a/src/main/java/net/montoyo/wd/net/client/CMessageCloseGui.java b/src/main/java/net/montoyo/wd/net/client/CMessageCloseGui.java new file mode 100644 index 0000000..cf1f884 --- /dev/null +++ b/src/main/java/net/montoyo/wd/net/client/CMessageCloseGui.java @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2018 BARBOTIN Nicolas + */ + +package net.montoyo.wd.net.client; + +import io.netty.buffer.ByteBuf; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.fml.relauncher.Side; +import net.montoyo.wd.WebDisplays; +import net.montoyo.wd.net.Message; +import net.montoyo.wd.utilities.BlockSide; + +import java.util.Arrays; + +@Message(messageId = 13, side = Side.CLIENT) +public class CMessageCloseGui implements IMessage, Runnable { + + private BlockPos blockPos; + private BlockSide blockSide; + + public CMessageCloseGui() { + } + + public CMessageCloseGui(BlockPos bp) { + blockPos = bp; + blockSide = null; + } + + public CMessageCloseGui(BlockPos bp, BlockSide side) { + blockPos = bp; + blockSide = side; + } + + @Override + public void fromBytes(ByteBuf buf) { + int x, y, z, side; + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + side = buf.readByte(); + + blockPos = new BlockPos(x, y, z); + if(side <= 0) + blockSide = null; + else + blockSide = BlockSide.values()[side - 1]; + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(blockPos.getX()); + buf.writeInt(blockPos.getY()); + buf.writeInt(blockPos.getZ()); + + if(blockSide == null) + buf.writeByte(0); + else + buf.writeByte(blockSide.ordinal() + 1); + } + + @Override + public void run() { + if(blockSide == null) + Arrays.stream(BlockSide.values()).forEach(s -> WebDisplays.PROXY.closeGui(blockPos, s)); + else + WebDisplays.PROXY.closeGui(blockPos, blockSide); + } + +} diff --git a/src/main/java/net/montoyo/wd/utilities/Vector3i.java b/src/main/java/net/montoyo/wd/utilities/Vector3i.java index 75eea3e..07bf127 100644 --- a/src/main/java/net/montoyo/wd/utilities/Vector3i.java +++ b/src/main/java/net/montoyo/wd/utilities/Vector3i.java @@ -63,6 +63,10 @@ public final class Vector3i { return false; } + public boolean equalsBlockPos(BlockPos bp) { + return bp.getX() == x && bp.getY() == y && bp.getZ() == z; + } + @Override public String toString() { return "X: " + x + ", Y: " + y + ", Z: " + z;