diff --git a/src/README.md b/src/README.md new file mode 100644 index 0000000..b04f5e5 --- /dev/null +++ b/src/README.md @@ -0,0 +1,32 @@ +# WebDisplays for Minecraft 1.12.2 +This is the unfinished port of the WebDisplays mod for Minecraft 1.12.2. The text below is my "TODO" list. + +### Missing features +* Redstone interface +* Server blocks (to store some of the player's web pages) +* Screen upgrade: "laser" mouse +* Screen upgrade: redstone input +* Screen upgrade: redstone output +* Peripheral: ComputerCraft interface +* Peripheral: OpenComputers interface +* Read config (see "Config elements" below) + +### TODO +* Achievements (minePad 2 and all that stuff) +* GuiSetURL2 missing buttons +* Plugin API +* Automatically add protocol to URLs +* Using the remote control tool too far away (with a chunk loader ofc) may trigger distance guard in SMessageScreenCtrl +* Recipes: why do I need to craft first to have them in my crafting book? +* French translations +* Embedded videos sound/distance +* minePad management: check GuiContainer.draggedStack for minePad + +### Config elements +* Site blacklist +* minePad resolution +* Homepage +* RPMP (Real pixels per Minecraft pixels) +* Browser language +* Screen load/unload distance +* Disable ownership thief item diff --git a/src/main/java/net/montoyo/wd/block/BlockScreen.java b/src/main/java/net/montoyo/wd/block/BlockScreen.java index c762029..01401b9 100644 --- a/src/main/java/net/montoyo/wd/block/BlockScreen.java +++ b/src/main/java/net/montoyo/wd/block/BlockScreen.java @@ -68,8 +68,8 @@ public class BlockScreen extends WDBlockContainer { return new ExtendedBlockState(this, properties, sideFlags); } - public static boolean isScreenBlock(IBlockAccess world, Vector3i pos) { - return world.getBlockState(pos.toBlock()).getBlock() instanceof BlockScreen; + public static boolean isntScreenBlock(IBlockAccess world, Vector3i pos) { + return world.getBlockState(pos.toBlock()).getBlock() != WebDisplays.INSTANCE.blockScreen; } @Override @@ -79,10 +79,10 @@ public class BlockScreen extends WDBlockContainer { for(BlockSide side : BlockSide.values()) { int icon = 0; - if(!isScreenBlock(world, side.up.clone().add(pos))) icon |= BAR_TOP; - if(!isScreenBlock(world, side.down.clone().add(pos))) icon |= BAR_BOT; - if(!isScreenBlock(world, side.left.clone().add(pos))) icon |= BAR_LEFT; - if(!isScreenBlock(world, side.right.clone().add(pos))) icon |= BAR_RIGHT; + if(isntScreenBlock(world, side.up.clone().add(pos))) icon |= BAR_TOP; + if(isntScreenBlock(world, side.down.clone().add(pos))) icon |= BAR_BOT; + if(isntScreenBlock(world, side.left.clone().add(pos))) icon |= BAR_LEFT; + if(isntScreenBlock(world, side.right.clone().add(pos))) icon |= BAR_RIGHT; ret = ret.withProperty(sideFlags[side.ordinal()], icon); } diff --git a/src/main/java/net/montoyo/wd/client/gui/GuiScreenConfig.java b/src/main/java/net/montoyo/wd/client/gui/GuiScreenConfig.java index bce5f7f..ab06bee 100644 --- a/src/main/java/net/montoyo/wd/client/gui/GuiScreenConfig.java +++ b/src/main/java/net/montoyo/wd/client/gui/GuiScreenConfig.java @@ -30,7 +30,7 @@ public class GuiScreenConfig extends WDScreen { private boolean waitingAC; private int acFailTicks = -1; - private ArrayList acResults = new ArrayList(); + private ArrayList acResults = new ArrayList<>(); private boolean adding; //Controls 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 4164e96..b9a6ca5 100644 --- a/src/main/java/net/montoyo/wd/client/gui/WDScreen.java +++ b/src/main/java/net/montoyo/wd/client/gui/WDScreen.java @@ -36,8 +36,8 @@ public abstract class WDScreen extends GuiScreen { public static WDScreen CURRENT_SCREEN = null; - protected ArrayList controls = new ArrayList(); - private HashMap, Method> eventMap = new HashMap, Method>(); + protected ArrayList controls = new ArrayList<>(); + private HashMap, Method> eventMap = new HashMap<>(); protected boolean quitOnEscape = true; protected boolean defaultBackground = true; protected int syncTicks = 40; @@ -265,7 +265,7 @@ public abstract class WDScreen extends GuiScreen { if(!root.has("controls") || !root.get("controls").isJsonArray()) throw new RuntimeException("In GUI file " + resLoc.toString() + ": missing root 'controls' object."); - HashMap vars = new HashMap(); + HashMap vars = new HashMap<>(); vars.put("width", (double) width); vars.put("height", (double) height); vars.put("displayWidth", (double) mc.displayWidth); diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/Container.java b/src/main/java/net/montoyo/wd/client/gui/controls/Container.java index c914d18..3a14b74 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/Container.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/Container.java @@ -16,7 +16,7 @@ public abstract class Container extends BasicControl { protected int paddingX = 0; protected int paddingY = 0; - protected ArrayList childs = new ArrayList(); + protected ArrayList childs = new ArrayList<>(); public T addControl(T ctrl) { childs.add(ctrl); diff --git a/src/main/java/net/montoyo/wd/client/gui/controls/List.java b/src/main/java/net/montoyo/wd/client/gui/controls/List.java index dc4d507..4ddb64e 100644 --- a/src/main/java/net/montoyo/wd/client/gui/controls/List.java +++ b/src/main/java/net/montoyo/wd/client/gui/controls/List.java @@ -52,7 +52,7 @@ public class List extends BasicControl { private int width; private int height; - private ArrayList content = new ArrayList(); + private ArrayList content = new ArrayList<>(); private Framebuffer fbo; private int selected = -1; private boolean update; diff --git a/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java b/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java index cfe83c4..722ee86 100644 --- a/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java +++ b/src/main/java/net/montoyo/wd/client/gui/loading/GuiLoader.java @@ -20,8 +20,8 @@ import java.util.HashMap; public class GuiLoader { - private static HashMap> controls = new HashMap>(); - private static HashMap resources = new HashMap(); + private static HashMap> controls = new HashMap<>(); + private static HashMap resources = new HashMap<>(); public static void register(Class cls) { if(Modifier.isAbstract(cls.getModifiers())) diff --git a/src/main/java/net/montoyo/wd/client/gui/loading/JsonOWrapper.java b/src/main/java/net/montoyo/wd/client/gui/loading/JsonOWrapper.java index 18dd435..4a3fc44 100644 --- a/src/main/java/net/montoyo/wd/client/gui/loading/JsonOWrapper.java +++ b/src/main/java/net/montoyo/wd/client/gui/loading/JsonOWrapper.java @@ -17,7 +17,7 @@ import java.util.Map; public class JsonOWrapper { - private static final HashMap defaultColors = new HashMap(); + private static final HashMap defaultColors = new HashMap<>(); static { defaultColors.put("black", Control.COLOR_BLACK); defaultColors.put("white", Control.COLOR_WHITE); @@ -219,7 +219,7 @@ public class JsonOWrapper { } //Parse into ops - ArrayList ops = new ArrayList(); + ArrayList ops = new ArrayList<>(); StringBuilder str = new StringBuilder(); boolean negIsPartOfStr = true; boolean strIsNumber = true; diff --git a/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java b/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java index 674cda4..d4e096a 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java +++ b/src/main/java/net/montoyo/wd/client/renderers/ScreenBaker.java @@ -94,7 +94,7 @@ public class ScreenBaker implements IModelBaker { return noQuads; IExtendedBlockState bs = (IExtendedBlockState) state; - List ret = new ArrayList(); + List ret = new ArrayList<>(); int sid = BlockSide.reverse(side.ordinal()); BlockSide s = blockSides[sid]; diff --git a/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java b/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java index d1082b5..c6abc6b 100644 --- a/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java +++ b/src/main/java/net/montoyo/wd/client/renderers/ScreenRenderer.java @@ -98,13 +98,13 @@ public class ScreenRenderer extends TileEntitySpecialRenderer glPopMatrix(); } - if(false) { - //Bounding box debugging - glPushMatrix(); - glTranslated(-rendererDispatcher.entityX, -rendererDispatcher.entityY, -rendererDispatcher.entityZ); - renderAABB(te.getRenderBoundingBox()); - glPopMatrix(); - } + /* + //Bounding box debugging + glPushMatrix(); + glTranslated(-rendererDispatcher.entityX, -rendererDispatcher.entityY, -rendererDispatcher.entityZ); + renderAABB(te.getRenderBoundingBox()); + glPopMatrix(); + */ //Re-enable lighting RenderHelper.enableStandardItemLighting(); diff --git a/src/main/java/net/montoyo/wd/data/GuiData.java b/src/main/java/net/montoyo/wd/data/GuiData.java index 9b5c128..aaf0b6f 100644 --- a/src/main/java/net/montoyo/wd/data/GuiData.java +++ b/src/main/java/net/montoyo/wd/data/GuiData.java @@ -16,7 +16,7 @@ import java.util.HashMap; public abstract class GuiData { - private static final HashMap> dataTable = new HashMap>(); + private static final HashMap> dataTable = new HashMap<>(); static { dataTable.put("SetURL", SetURLData.class); dataTable.put("ScreenConfig", ScreenConfigData.class); diff --git a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java index 37de24f..51495c9 100644 --- a/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java +++ b/src/main/java/net/montoyo/wd/entity/TileEntityScreen.java @@ -73,7 +73,7 @@ public class TileEntityScreen extends TileEntity { } NBTTagList friends = tag.getTagList("Friends", 10); - ret.friends = new ArrayList(friends.tagCount()); + ret.friends = new ArrayList<>(friends.tagCount()); for(int i = 0; i < friends.tagCount(); i++) { NBTTagCompound nf = friends.getCompoundTagAt(i); @@ -136,7 +136,7 @@ public class TileEntityScreen extends TileEntity { } - private ArrayList screens = new ArrayList(); + private ArrayList screens = new ArrayList<>(); private AxisAlignedBB renderBB = new AxisAlignedBB(0.0, 0.0, 0.0, 1.0, 1.0, 1.0); private boolean loaded = true; public float ytVolume = 100.0f; @@ -199,7 +199,7 @@ public class TileEntityScreen extends TileEntity { ret.side = side; ret.size = size; ret.url = WebDisplays.INSTANCE.homePage; - ret.friends = new ArrayList(); + ret.friends = new ArrayList<>(); ret.friendRights = ScreenRights.DEFAULTS; ret.otherRights = ScreenRights.DEFAULTS; diff --git a/src/main/java/net/montoyo/wd/item/ItemPeripheral.java b/src/main/java/net/montoyo/wd/item/ItemPeripheral.java index 1878099..ea12d85 100644 --- a/src/main/java/net/montoyo/wd/item/ItemPeripheral.java +++ b/src/main/java/net/montoyo/wd/item/ItemPeripheral.java @@ -19,12 +19,7 @@ import net.montoyo.wd.core.DefaultPeripheral; public class ItemPeripheral extends ItemMultiTexture { public ItemPeripheral(Block block) { - super(block, block, new ItemMultiTexture.Mapper() { - @Override - public String apply(ItemStack is) { - return DefaultPeripheral.values()[is.getMetadata()].getName(); - } - }); + super(block, block, (is) -> DefaultPeripheral.values()[is.getMetadata()].getName()); } @Override diff --git a/src/main/java/net/montoyo/wd/net/CMessageACResult.java b/src/main/java/net/montoyo/wd/net/CMessageACResult.java index 10032de..28581a4 100644 --- a/src/main/java/net/montoyo/wd/net/CMessageACResult.java +++ b/src/main/java/net/montoyo/wd/net/CMessageACResult.java @@ -47,8 +47,8 @@ public class CMessageACResult implements IMessage, Runnable { public void toBytes(ByteBuf buf) { buf.writeByte(result.length); - for(int i = 0; i < result.length; i++) - result[i].writeTo(buf); + for(NameUUIDPair pair : result) + pair.writeTo(buf); } @Override diff --git a/src/main/java/net/montoyo/wd/net/Messages.java b/src/main/java/net/montoyo/wd/net/Messages.java index d716dbb..f25fbb8 100644 --- a/src/main/java/net/montoyo/wd/net/Messages.java +++ b/src/main/java/net/montoyo/wd/net/Messages.java @@ -16,7 +16,7 @@ public class Messages { private static DefaultHandler DEFAULT_HANDLER = new DefaultHandler(); private static Class[] messages; static { - ArrayList> l = new ArrayList>(); + ArrayList> l = new ArrayList<>(); l.add(CMessageAddScreen.class); l.add(SMessageRequestTEData.class); l.add(SMessageScreenCtrl.class); diff --git a/src/main/java/net/montoyo/wd/net/SMessageACQuery.java b/src/main/java/net/montoyo/wd/net/SMessageACQuery.java index 722ad26..6978080 100644 --- a/src/main/java/net/montoyo/wd/net/SMessageACQuery.java +++ b/src/main/java/net/montoyo/wd/net/SMessageACQuery.java @@ -62,7 +62,7 @@ public class SMessageACQuery implements IMessage, Runnable { WebDisplays.NET_HANDLER.sendTo(new CMessageACResult(new NameUUIDPair[0]), player); } } else { - ArrayList results = new ArrayList(); + ArrayList results = new ArrayList<>(); for(GameProfile gp : profiles) { if(gp.getName().toLowerCase().startsWith(beginning)) { diff --git a/src/main/java/net/montoyo/wd/utilities/AABB.java b/src/main/java/net/montoyo/wd/utilities/AABB.java index 1ab0713..cd55f02 100644 --- a/src/main/java/net/montoyo/wd/utilities/AABB.java +++ b/src/main/java/net/montoyo/wd/utilities/AABB.java @@ -6,7 +6,7 @@ package net.montoyo.wd.utilities; import net.minecraft.util.math.AxisAlignedBB; -public class AABB { +public final class AABB { public final Vector3i start; public final Vector3i end; diff --git a/src/main/java/net/montoyo/wd/utilities/Log.java b/src/main/java/net/montoyo/wd/utilities/Log.java index a0a0fd1..45442f6 100644 --- a/src/main/java/net/montoyo/wd/utilities/Log.java +++ b/src/main/java/net/montoyo/wd/utilities/Log.java @@ -7,7 +7,7 @@ package net.montoyo.wd.utilities; import net.minecraftforge.fml.common.FMLLog; import org.apache.logging.log4j.Level; -public class Log { +public abstract class Log { public static void info(String what, Object ... data) { FMLLog.log("WebDisplays", Level.INFO, what, data); diff --git a/src/main/java/net/montoyo/wd/utilities/Multiblock.java b/src/main/java/net/montoyo/wd/utilities/Multiblock.java index cf6e8fb..d0a64ec 100644 --- a/src/main/java/net/montoyo/wd/utilities/Multiblock.java +++ b/src/main/java/net/montoyo/wd/utilities/Multiblock.java @@ -8,12 +8,12 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.montoyo.wd.block.BlockScreen; -public class Multiblock { +public abstract class Multiblock { - public static enum OverrideAction { + public enum OverrideAction { NONE, SIMULATE, - IGNORE; + IGNORE } public static class BlockOverride { diff --git a/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java b/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java index b1c4334..5f2aada 100644 --- a/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java +++ b/src/main/java/net/montoyo/wd/utilities/NameUUIDPair.java @@ -10,7 +10,7 @@ import net.minecraftforge.fml.common.network.ByteBufUtils; import java.util.UUID; -public class NameUUIDPair { +public final class NameUUIDPair { public final String name; public final UUID uuid; diff --git a/src/main/java/net/montoyo/wd/utilities/Util.java b/src/main/java/net/montoyo/wd/utilities/Util.java index f793d0e..a197066 100644 --- a/src/main/java/net/montoyo/wd/utilities/Util.java +++ b/src/main/java/net/montoyo/wd/utilities/Util.java @@ -15,7 +15,7 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.Arrays; -public class Util { +public abstract class Util { public static void serialize(ByteBuf bb, Object f) { Class cls = f.getClass(); @@ -38,18 +38,18 @@ public class Util { Object[] ray = (Object[]) f; bb.writeInt(ray.length); - for (int i = 0; i < ray.length; i++) - serialize(bb, ray[i]); + for(Object o: ray) + serialize(bb, o); } else if(!cls.isPrimitive()) { Field[] fields = cls.getFields(); - for(int i = 0; i < fields.length; i++) { + for(Field ff: fields) { try { - if(fields[i].getAnnotation(DontSerialize.class) == null && !Modifier.isStatic(fields[i].getModifiers())) - serialize(bb, fields[i].get(f)); + if(ff.getAnnotation(DontSerialize.class) == null && !Modifier.isStatic(ff.getModifiers())) + serialize(bb, ff.get(f)); } catch(IllegalAccessException e) { e.printStackTrace(); - throw new RuntimeException(String.format("Caught IllegalAccessException for %s.%s", cls.getName(), fields[i].getName())); + throw new RuntimeException(String.format("Caught IllegalAccessException for %s.%s", cls.getName(), ff.getName())); } } } else @@ -92,12 +92,12 @@ public class Util { throw new RuntimeException(String.format("Caught IllegalAccessException for class %s", cls.getName())); } - for(int i = 0; i < fields.length; i++) { + for(Field ff: fields) { try { - if(fields[i].getAnnotation(DontSerialize.class) == null && !Modifier.isStatic(fields[i].getModifiers())) - fields[i].set(ret, unserialize(bb, fields[i].getType())); + if(ff.getAnnotation(DontSerialize.class) == null && !Modifier.isStatic(ff.getModifiers())) + ff.set(ret, unserialize(bb, ff.getType())); } catch(IllegalAccessException e) { - throw new RuntimeException(String.format("Caught IllegalAccessException for %s.%s", cls.getName(), fields[i].getName())); + throw new RuntimeException(String.format("Caught IllegalAccessException for %s.%s", cls.getName(), ff.getName())); } } @@ -123,8 +123,8 @@ public class Util { Object[] ray = (Object[]) f; NBTTagList ret = new NBTTagList(); - for(int i = 0; i < ray.length; i++) - ret.appendTag(serialize(ray[i])); + for(Object o: ray) + ret.appendTag(serialize(o)); return ret; } else @@ -155,7 +155,7 @@ public class Util { } public static String[] commaSplit(String str) { - ArrayList lst = new ArrayList(); + ArrayList lst = new ArrayList<>(); String out = ""; boolean escape = false; diff --git a/src/main/java/net/montoyo/wd/utilities/Vector2i.java b/src/main/java/net/montoyo/wd/utilities/Vector2i.java index 866ae18..1cf0a78 100644 --- a/src/main/java/net/montoyo/wd/utilities/Vector2i.java +++ b/src/main/java/net/montoyo/wd/utilities/Vector2i.java @@ -6,7 +6,7 @@ package net.montoyo.wd.utilities; import io.netty.buffer.ByteBuf; -public class Vector2i { +public final class Vector2i { public int x; public int y; diff --git a/src/main/java/net/montoyo/wd/utilities/Vector3f.java b/src/main/java/net/montoyo/wd/utilities/Vector3f.java index d1dfea5..a31ffd2 100644 --- a/src/main/java/net/montoyo/wd/utilities/Vector3f.java +++ b/src/main/java/net/montoyo/wd/utilities/Vector3f.java @@ -4,7 +4,7 @@ package net.montoyo.wd.utilities; -public class Vector3f { +public final class Vector3f { public float x; public float y; diff --git a/src/main/java/net/montoyo/wd/utilities/Vector3i.java b/src/main/java/net/montoyo/wd/utilities/Vector3i.java index 1602da1..fa9084c 100644 --- a/src/main/java/net/montoyo/wd/utilities/Vector3i.java +++ b/src/main/java/net/montoyo/wd/utilities/Vector3i.java @@ -7,7 +7,7 @@ package net.montoyo.wd.utilities; import io.netty.buffer.ByteBuf; import net.minecraft.util.math.BlockPos; -public class Vector3i { +public final class Vector3i { public int x; public int y;