From f23a8ed0071571f7c8d0dd8983e12cdda3c5ed69 Mon Sep 17 00:00:00 2001 From: Lukas Schmid Date: Sun, 2 Dec 2018 11:27:51 +0100 Subject: [PATCH 1/3] Initial commit --- .gitignore | 22 + CREDITS-fml.txt | 28 + LICENSE-new.txt | 483 + MinecraftForge-Credits.txt | 26 + Paulscode IBXM Library License.txt | 10 + Paulscode SoundSystem CodecIBXM License.txt | 40 + README.txt | 62 + build.gradle | 76 + forge-1.12.2-14.23.4.2705-changelog.txt | 13829 ++++++++++++++++ gradle.properties | 3 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 52271 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 + gradlew.bat | 90 + .../shinyhut/vernacular/VernacularViewer.java | 264 + .../vernacular/client/ClientEventHandler.java | 130 + .../vernacular/client/ServerEventHandler.java | 82 + .../vernacular/client/VernacularClient.java | 169 + .../vernacular/client/VernacularConfig.java | 141 + .../vernacular/client/VncSession.java | 99 + .../AuthenticationFailedException.java | 16 + .../AuthenticationRequiredException.java | 8 + .../HandshakingFailedException.java | 16 + .../exceptions/InvalidMessageException.java | 18 + .../NoSupportedSecurityTypesException.java | 9 + .../exceptions/UnexpectedVncException.java | 9 + .../UnknownMessageTypeException.java | 19 + .../UnsupportedEncodingException.java | 18 + .../UnsupportedProtocolVersionException.java | 37 + .../client/exceptions/VncException.java | 20 + .../client/rendering/ColorDepth.java | 65 + .../client/rendering/Framebuffer.java | 72 + .../rendering/renderers/CopyRectRenderer.java | 31 + .../client/rendering/renderers/Pixel.java | 26 + .../rendering/renderers/PixelDecoder.java | 26 + .../rendering/renderers/RRERenderer.java | 57 + .../rendering/renderers/RawRenderer.java | 40 + .../client/rendering/renderers/Renderer.java | 11 + .../protocol/auth/NoSecurityHandler.java | 16 + .../protocol/auth/SecurityHandler.java | 10 + .../auth/VncAuthenticationHandler.java | 75 + .../protocol/handshaking/Handshaker.java | 32 + .../ProtocolVersionNegotiator.java | 28 + .../handshaking/SecurityTypeNegotiator.java | 33 + .../protocol/initialization/Initializer.java | 50 + .../vernacular/protocol/messages/Bell.java | 14 + .../protocol/messages/ClientInit.java | 22 + .../protocol/messages/Encodable.java | 8 + .../protocol/messages/Encoding.java | 31 + .../protocol/messages/ErrorMessage.java | 28 + .../protocol/messages/FramebufferUpdate.java | 33 + .../messages/FramebufferUpdateRequest.java | 34 + .../protocol/messages/KeyEvent.java | 26 + .../protocol/messages/PixelFormat.java | 103 + .../protocol/messages/PointerEvent.java | 39 + .../protocol/messages/ProtocolVersion.java | 52 + .../protocol/messages/Rectangle.java | 89 + .../protocol/messages/SecurityResult.java | 44 + .../protocol/messages/SecurityType.java | 8 + .../protocol/messages/ServerCutText.java | 29 + .../protocol/messages/ServerInit.java | 49 + .../messages/ServerSecurityTypes.java | 43 + .../protocol/messages/SetEncodings.java | 29 + .../protocol/messages/SetPixelFormat.java | 20 + .../shinyhut/vernacular/utils/ByteUtils.java | 23 + .../shinyhut/vernacular/utils/KeySyms.java | 55 + .../java/li/netcube/mcvm/CommonProxy.java | 86 + src/main/java/li/netcube/mcvm/MCVM.java | 277 + .../java/li/netcube/mcvm/UsedUidData.java | 102 + .../mcvm/client/creativeTabs/MCVM.java | 65 + .../client/rendering/renderEventHandler.java | 21 + .../li/netcube/mcvm/client/ui/DisplayGUI.java | 321 + .../li/netcube/mcvm/common/blocks/Blocks.java | 9 + .../mcvm/common/blocks/ComputerBlock.java | 231 + .../mcvm/common/blocks/DisplayBlock.java | 145 + .../netcube/mcvm/common/items/ItemBasic.java | 13 + .../li/netcube/mcvm/common/items/Items.java | 49 + .../mcvm/common/items/NetworkCard.java | 50 + .../mcvm/common/items/VMStorageItem.java | 128 + .../mcvm/common/ui/ComputerContainer.java | 125 + .../mcvm/common/ui/ComputerContainerGUI.java | 111 + .../ui/ComputerContainerTileEntity.java | 333 + .../netcube/mcvm/common/ui/ComputerSlot.java | 32 + .../li/netcube/mcvm/common/ui/GuiProxy.java | 31 + .../mcvm/common/ui/TexturedButton.java | 89 + .../mcvm/server/commands/createCD.java | 49 + .../mcvm/server/commands/createFLOPPY.java | 50 + .../mcvm/server/commands/createHDD.java | 48 + .../netcube/mcvm/util/FileDeleteHelper.java | 15 + .../netcube/mcvm/util/FileDownloadHelper.java | 215 + .../java/li/netcube/mcvm/util/IniFile.java | 79 + .../netcube/mcvm/util/ProgressBarWindow.java | 69 + .../li/netcube/mcvm/util/UnZipHelper.java | 90 + .../netcube/mcvm/util/VMControlMessage.java | 33 + .../mcvm/util/VMControlMessageHandler.java | 95 + .../mcvm/util/tcpClient/TCPClient.java | 25 + .../netcube/mcvm/util/vm/MachineManager.java | 90 + .../netcube/mcvm/util/vm/VirtualMachine.java | 342 + .../mcvm/util/vm/commands/ICommandParser.java | 8 + .../vm/commands/RedstoneCommandParser.java | 117 + .../java/li/netcube/mcvm/util/vnc/Keymap.java | 165 + .../assets/mcvm/blockstates/computer.json | 35 + .../assets/mcvm/blockstates/display.json | 20 + .../resources/assets/mcvm/lang/en_us.lang | 21 + .../assets/mcvm/models/block/computer.json | 12 + .../assets/mcvm/models/block/computer_on.json | 12 + .../assets/mcvm/models/block/display.json | 12 + .../assets/mcvm/models/item/cddrive.json | 19 + .../assets/mcvm/models/item/cdrom.json | 19 + .../assets/mcvm/models/item/computer.json | 3 + .../assets/mcvm/models/item/cpu.json | 19 + .../assets/mcvm/models/item/diskplatter.json | 19 + .../assets/mcvm/models/item/display.json | 3 + .../assets/mcvm/models/item/floppy.json | 19 + .../assets/mcvm/models/item/floppydrive.json | 19 + .../assets/mcvm/models/item/harddisk.json | 19 + .../resources/assets/mcvm/models/item/ic.json | 19 + .../assets/mcvm/models/item/ic2.json | 19 + .../assets/mcvm/models/item/ic3.json | 19 + .../assets/mcvm/models/item/mainboard.json | 19 + .../assets/mcvm/models/item/memory1.json | 19 + .../assets/mcvm/models/item/memory2.json | 19 + .../assets/mcvm/models/item/nic_e1000.json | 19 + .../assets/mcvm/models/item/nic_ne2k.json | 19 + .../assets/mcvm/models/item/nic_rtl8139.json | 19 + .../assets/mcvm/models/item/pcb.json | 19 + .../assets/mcvm/recipes/alpinecd.json | 27 + .../assets/mcvm/recipes/cddrive.json | 23 + .../assets/mcvm/recipes/computer.json | 23 + .../resources/assets/mcvm/recipes/cpu.json | 20 + .../assets/mcvm/recipes/diskplatter.json | 14 + .../assets/mcvm/recipes/display.json | 35 + .../resources/assets/mcvm/recipes/floppy.json | 29 + .../assets/mcvm/recipes/floppydrive.json | 23 + .../assets/mcvm/recipes/hdd128gb.json | 32 + .../assets/mcvm/recipes/hdd16gb.json | 29 + .../assets/mcvm/recipes/hdd32gb.json | 32 + .../resources/assets/mcvm/recipes/hdd4gb.json | 29 + .../assets/mcvm/recipes/hdd64gb.json | 29 + .../resources/assets/mcvm/recipes/hdd8gb.json | 32 + .../resources/assets/mcvm/recipes/ic.json | 23 + .../resources/assets/mcvm/recipes/ic2.json | 23 + .../resources/assets/mcvm/recipes/ic3.json | 20 + .../assets/mcvm/recipes/mainboard.json | 20 + .../assets/mcvm/recipes/memory1.json | 20 + .../assets/mcvm/recipes/memory2.json | 20 + .../assets/mcvm/recipes/nic_e1000.json | 20 + .../assets/mcvm/recipes/nic_ne2k.json | 20 + .../assets/mcvm/recipes/nic_rtl8139.json | 20 + .../resources/assets/mcvm/recipes/pcb.json | 20 + .../mcvm/textures/blocks/computer_back.png | Bin 0 -> 973 bytes .../mcvm/textures/blocks/computer_back_on.png | Bin 0 -> 963 bytes .../mcvm/textures/blocks/computer_front.png | Bin 0 -> 1100 bytes .../textures/blocks/computer_front_on.png | Bin 0 -> 1103 bytes .../mcvm/textures/blocks/computer_side.png | Bin 0 -> 1072 bytes .../mcvm/textures/blocks/computer_side_on.png | Bin 0 -> 1077 bytes .../mcvm/textures/blocks/computer_top.png | Bin 0 -> 960 bytes .../mcvm/textures/blocks/display_back.png | Bin 0 -> 947 bytes .../mcvm/textures/blocks/display_front.png | Bin 0 -> 1489 bytes .../mcvm/textures/blocks/display_front_on.png | Bin 0 -> 1975 bytes .../mcvm/textures/blocks/display_side.png | Bin 0 -> 1073 bytes .../assets/mcvm/textures/gui/computer.png | Bin 0 -> 5918 bytes .../assets/mcvm/textures/gui/display.png | Bin 0 -> 2808 bytes .../assets/mcvm/textures/gui/logo.png | Bin 0 -> 43638 bytes .../assets/mcvm/textures/items/cddrive.png | Bin 0 -> 479 bytes .../assets/mcvm/textures/items/cdrom.png | Bin 0 -> 417 bytes .../assets/mcvm/textures/items/cpu.png | Bin 0 -> 360 bytes .../mcvm/textures/items/diskplatter.png | Bin 0 -> 208 bytes .../assets/mcvm/textures/items/floppy.png | Bin 0 -> 413 bytes .../mcvm/textures/items/floppydrive.png | Bin 0 -> 481 bytes .../assets/mcvm/textures/items/harddisk.png | Bin 0 -> 425 bytes .../assets/mcvm/textures/items/ic.png | Bin 0 -> 215 bytes .../assets/mcvm/textures/items/ic2.png | Bin 0 -> 236 bytes .../assets/mcvm/textures/items/ic3.png | Bin 0 -> 247 bytes .../assets/mcvm/textures/items/mainboard.png | Bin 0 -> 521 bytes .../assets/mcvm/textures/items/memory1.png | Bin 0 -> 322 bytes .../assets/mcvm/textures/items/memory2.png | Bin 0 -> 281 bytes .../assets/mcvm/textures/items/nic.png | Bin 0 -> 388 bytes .../assets/mcvm/textures/items/pcb.png | Bin 0 -> 280 bytes src/main/resources/mcmod.info | 16 + src/main/resources/pack.mcmeta | 7 + 181 files changed, 22000 insertions(+) create mode 100755 .gitignore create mode 100755 CREDITS-fml.txt create mode 100755 LICENSE-new.txt create mode 100755 MinecraftForge-Credits.txt create mode 100755 Paulscode IBXM Library License.txt create mode 100755 Paulscode SoundSystem CodecIBXM License.txt create mode 100755 README.txt create mode 100755 build.gradle create mode 100755 forge-1.12.2-14.23.4.2705-changelog.txt create mode 100755 gradle.properties create mode 100755 gradle/wrapper/gradle-wrapper.jar create mode 100755 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100755 gradlew.bat create mode 100755 src/main/java/com/shinyhut/vernacular/VernacularViewer.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/ClientEventHandler.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/ServerEventHandler.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/VernacularClient.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/VernacularConfig.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/VncSession.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationFailedException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationRequiredException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/HandshakingFailedException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/InvalidMessageException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/NoSupportedSecurityTypesException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/UnexpectedVncException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/UnknownMessageTypeException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedEncodingException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedProtocolVersionException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/exceptions/VncException.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/ColorDepth.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/Framebuffer.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/renderers/CopyRectRenderer.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Pixel.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/renderers/PixelDecoder.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RRERenderer.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RawRenderer.java create mode 100755 src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Renderer.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/auth/NoSecurityHandler.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/auth/SecurityHandler.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/auth/VncAuthenticationHandler.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/handshaking/Handshaker.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/handshaking/ProtocolVersionNegotiator.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/handshaking/SecurityTypeNegotiator.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/initialization/Initializer.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/Bell.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/ClientInit.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/Encodable.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/Encoding.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/ErrorMessage.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdate.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdateRequest.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/KeyEvent.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/PixelFormat.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/PointerEvent.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/ProtocolVersion.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/Rectangle.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityResult.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityType.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/ServerCutText.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/ServerInit.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/ServerSecurityTypes.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/SetEncodings.java create mode 100755 src/main/java/com/shinyhut/vernacular/protocol/messages/SetPixelFormat.java create mode 100755 src/main/java/com/shinyhut/vernacular/utils/ByteUtils.java create mode 100755 src/main/java/com/shinyhut/vernacular/utils/KeySyms.java create mode 100755 src/main/java/li/netcube/mcvm/CommonProxy.java create mode 100755 src/main/java/li/netcube/mcvm/MCVM.java create mode 100755 src/main/java/li/netcube/mcvm/UsedUidData.java create mode 100755 src/main/java/li/netcube/mcvm/client/creativeTabs/MCVM.java create mode 100755 src/main/java/li/netcube/mcvm/client/rendering/renderEventHandler.java create mode 100755 src/main/java/li/netcube/mcvm/client/ui/DisplayGUI.java create mode 100755 src/main/java/li/netcube/mcvm/common/blocks/Blocks.java create mode 100755 src/main/java/li/netcube/mcvm/common/blocks/ComputerBlock.java create mode 100755 src/main/java/li/netcube/mcvm/common/blocks/DisplayBlock.java create mode 100755 src/main/java/li/netcube/mcvm/common/items/ItemBasic.java create mode 100755 src/main/java/li/netcube/mcvm/common/items/Items.java create mode 100755 src/main/java/li/netcube/mcvm/common/items/NetworkCard.java create mode 100755 src/main/java/li/netcube/mcvm/common/items/VMStorageItem.java create mode 100755 src/main/java/li/netcube/mcvm/common/ui/ComputerContainer.java create mode 100755 src/main/java/li/netcube/mcvm/common/ui/ComputerContainerGUI.java create mode 100755 src/main/java/li/netcube/mcvm/common/ui/ComputerContainerTileEntity.java create mode 100755 src/main/java/li/netcube/mcvm/common/ui/ComputerSlot.java create mode 100755 src/main/java/li/netcube/mcvm/common/ui/GuiProxy.java create mode 100755 src/main/java/li/netcube/mcvm/common/ui/TexturedButton.java create mode 100755 src/main/java/li/netcube/mcvm/server/commands/createCD.java create mode 100755 src/main/java/li/netcube/mcvm/server/commands/createFLOPPY.java create mode 100755 src/main/java/li/netcube/mcvm/server/commands/createHDD.java create mode 100755 src/main/java/li/netcube/mcvm/util/FileDeleteHelper.java create mode 100755 src/main/java/li/netcube/mcvm/util/FileDownloadHelper.java create mode 100755 src/main/java/li/netcube/mcvm/util/IniFile.java create mode 100755 src/main/java/li/netcube/mcvm/util/ProgressBarWindow.java create mode 100755 src/main/java/li/netcube/mcvm/util/UnZipHelper.java create mode 100755 src/main/java/li/netcube/mcvm/util/VMControlMessage.java create mode 100755 src/main/java/li/netcube/mcvm/util/VMControlMessageHandler.java create mode 100755 src/main/java/li/netcube/mcvm/util/tcpClient/TCPClient.java create mode 100755 src/main/java/li/netcube/mcvm/util/vm/MachineManager.java create mode 100755 src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java create mode 100755 src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java create mode 100755 src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java create mode 100755 src/main/java/li/netcube/mcvm/util/vnc/Keymap.java create mode 100755 src/main/resources/assets/mcvm/blockstates/computer.json create mode 100755 src/main/resources/assets/mcvm/blockstates/display.json create mode 100755 src/main/resources/assets/mcvm/lang/en_us.lang create mode 100755 src/main/resources/assets/mcvm/models/block/computer.json create mode 100755 src/main/resources/assets/mcvm/models/block/computer_on.json create mode 100755 src/main/resources/assets/mcvm/models/block/display.json create mode 100755 src/main/resources/assets/mcvm/models/item/cddrive.json create mode 100755 src/main/resources/assets/mcvm/models/item/cdrom.json create mode 100755 src/main/resources/assets/mcvm/models/item/computer.json create mode 100755 src/main/resources/assets/mcvm/models/item/cpu.json create mode 100755 src/main/resources/assets/mcvm/models/item/diskplatter.json create mode 100755 src/main/resources/assets/mcvm/models/item/display.json create mode 100755 src/main/resources/assets/mcvm/models/item/floppy.json create mode 100755 src/main/resources/assets/mcvm/models/item/floppydrive.json create mode 100755 src/main/resources/assets/mcvm/models/item/harddisk.json create mode 100755 src/main/resources/assets/mcvm/models/item/ic.json create mode 100755 src/main/resources/assets/mcvm/models/item/ic2.json create mode 100755 src/main/resources/assets/mcvm/models/item/ic3.json create mode 100755 src/main/resources/assets/mcvm/models/item/mainboard.json create mode 100755 src/main/resources/assets/mcvm/models/item/memory1.json create mode 100755 src/main/resources/assets/mcvm/models/item/memory2.json create mode 100755 src/main/resources/assets/mcvm/models/item/nic_e1000.json create mode 100755 src/main/resources/assets/mcvm/models/item/nic_ne2k.json create mode 100755 src/main/resources/assets/mcvm/models/item/nic_rtl8139.json create mode 100755 src/main/resources/assets/mcvm/models/item/pcb.json create mode 100755 src/main/resources/assets/mcvm/recipes/alpinecd.json create mode 100755 src/main/resources/assets/mcvm/recipes/cddrive.json create mode 100755 src/main/resources/assets/mcvm/recipes/computer.json create mode 100755 src/main/resources/assets/mcvm/recipes/cpu.json create mode 100755 src/main/resources/assets/mcvm/recipes/diskplatter.json create mode 100755 src/main/resources/assets/mcvm/recipes/display.json create mode 100755 src/main/resources/assets/mcvm/recipes/floppy.json create mode 100755 src/main/resources/assets/mcvm/recipes/floppydrive.json create mode 100755 src/main/resources/assets/mcvm/recipes/hdd128gb.json create mode 100755 src/main/resources/assets/mcvm/recipes/hdd16gb.json create mode 100755 src/main/resources/assets/mcvm/recipes/hdd32gb.json create mode 100755 src/main/resources/assets/mcvm/recipes/hdd4gb.json create mode 100755 src/main/resources/assets/mcvm/recipes/hdd64gb.json create mode 100755 src/main/resources/assets/mcvm/recipes/hdd8gb.json create mode 100755 src/main/resources/assets/mcvm/recipes/ic.json create mode 100755 src/main/resources/assets/mcvm/recipes/ic2.json create mode 100755 src/main/resources/assets/mcvm/recipes/ic3.json create mode 100755 src/main/resources/assets/mcvm/recipes/mainboard.json create mode 100755 src/main/resources/assets/mcvm/recipes/memory1.json create mode 100755 src/main/resources/assets/mcvm/recipes/memory2.json create mode 100755 src/main/resources/assets/mcvm/recipes/nic_e1000.json create mode 100755 src/main/resources/assets/mcvm/recipes/nic_ne2k.json create mode 100755 src/main/resources/assets/mcvm/recipes/nic_rtl8139.json create mode 100755 src/main/resources/assets/mcvm/recipes/pcb.json create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_back.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_back_on.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_front.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_front_on.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_side.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_side_on.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/computer_top.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/display_back.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/display_front.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/display_front_on.png create mode 100755 src/main/resources/assets/mcvm/textures/blocks/display_side.png create mode 100755 src/main/resources/assets/mcvm/textures/gui/computer.png create mode 100755 src/main/resources/assets/mcvm/textures/gui/display.png create mode 100755 src/main/resources/assets/mcvm/textures/gui/logo.png create mode 100755 src/main/resources/assets/mcvm/textures/items/cddrive.png create mode 100755 src/main/resources/assets/mcvm/textures/items/cdrom.png create mode 100755 src/main/resources/assets/mcvm/textures/items/cpu.png create mode 100755 src/main/resources/assets/mcvm/textures/items/diskplatter.png create mode 100755 src/main/resources/assets/mcvm/textures/items/floppy.png create mode 100755 src/main/resources/assets/mcvm/textures/items/floppydrive.png create mode 100755 src/main/resources/assets/mcvm/textures/items/harddisk.png create mode 100755 src/main/resources/assets/mcvm/textures/items/ic.png create mode 100755 src/main/resources/assets/mcvm/textures/items/ic2.png create mode 100755 src/main/resources/assets/mcvm/textures/items/ic3.png create mode 100755 src/main/resources/assets/mcvm/textures/items/mainboard.png create mode 100755 src/main/resources/assets/mcvm/textures/items/memory1.png create mode 100755 src/main/resources/assets/mcvm/textures/items/memory2.png create mode 100755 src/main/resources/assets/mcvm/textures/items/nic.png create mode 100755 src/main/resources/assets/mcvm/textures/items/pcb.png create mode 100755 src/main/resources/mcmod.info create mode 100755 src/main/resources/pack.mcmeta diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..2c770e0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +# eclipse +bin +*.launch +.settings +.metadata +.classpath +.project + +# idea +out +*.ipr +*.iws +*.iml +.idea + +# gradle +build +.gradle + +# other +eclipse +run diff --git a/CREDITS-fml.txt b/CREDITS-fml.txt new file mode 100755 index 0000000..97122f5 --- /dev/null +++ b/CREDITS-fml.txt @@ -0,0 +1,28 @@ +This is Forge Mod Loader. + +You can find the source code at all times at https://github.com/MinecraftForge/FML + +This minecraft mod is a clean open source implementation of a mod loader for minecraft servers +and minecraft clients. + +The code is authored by cpw. + +It began by partially implementing an API defined by the client side ModLoader, authored by Risugami. +http://www.minecraftforum.net/topic/75440- +This support has been dropped as of Minecraft release 1.7, as Risugami no longer maintains ModLoader. + +It also contains suggestions and hints and generous helpings of code from LexManos, author of MinecraftForge. +http://www.minecraftforge.net/ + +Additionally, it contains an implementation of topological sort based on that +published at http://keithschwarz.com/interesting/code/?dir=topological-sort + +It also contains code from the Maven project for performing versioned dependency +resolution. http://maven.apache.org/ + +It also contains a partial repackaging of the javaxdelta library from http://sourceforge.net/projects/javaxdelta/ +with credit to it's authors. + +Forge Mod Loader downloads components from the Minecraft Coder Pack +(http://mcp.ocean-labs.de/index.php/Main_Page) with kind permission from the MCP team. + diff --git a/LICENSE-new.txt b/LICENSE-new.txt new file mode 100755 index 0000000..be2c9e6 --- /dev/null +++ b/LICENSE-new.txt @@ -0,0 +1,483 @@ +Minecraft Forge is licensed under the terms of the LGPL 2.1 found +here http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt and copied +below. + +A note on authorship: +All source artifacts are property of their original author, with +the exclusion of the contents of the patches directory and others +copied from it from time to time. Authorship of the contents of +the patches directory is retained by the Minecraft Forge project. +This is because the patches are partially machine generated +artifacts, and are changed heavily due to the way forge works. +Individual attribution within them is impossible. + +Consent: +All contributions to Forge must consent to the release of any +patch content to the Forge project. + +A note on infectivity: +The LGPL is chosen specifically so that projects may depend on Forge +features without being infected with its license. That is the +purpose of the LGPL. Mods and others using this code via ordinary +Java mechanics for referencing libraries are specifically not bound +by Forge's license for the Mod code. + + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/MinecraftForge-Credits.txt b/MinecraftForge-Credits.txt new file mode 100755 index 0000000..d0de5a5 --- /dev/null +++ b/MinecraftForge-Credits.txt @@ -0,0 +1,26 @@ +* Eloraam * + +* FlowerChild * + +* Hawkye * + +* MALfunction84 * + +Submitted the sleep handler code for his mod (Somnia) and others to use. + +* Scokeev9 * + +Gave permission for ScotTools API to be integrated into MCF, and also supported the Forge by converting his mods to use it. + +ScotTools Background: ScotTools was an API that enabled modders to add blocks to harvesting levels (and many other ease-of-use features to create new tools), and the first tool API that used block material for block breaking efficiency which allowed blocks from mods that didn't use ScotTools API to break with the correct speed. + +* SpaceToad * + +* LexManos * + +* cpw * + +* Minecraft Coder Pack (MCP) * +Forge Mod Loader and Minecraft Forge have permission to distribute and automatically download components of MCP and distribute MCP data files. +This permission is not transitive and others wishing to redistribute the Minecraft Forge source independently should seek permission of MCP or +remove the MCP data files and request their users to download MCP separately. diff --git a/Paulscode IBXM Library License.txt b/Paulscode IBXM Library License.txt new file mode 100755 index 0000000..d4884b0 --- /dev/null +++ b/Paulscode IBXM Library License.txt @@ -0,0 +1,10 @@ +IBXM is copyright (c) 2007, Martin Cameron, and is licensed under the BSD License. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of mumart nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/Paulscode SoundSystem CodecIBXM License.txt b/Paulscode SoundSystem CodecIBXM License.txt new file mode 100755 index 0000000..a68a494 --- /dev/null +++ b/Paulscode SoundSystem CodecIBXM License.txt @@ -0,0 +1,40 @@ +SoundSystem CodecIBXM Class License: + +You are free to use this class for any purpose, commercial or otherwise. +You may modify this class or source code, and distribute it any way you +like, provided the following conditions are met: + +1) You may not falsely claim to be the author of this class or any + unmodified portion of it. +2) You may not copyright this class or a modified version of it and then + sue me for copyright infringement. +3) If you modify the source code, you must clearly document the changes + made before redistributing the modified source code, so other users know + it is not the original code. +4) You are not required to give me credit for this class in any derived + work, but if you do, you must also mention my website: + http://www.paulscode.com +5) I the author will not be responsible for any damages (physical, + financial, or otherwise) caused by the use if this class or any + portion of it. +6) I the author do not guarantee, warrant, or make any representations, + either expressed or implied, regarding the use of this class or any + portion of it. + +Author: Paul Lamb +http://www.paulscode.com + + +This software is based on or using the IBXM library available from +http://www.geocities.com/sunet2000/ + + +IBXM is copyright (c) 2007, Martin Cameron, and is licensed under the BSD License. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +Neither the name of mumart nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.txt b/README.txt new file mode 100755 index 0000000..82be8dc --- /dev/null +++ b/README.txt @@ -0,0 +1,62 @@ +------------------------------------------- +Source installation information for modders +------------------------------------------- +This code follows the Minecraft Forge installation methodology. It will apply +some small patches to the vanilla MCP source code, giving you and it access +to some of the data and functions you need to build a successful mod. + +Note also that the patches are built against "unrenamed" MCP source code (aka +srgnames) - this means that you will not be able to read them directly against +normal code. + +Source pack installation information: + +Standalone source installation +============================== + +See the Forge Documentation online for more detailed instructions: +http://mcforge.readthedocs.io/en/latest/gettingstarted/ + +Step 1: Open your command-line and browse to the folder where you extracted the zip file. + +Step 2: Once you have a command window up in the folder that the downloaded material was placed, type: + +Windows: "gradlew setupDecompWorkspace" +Linux/Mac OS: "./gradlew setupDecompWorkspace" + +Step 3: After all that finished, you're left with a choice. +For eclipse, run "gradlew eclipse" (./gradlew eclipse if you are on Mac/Linux) + +If you prefer to use IntelliJ, steps are a little different. +1. Open IDEA, and import project. +2. Select your build.gradle file and have it import. +3. Once it's finished you must close IntelliJ and run the following command: + +"gradlew genIntellijRuns" (./gradlew genIntellijRuns if you are on Mac/Linux) + +Step 4: The final step is to open Eclipse and switch your workspace to /eclipse/ (if you use IDEA, it should automatically start on your project) + +If at any point you are missing libraries in your IDE, or you've run into problems you can run "gradlew --refresh-dependencies" to refresh the local cache. "gradlew clean" to reset everything {this does not affect your code} and then start the processs again. + +Should it still not work, +Refer to #ForgeGradle on EsperNet for more information about the gradle environment. + +Tip: +If you do not care about seeing Minecraft's source code you can replace "setupDecompWorkspace" with one of the following: +"setupDevWorkspace": Will patch, deobfuscate, and gather required assets to run minecraft, but will not generate human readable source code. +"setupCIWorkspace": Same as Dev but will not download any assets. This is useful in build servers as it is the fastest because it does the least work. + +Tip: +When using Decomp workspace, the Minecraft source code is NOT added to your workspace in a editable way. Minecraft is treated like a normal Library. Sources are there for documentation and research purposes and usually can be accessed under the 'referenced libraries' section of your IDE. + +Forge source installation +========================= +MinecraftForge ships with this code and installs it as part of the forge +installation process, no further action is required on your part. + +LexManos' Install Video +======================= +https://www.youtube.com/watch?v=8VEdtQLuLO0&feature=youtu.be + +For more details update more often refer to the Forge Forums: +http://www.minecraftforge.net/forum/index.php/topic,14048.0.html diff --git a/build.gradle b/build.gradle new file mode 100755 index 0000000..4b1d2ec --- /dev/null +++ b/build.gradle @@ -0,0 +1,76 @@ +buildscript { + repositories { + jcenter() + maven { url = "http://files.minecraftforge.net/maven" } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' + } +} +apply plugin: 'net.minecraftforge.gradle.forge' +//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. + +version = "2.6" +group = "li.netcube.mcvm" // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = "mcvm" + +sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +compileJava { + sourceCompatibility = targetCompatibility = '1.8' +} + +minecraft { + version = "1.12.2-14.23.4.2705" + runDir = "run" + + // the mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD snapshot are built nightly. + // stable_# stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // simply re-run your setup task after changing the mappings to update your workspace. + mappings = "snapshot_20171003" + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. +} + +dependencies { + // you may put jars on which you depend on in ./libs + // or you may define them like so.. + //compile "some.group:artifact:version:classifier" + //compile "some.group:artifact:version" + + // real examples + //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, + // except that these dependencies get remapped to your current MCP mappings + //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' + //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // for more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html + +} + +processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version + } + + // copy everything else except the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} diff --git a/forge-1.12.2-14.23.4.2705-changelog.txt b/forge-1.12.2-14.23.4.2705-changelog.txt new file mode 100755 index 0000000..c6d98e4 --- /dev/null +++ b/forge-1.12.2-14.23.4.2705-changelog.txt @@ -0,0 +1,13829 @@ +Changelog: +Build 2705: + bs2609: Fix crash from search tree processing invalid recipes (#4942) + +Build 1.12.2-14.23.4.2704: + LexManos: + Fix names in JSON annotation data not matching expected format. Closes + #4953 + +Build 1.12.2-14.23.4.2703: + LexManos: + Add potential support for models defining 'vanilla like' rotations in + Forge's Modified Blockstate format. + LexManos: Bump version in prep for new RB. + +Build 1.12.2-14.23.3.2702: + LexManos: + Copy the Dedicated server's EULA checking to main() function so it can + exit earlier. Closes #3659, #3661 + +Build 1.12.2-14.23.3.2701: + bs2609: Fix Forge bucket not declaring all texture dependencies (#4930) + +Build 1.12.2-14.23.3.2700: + bs2609: Reuse multipart model instances across variants (#4791) + +Build 1.12.2-14.23.3.2699: + mezz: Fix language parsing for creating the java locale + +Build 1.12.2-14.23.3.2698: + thilo: Fixes parameter inconsistency in IFieldWrapper (Fixes #4325) (#4766) + +Build 1.12.2-14.23.3.2697: + latvianmodder: Added formatting support for status messages (#4925) + +Build 1.12.2-14.23.3.2696: + bs2609: Fix memory leaks in EnchantmentHelper (MC-128547) (#4880) + bs2609: Fix server-side data not being released (#4882) + +Build 1.12.2-14.23.3.2695: + bs2609: + Change composite models to fetch quads from submodels using full context + (#4809) + +Build 1.12.2-14.23.3.2694: + bs2609: Add an event to control nether portal formation (#4735) + bs2609: Check name prefix used for tile entity registrations (#4681) + 34900092+temp1011: Expand Villager Farmer AI to generic crops. (#4745) + +Build 1.12.2-14.23.3.2693: + bs2609: Allow custom models to have per-state lighting (#4732) + +Build 1.12.2-14.23.3.2692: + bs2609: Fix some light-emitting blocks letting light through (MC-119932) (#4642) + +Build 1.12.2-14.23.3.2691: + 34900092+temp1011: Preserve original ChunkPos for decoration events. (#4767) + +Build 1.12.2-14.23.3.2690: + LexManos: Fix library folder detection on various JVMs. + +Build 1.12.2-14.23.3.2689: + diesieben07: Add supports for redirects when doing mod version checks (#4826) + +Build 1.12.2-14.23.3.2688: + mezz: + Give immediate and complete error messages when there is a crash during + startup (#4869) + mezz: Fix imports + +Build 1.12.2-14.23.3.2686: + mezz: + Revert "Give immediate and complete error messages when there is a crash + during startup (#4869)" + This reverts commit a38f5fd6a24297490671cd300b5e4a9020189f63. + +Build 1.12.2-14.23.3.2685: + mezz: Remove invalid optimization in ItemStackHandler#setStackInSlot #3465 + +Build 1.12.2-14.23.3.2684: + mezz: + Give immediate and complete error messages when there is a crash during + startup (#4869) + +Build 1.12.2-14.23.3.2683: + bs2609: Clean up mod dependency checking code (#4922) + +Build 1.12.2-14.23.3.2682: + mezz: Fix version range check for required mods #4918 + +Build 1.12.2-14.23.3.2681: + mezz: Fix possible NPE when calling Loader.getIndexedModList #4919 + mezz: + Add javadoc note about minimum required Forge versions for old Forge. + Close #4918 + +Build 1.12.2-14.23.3.2680: + tterrag1098: Fix MC-12269 Various Particles glitchy movement (#4914) + +Build 1.12.2-14.23.3.2679: + bs2609: Fix deobfuscator not regenerating super maps (#4856) + +Build 1.12.2-14.23.3.2678: + cpw: Clean up broken aliases caused by registry bug #4894. (#4909) + +Build 1.12.2-14.23.3.2677: + LexManos: + Only revert to frozen data on server shutdown on client. Should fix race + condition exposed by #4904 + LexManos: Move registry snapshot read/write code to Snapshot class. Cleaner code. + +Build 1.12.2-14.23.3.2676: + LexManos: + Potentially fix issue with BungeeCord or other servers resetting the + registry mappings on the client while the game is running. Errors may + still occure if the client knows about world data beyond vanilla. + Servers should NEVER send world/registry invocations before they have + sent registry mappings. Closes #4901 + +Build 1.12.2-14.23.3.2675: + sfPlayer1: Reduce range requirement for World.checkLightFor from 17 to 16 (#4729) + +Build 1.12.2-14.23.3.2674: + bs2609: Fix typo in validation of vanilla registry wrappers (#4899) + +Build 1.12.2-14.23.3.2673: + josephcsible: Fix #4772: add an "isActivator" boolean to powered rails (#4774) + +Build 1.12.2-14.23.3.2672: + bs2609: Fix some code holding client world references longer than needed (#4881) + bs2609: + Add checks for undefined packet discriminators when sending messages + (#4890) + +Build 1.12.2-14.23.3.2671: + bs2609: Don't try to render removed tile entities. Fixes MC-123363 (#4811) + +Build 1.12.2-14.23.3.2670: + LexManos: Fix overrides typo in saving registry data. Closes #4894 + +Build 1.12.2-14.23.3.2669: + LexManos: Fix library path and soft fail when repository root is not found. + +Build 1.12.2-14.23.3.2668: + LexManos: + Fix libraries not being added to the modlist when using external + metadata. Closes #4879 + +Build 1.12.2-14.23.3.2666: + bs2609: + Fix dragon fight not initialising correctly under some circumstances + (#4868) + +Build 1.12.2-14.23.3.2665: + LexManos: + Cleanup some issues with the mod extraction to the memory modlist. + Closes #4874 #4875 + +Build 1.12.2-14.23.3.2664: + mezz: Improve missing mod dependency error screen (#4762) + +Build 1.12.2-14.23.3.2663: + bs2609: Fix biome dictionary's biome type detection (#4878) + +Build 1.12.2-14.23.3.2662: + bs2609: Clean up Reader/Writer handling to use a specified charset (#4872) + +Build 1.12.2-14.23.3.2661: + bs2609: + Suppress firing events at load time if an error has already occurred + (#4801) + +Build 1.12.2-14.23.3.2660: + AlexIIL: Fix FluidUtil.getFluidHandler skipping some fluid tile entities (#4854) + +Build 1.12.2-14.23.3.2659: + erlend: Parse contained dependency Timestamp as long instead of int (#4866) + +Build 1.12.2-14.23.3.2658: + LexManos: Fix Forge's metadata not being loaded. Closes #4865 + +Build 1.12.2-14.23.3.2657: + LexManos: Fix mods without ModSide meta value. + +Build 1.12.2-14.23.3.2656: + LexManos: Rewrite dependency extraction to use mod list system (#4841) + +Build 1.12.2-14.23.3.2655: + LexManos: Bump Forge version for new dev chunk. + +Build 1.12.2-14.23.2.2654: + LexManos: + Add support for World Workers skipping ticks without being removed from + the worker list. + LexManos: + Slow down Forge chunk gen worker when save queue is to high. Prevents + task from completing while tons of chunks are pending save. And add + minimum notification every 60 seconds. + LexManos: Fix vanilla duplication bug. + +Build 1.12.2-14.23.2.2653: + williewillus: Fix MC-88179 in a better way that avoids and closes #4824 (#4830) + +Build 1.12.2-14.23.2.2652: + bs2609: Improve the warning logged for cascading world generation (#4725) + +Build 1.12.2-14.23.2.2651: + bs2609: + New ITeleporter interface making dimensional teleportation easier. + (#4602) + +Build 1.12.2-14.23.2.2650: + williewillus: + Add a FML outbound target for all players tracking a point or entity in + the world. Closes #3677 (#4631) + +Build 1.12.2-14.23.2.2649: + mail: + Prevent EntityPlayer.attackEntityFrom from firing LivingAttackEvent + twice (#4661) + +Build 1.12.2-14.23.2.2648: + bs2609: Improve performance of some ExtendedBlockState methods (#4698) + 6081834+Yuudaari: Add a way to get a list of registered biome types (#4685) + +Build 1.12.2-14.23.2.2647: + bs2609: + Check for empty dimensions outside of chunk unloading loop, culling + worlds without needing chunk unloads to trigger it. (#4704) + bs2609: Optimise adding normal element to vertex formats (#4699) + +Build 1.12.2-14.23.2.2646: + CreativeMD: + Fixed Spectator mode particles and sounds computed from where you have + been before (MC-46445) (#4728) + Parker Young: + Update ItemHandlerHelper.giveItemToPlayer to allow player who picked up + the item to hear the sound as well (#4720) + josephcsible: Add description to Error raised by the server hang watchdog. (#4714) + Judge40: Create event for overriding mob griefing flag based on entity. (#4710) + +Build 1.12.2-14.23.2.2645: + matti.j.ruohonen: + Add a WorldProvider#canSleepHere() method to allow providers to control + sleeping in beds separately from re-spawning. (#4741) + +Build 1.12.2-14.23.2.2644: + bs2609: Fix some block connection logic not matching vanilla (#4781) + bs2609: Reduce memory usage of model transforms (#4753) + malte0811: + Fix FMLCommonHandler#exitJava printing useless/wrong calling info + (#4742) + +Build 1.12.2-14.23.2.2643: + 34900092+temp1011: Add fences and fence gates to ore dictionary (#4807) + TheCyberBrick: Added chunk instance to ChunkWatchEvent (#4805) + Bward7864: + Small performance improvement to ItemStack, by using Items.AIR directly + instead of getting it from the Block map. (#4786) + Mordenkainen: + Fix for the player inadvertently being removed from the Entity Tracker + when the chunk they were in unloads after they teleport out of it. + (#4784) + +Build 1.12.2-14.23.2.2642: + bs2609: Fix entities sometimes not rendering when out-of-world (#4823) + +Build 1.12.2-14.23.2.2641: + mezz: Fix issues with the test mods + +Build 1.12.2-14.23.2.2640: + marvinroesch99: Reorganise test mods into packages (#4706) + +Build 1.12.2-14.23.2.2639: + diesieben07: Fix servers crashing due to initializer on @SideOnly field (#4825) + +Build 1.12.2-14.23.2.2638: + Bward7864: + Cleaner TileEntityItemStackRenderers, now stored on the Item. Modders + should be careful and cache their renderers. (#4700) + +Build 1.12.2-14.23.2.2637: + mezz: + Add support for creator mod ID for modded enchanted books, potions, + arrows, and spawn eggs (#4810) + +Build 1.12.2-14.23.2.2636: + LexManos: Remove Mercurius from optional mods. + +Build 1.12.2-14.23.2.2635: + CreativeMD: Fixed sound engine crash when stopping streaming sounds (#4765) + +Build 1.12.2-14.23.2.2634: + LexManos: + Merge vanilla pre-decompile annotations with Forge's post-patching. + Fixes #4769 Crash detail classes causing class not found errors. + +Build 1.12.2-14.23.2.2633: + malte0811: + Fix NBT data loss when shift-clicking stacked items in the enchantment + table (MC-17431) (#4817) + +Build 1.12.2-14.23.2.2632: + mezz: Update docs for ItemTooltipEvent + +Build 1.12.2-14.23.2.2631: + ichttt: Fix some IResources being leaked (#4806) + +Build 1.12.2-14.23.2.2630: + mezz: + Fix server console logging issues + Closes #4808 + +Build 1.12.2-14.23.2.2629: + mezz: Fix up logging and log4j configuration (#4802) + +Build 1.12.2-14.23.2.2628: + josephcsible: Make lookupFluidForBlock work for flowing water and lava (#4675) + +Build 1.12.2-14.23.2.2627: + wynprice999: + Patched BlockInfo#updateLightMatrix to use + IBlockState#doesSideBlockRendering instead of + Block#doesSideBlockRendering (#4798) + +Build 1.12.2-14.23.2.2626: + bs2609: Fix integrated server crash not stopping client (#4796) + +Build 1.12.2-14.23.2.2625: + mezz: Fix #4792 TextComponentHelper handling for FakePlayers + +Build 1.12.2-14.23.2.2624: + ichttt: + Fix serverside startup failure when checking for vanilla acceptance + (#4783) + +Build 1.12.2-14.23.2.2623: + mezz: Prevent various vanilla blocks from loading unloaded chunks (#4689) + bs2609: Improve how smooth lighting code handles translucency (#4711) + +Build 1.12.2-14.23.2.2622: + mezz: + Improve the "Mod rejections" error message when connecting to a server + (#4761) + +Build 1.12.2-14.23.2.2621: + cpw: + Fix the ForgeChunkManager to use the writebehind FileIO thread for + writing (#4777) + the chunk file. Closes #4775 + This is a performance tweak - doing File IO on the server thread during + world saves causes significant lag spikes. This is one of many. + +Build 1.12.2-14.23.2.2620: + LexManos: + Fix vanilla crash classes not being preloaded. Closes #4769 Fix classes + not being aggregated for mods using the new annotation cache. + +Build 1.12.2-14.23.2.2619: + bs2609: Fix incorrect dimension ID being used for maps (#4690) + +Build 1.12.2-14.23.2.2618: + bs2609: Don't cull generated item models with non-default transforms (#4749) + +Build 1.12.2-14.23.2.2617: + bs2609: Maintain deterministic order in deserialised Forge blockstates (#4748) + +Build 1.12.2-14.23.2.2616: + goto.minecraft: Add function to BufferBuilder to directly insert byte data. Closes #4722 + +Build 1.12.2-14.23.2.2615: + bs2609: Clean up some GUI code and change magic numbers to GL constants (#4734) + +Build 1.12.2-14.23.2.2614: + mezz: Minor cleanup for TestAnnotationParser + +Build 1.12.2-14.23.2.2613: + LexManos: + Remove Mercurius from release JSON, Sadly it's dead we may address it at + a later date. + LexManos: + Initial implementation of JSON based annotation scanning. Disabled by + default for now, until proven to be fully function. Enable using + -Dfml.enableJsonAnnotations=true + +Build 1.12.2-14.23.2.2612: + mezz: Update Github Stale bot message to better explain how to un-stale issues + +Build 1.12.2-14.23.2.2611: + LexManos: Bump version for RB. + +Build 1.12.2-14.23.1.2610: + bs2609: New hook in WorldProvider to control client lighting re-checks (#4645) + bjfccb: Fix inconsistency between vanilla and modded glass. Closes #4679 (#4680) + bs2609: + Change chunk gen command to only keep the target dimension loaded + (#4705) + +Build 1.12.2-14.23.1.2609: + CreativeMD: + New hook to delegate some liquid related physics to the blocks + themselves. (#4604) + +Build 1.12.2-14.23.1.2608: + bartek.bok: Remove texture loads from SimpleModelFontRenderer (#4721) + +Build 1.12.2-14.23.1.2607: + bs2609: Fix some shapeless recipes using damageable items not working (#4713) + +Build 1.12.2-14.23.1.2606: + bs2609: + Use relative time offset, rather than absolute value, for animations + (#4635) + +Build 1.12.2-14.23.1.2605: + malte0811: + Fixed UV contraction for the texture in the top-left corner of the + texture map (0, 0), see sp614x/optifine#1024 (#4703) + +Build 1.12.2-14.23.1.2604: + Leviathan143: + Fix some test mods preventing Forge server-Vanilla client connections + (#4616) + +Build 1.12.2-14.23.1.2603: + mezz: + Fix errors in preInit being lost when followed by a crash in + fireRegistryEvents or objectHolder + +Build 1.12.2-14.23.1.2602: + SirWindfield: Added @Ignore to the annotation based Config system. (#4696) + +Build 1.12.2-14.23.1.2601: + mezz: Improve error message on server when a vanilla client connects (#4691) + +Build 1.12.2-14.23.1.2600: + malte0811: + Fixed pumpkins passing the wrong position to isSideSolid on placement + (#4686) + +Build 1.12.2-14.23.1.2599: + williewillus: Fix MusicType enumhelper not working (#4682) + +Build 1.12.2-14.23.1.2598: + williewillus: Expose CriteriaTriggers.register, closes #4109 (#4634) + mezz: + Make FluidUtil sounds server-side, add simulate option for + tryFill/EmptyContainerAndStow (#4623) + +Build 1.12.2-14.23.1.2597: + ichttt: Fix forge fluids being treated as solid blocks (#4606) + bs2609: Catch and log exceptions during model baking (#4609) + +Build 1.12.2-14.23.1.2596: + JDLogic: Fix default GUIConfig displaying child categories twice (#4599) + alexbobp: + Add MobSpawnerBaseLogic reference to SpecialSpawn and CheckSpawn events + (#4600) + +Build 1.12.2-14.23.1.2595: + bs2609: Add missing check for allowed values to recolorBlock() (#4579) + loopycoaster_8: + Moved firing the MinecartInteractEvent from individual subclasses up to + EntityMinecart, which as a result automatically supports + EntityMinecartMobSpawner and EntityMinecartTNT. (#4583) + Tyler Hancock: Added a tooltip color event. (#4595) + +Build 1.12.2-14.23.1.2594: + williewillus: Allow WorldProviders to specify in-game music (#4539) + bs2609: Make async chunk loading a config option (#4544) + mezz: Avoid copying Forge Registry keys, values, and entries (#4545) + +Build 1.12.2-14.23.1.2593: + Laughlan Coventry: Block::addRunningEffects (#4248) + +Build 1.12.2-14.23.1.2592: + Leviathan143: + [1.12.x] Implement hooks allowing mods to add horse armor. Partially + addresses #3975. (#3994) + +Build 1.12.2-14.23.1.2591: + LexManos: Fix debug flags for ClassPatchManager not working. Closes #3674 + +Build 1.12.2-14.23.1.2590: + mezz: Fix FML error logging for mods that crash during FMLLoadCompleteEvent + +Build 1.12.2-14.23.1.2589: + mezz: Minor code and documentation cleanup. (#4664) + +Build 1.11.2-13.20.1.2588: + bs2609: + [1.11] Fix dormant chunk cache allowing entity data to be overwritten + (#4672) + +Build 1.12.2-14.23.1.2587: + bs2609: Fix dormant chunk cache allowing entity data to be overwritten (#4528) + +Build 1.12.2-14.23.1.2586: + bs2609: Fix dimension data not being saved (#4667) + +Build 1.12.2-14.23.1.2585: + bartek.bok: Don't copy state from variant to multi-part model (#4629) + +Build 1.12.2-14.23.1.2584: + josephcsible: Fix vanilla giant jungle trees causing cascading generation (#4652) + +Build 1.12.2-14.23.1.2583: + knightminer4: Fix Beetroot crops don't break/drop when trampled (#4644) + +Build 1.12.2-14.23.1.2582: + bartek.bok: + Enhance crash message when custom models return null default state + (#4615) + +Build 1.12.2-14.23.1.2581: + mezz: Update Github StaleBot config to run on old Issues as well as PRs + +Build 1.12.2-14.23.1.2580: + LexManos: + Downgrade RegistryEntry's dangerous alternative prefix message to info + instead of BigWarning. This is still most likely a broken mod, but + nobody ever actually fixes themselves, and i'm tired of being blamed for + 'spamming' the logs. + +Build 1.11.2-13.20.1.2579: + bartek.bok: Fix invalid rendering of single-frame B3D models (#3917) + +Build 1.12.2-14.23.1.2578: + LexManos: + Fix missing call to release() in the event channel handler (#4513) + (reverted from commit cd99957627625f7baeff8761c6382b05db9699d3) + +Build 1.12.2-14.23.1.2577: + Leviathan143: + Add some extra context to Advancements/Minecart/Fishing/TileEntity loot + handlers.(#4443) + mccommanderminecraft: Added Custom Slime Block hook for Piston. (#4520) + +Build 1.12.2-14.23.1.2576: + bartek.bok: Fix animation of rotated block parts (#4156) + bartek.bok: Fix invalid rendering of single-frame B3D models (Fix #3815) + bs2609: Adjust diffuse light calculation to match vanilla facing values (#4305) + bs2609: Fix applyUVLock not preserving input order (#4336) + bs2609: Adjust light matrix calculations to use per-face logic (#4339) + +Build 1.12.2-14.23.1.2575: + tterrag1098: Fix BakedQuadRetextured not overriding getSprite (#4137) + +Build 1.12.2-14.23.1.2574: + bs2609: Fix missing call to release() in the event channel handler (#4513) + kashike: Delay egg creation to avoid null statistics (#4508) + arturzartdinov: + Added LivingKnockBackEvent event to allow better control over knock back + effects. (#4503) + +Build 1.12.2-14.23.1.2573: + mrkirby153: + Reimplemented TileEntity and Entity Update Profiling in the /forge track + command (#4521) + +Build 1.12.2-14.23.1.2572: + bs2609: Don't enforce IPv4 for clients connecting to IPv6-only servers (#4563) + JDLogic: [macOS] Fix missing text on loading error screens (#4532) + +Build 1.12.2-14.23.1.2571: + bs2609: Add an event for registering block/item colour handlers (#4565) + +Build 1.12.2-14.23.1.2570: + josephcsible: Deprecate passing a class to CapabilityManager::register (#4574) + josephcsible: + Make vanilla powered rails receive power from mods' custom powered rail + subclasses (#4573) + matthewprenger: Fix startIndex for /forge generate position parsing (#4572) + AlgorithmX2: BlockFlowerPot now checks solid top side instead of old method. (#4571) + AlgorithmX2: Fix: Anvil Bug with Custom Damage Items. (#4570) + +Build 1.12.2-14.23.1.2569: + mezz: + Change how chests check if they're blocked. (#4584) + Readd Vanilla Bug: https://bugs.mojang.com/browse/MC-378 + bs2609: Add missing nullability annotations to some Forge-added methods (#4578) + +Build 1.12.2-14.23.1.2568: + Billy Galbreath: + Allow EntityFishHook to spawn water particles in all liquids that use + Material.WATER (#4585) + +Build 1.12.2-14.23.1.2567: + gegy1000: Add Sound loading progress bar (#4593) + +Build 1.12.2-14.23.1.2566: + bs2609: Clean up capability checking for entities (#4591) + +Build 1.12.2-14.23.1.2565: + bs2609: Fix sometimes being unable to extract items from double chests (#4590) + +Build 1.12.2-14.23.1.2564: + josephcsible: + Fix item handler documentation that says returning ItemStack.EMPTY is + required (#4587) + +Build 1.11.2-13.20.1.2563: + bartek.bok: Fix invalid FastTESR quad ordering (#3900) + +Build 1.12.2-14.23.1.2562: + julian_abelar: Added color as field with setter to Fluid class. (#4460) + +Build 1.12.2-14.23.1.2561: + mezz: Prevent tooltips from going off the top of the screen. + +Build 1.12.2-14.23.1.2560: + Anthony Lomeli: [1.12] Add Advancement Event (#4467) + +Build 1.12.2-14.23.1.2559: + mezz: Update java docs for IItemHandler. Fix #4553 + +Build 1.12.2-14.23.1.2558: + LexManos: Re-enable Vanilla's Shapeless recipe matching. + LexManos: Restore binary compatibility in EntityItemPickupEvent + +Build 1.12.2-14.23.1.2557: + draco18s: + Fix for the EntityItemPickupEvent having 0 count item when event is + fired. (#4549) + +Build 1.12.2-14.23.1.2556: + bs2609: Don't force IPv4 network stack if IPv6 is specifically requested (#4547) + +Build 1.12.2-14.23.1.2555: + LexManos: Fix more bad shapeless recipe matching. Closes #4557 + +Build 1.12.2-14.23.1.2554: + LexManos: Version bump for Recommended Build. + +Build 1.12.2-14.23.0.2553: + williewillus: Add TAG_LONG_ARRAY to Constants.NBT (#4552) + +Build 1.12.2-14.23.0.2552: + LexManos: + Create custom shapeless recipe matching system. Should solve #4516 + damageable items in shapeless recipes. + +Build 1.12.2-14.23.0.2551: + mezz: Clean up old code for detecting BaseMods. Close #4530 (#4540) + +Build 1.12.2-14.23.0.2550: + Laughlan Coventry: Fix BufferBuilder not expanding under some conditions. (#4538) + +Build 1.12.2-14.23.0.2549: + mezz: Add support.yml for support bot on github. + +Build 1.12.2-14.23.0.2548: + bs2609: Fix errors caused by multi-target messages sent from LAN host (#4536) + +Build 1.12.2-14.23.0.2547: + bs2609: Fix server icon response leaking buffer (MC-122085) (#4534) + +Build 1.12.2-14.23.0.2546: + LexManos: Fix CompoundIngredents not working properly in shapeless recipes. + +Build 1.12.2-14.23.0.2545: + goto.minecraft: [1.12.x] Added BucketUse event to ForgeUniversal Bucket (#4454) + +Build 1.12.2-14.23.0.2544: + williewillus: + Non-player entities now respect WorldProvider.getMovementFactor, closes + #4470 (#4471) + +Build 1.12.2-14.23.0.2543: + bs2609: Fix entity spawn messages not handling buffer correctly (#4524) + +Build 1.12.2-14.23.0.2542: + LexManos: + Make Ingredient explode wildcard values like OreIngredient. Fixes some + issues related to Grums order fix for Shapeless recipes. Other more + advanced usages need to be documented and tested. + +Build 1.12.2-14.23.0.2541: + st.kupr: + Fix server incorrectly marked as stopped before forge's + handleServerStopped() (#4517) + +Build 1.12.2-14.23.0.2540: + bs2609: Fix network buffer leak with multi-part messages (#4511) + +Build 1.12.2-14.23.0.2539: + bs2609: Fix buffer leak in vanilla custom payload packet handling (#4512) + +Build 1.12.2-14.23.0.2538: + bs2609: Fix network buffers not being released in some places (#4510) + +Build 1.12.2-14.23.0.2537: + JDLogic: + Fix resource loading on some mac systems when SplashProgress is enabled + (#4082) + +Build 1.12.2-14.23.0.2536: + bs2609: Change item model alpha tests to match values used for rendering (#4490) + bs2609: Fix incorrect lighting of item models (#4493) + Billy Galbreath: Fix MC-51150 (#4495) + +Build 1.12.2-14.23.0.2535: + bartek.bok: Fix NPE when player tries to sleep without bed (#4487) + +Build 1.12.2-14.23.0.2534: + goto.minecraft: Added tint index of 0 to fluid models (#3938) + +Build 1.12.2-14.23.0.2533: + bartek.bok: Fix FastTESR quad sort (#4298) + +Build 1.12.2-14.23.0.2532: + zzzz: + Fix the incorrect matching algorithm in ShapelessRecipes and + ShapelessOreRecipe (#4472) + +Build 1.12.2-14.23.0.2531: + bs2609: Fix BlockDynamicLiquid using mismatched state/position pair (#4501) + +Build 1.11.2-13.20.1.2530: + bs2609: Recalculate chunk heightmap minimum (MC-117412) (#3888) + +Build 1.12.2-14.23.0.2529: + bs2609: Fix more test mod warnings (#4477) + +Build 1.12.2-14.23.0.2528: + bartek.bok: Add LivingDamageEvent (#4349) + +Build 1.12.2-14.23.0.2527: + Zaggy1024: Added a cloud renderer that uploads geometry to the GPU. (#4143) + bartek.bok: Add InputUpdateEvent (#4356) + yrsegal: + Create IRecipeContainer interface and implementation to allow RecipeBook + to work on custom GUIs (#4480) + +Build 1.12.2-14.23.0.2526: + bs2609: [1.12] Replace ThrowableImpactEvent with a more generic version (#4040) + +Build 1.12.2-14.23.0.2525: + bs2609: Clean up more deprecated library functions (#4283) + PProvenzano: Allow custom selector types to be defined (#4259) + ctmods01: Fix GameData#revert ignoring RegistryManager parameter (#4232) + joe.flatt: Fixed property losing state after rename. (#4123) + bs2609: Clean up BlockSnapshot code (#3737) + +Build 1.12.2-14.23.0.2524: + williewillus: Move reach distance to an attribute (#4331) + AEnterprise: Improve performance of World.collidesWithAnyBlock (#4286) + +Build 1.12.2-14.23.0.2523: + bs2609: Further reduce quad count of generated item models (#4448) + bs2609: Prevent fake players from making advancements (#4438) + mezz: Improve the Forge Bucket (#4435) + Bward7864: + Resolve a crash relating to plantFlower when biome has no flowers + (#4381) + +Build 1.12.2-14.23.0.2522: + bs2609: Recalculate chunk height map minimum on load (#4453) + bs2609: Fix killing blow causing combat tracker to lose data (MC-121048) (#4452) + +Build 1.12.2-14.23.0.2521: + bs2609: Improve performance of inserting into inventory wrappers (#4468) + julian_abelar: + Changed BlockFluidBase "fog" color use color from Fluid getColor() + method (#4462) + +Build 1.12.2-14.23.0.2520: + LexManos: + Fix some locations where State Sensitive Materials were not used. Closes + #4474 + +Build 1.12.2-14.23.0.2519: + bs2609: Add caching of data for flat lighting (#4358) + +Build 1.12.2-14.23.0.2518: + bs2609: + Fix spider/chicken jockeys being unable to spawn naturally (MC-103516) + (#4429) + +Build 1.12.2-14.23.0.2517: + mezz: Clean up Forge commands. Add HelpCommand. Fix #4444 (#4451) + +Build 1.11.2-13.20.1.2516: + bartek.bok: Fix stacked entity item rendering (#3886) + +Build 1.12.2-14.23.0.2515: + bs2609: Fix some more test mod warnings (#4469) + +Build 1.12.2-14.23.0.2514: + mincrmatt12: [1.12.x] [Animation API] Add rotation origin variable (#4466) + +Build 1.11.2-13.20.1.2513: + bs2609: Save/restore dormant chunk entity data from NBT (#3940) + +Build 1.12.2-14.23.0.2512: + bs2609: Fix some warnings produced by test mods (#4456) + +Build 1.10.2-12.18.3.2511: + mezz: Fix performance regression in FastTESR rendering + +Build 1.11.2-13.20.1.2510: + mezz: Fix performance regression in FastTESR rendering + +Build 1.12.2-14.23.0.2509: + mezz: Fix performance regression in FastTESR rendering + +Build 1.12.2-14.23.0.2508: + mezz: Fix outdated VersionParser javadoc link + +Build 1.11.2-13.20.1.2507: + PProvenzano: + Clean up Block.getLightValue(IBlockState, IBlockAccess, BlockPos) + (#4202) + +Build 1.11.2-13.20.1.2506: + p3pp3rf1y: Change to allow items to interact with villagers (#4194) + +Build 1.11.2-13.20.1.2505: + bs2609: + Add a hook to allow world providers to change the lightmap colours. + (#3922) + +Build 1.11.2-13.20.1.2504: + rasheeqhere: Add smarter getter for block slipperiness (#3620) + +Build 1.12.2-14.23.0.2503: + mezz: Add configuration for probot-stale for github + +Build 1.12.2-14.23.0.2502: + mezz: Update mcp mappings to 20171003 + +Build 1.12.2-14.23.0.2501: + mezz: [1.12] Add support for client & server dependencies for mods (#4403) + +Build 1.12.2-14.23.0.2500: + mezz: Add Item.getModId to show which mod is associated with a subitem (#4330) + +Build 1.12.2-14.23.0.2499: + erlend: Add Chunk capabilities (#4228) + +Build 1.12.2-14.23.0.2498: + python0429: Add hook to configure EntityEquipmentSlot for item. + bs2609: Fix block and torch placement logic not matching vanilla (#4210) + bs2609: Fix being unable to see with night vision under some conditions (#4383) + tterrag1098: Allow item models to use formats other than ITEM (#4273) + erlend: [1.12] Check both hands for sneak interaction bypass (#4256) + bs2609: Reduce the number of quads generated by ItemLayerModel (#4332) + bs2609: + Improve performance of vertex format mapping by caching hashcodes + (#4370) + bs2609: Fix some chunk data packets being created unnecessarily (#4414) + +Build 1.12.2-14.23.0.2497: + bs2609: Store entity data for dormant chunks using NBT (#4162) + +Build 1.12.2-14.23.0.2496: + williewillus: + Allow for MapDecoration to use alternate rendering, for example a custom + spritesheet (#4027) + +Build 1.12.2-14.23.0.2495: + LexManos: + Remove limitation of Shaped crafting recipes not being used on grids + larger than 3x3 + +Build 1.12.2-14.23.0.2494: + josephcsible: + Fix not being able to write in a blank, renamed Book and Quill (#4433) + https://bugs.mojang.com/browse/MC-1685 + +Build 1.12.2-14.23.0.2492: + LexManos: + Add new /forge entity list command for displaying a list of all entities + in world. As well as tracking down chunks with large amounts of + entities. + +Build 1.12.2-14.23.0.2491: + kashike: Prevent a mutable BlockPos leak in World#setBlockState (#4388) + flashfireex: Fix test mod shield JSON incorrect bottom face UV's (#4295) + +Build 1.12.2-14.23.0.2490: + ichttt: + Fix IngredientNBT comparing stackSize when checking if ingredient is + valid (#4418) + +Build 1.12.2-14.23.0.2489: + kashike: + Auto-detect registry namespace when using a legacy string id in + EntityEntryBuilder fixes #4410 (#4411) + +Build 1.10.2-12.18.3.2488: + LexManos: Fix max CustomPayload size, 1MB not 16MB. + Barteks2x: Fix splitting big packets skipping one byte per additional part (#4302) + Barteks2x: Fix netty warning spam when sending >1MB packets (#4363) + +Build 1.12.2-14.23.0.2487: + kashike: + Introduce entity entry builder, useful in the Register + event replacing needed calls to EntityRegistry. (#4408) + +Build 1.12.2-14.23.0.2486: + LexManos: MC 1.12.2 update. + +Build 1.12.1-14.22.1.2485: + paul.fulham0: Fix lightmap calculation vertex clamping (#4387) + +Build 1.12.1-14.22.1.2484: + Tyler Hancock: Fix chunk gen mobs not firing the CheckSpawn event. Closes #4394 (#4396) + +Build 1.12.1-14.22.1.2483: + thiakil: Add an extra error check for OBJ model materials (#4402) + +Build 1.12.1-14.22.1.2482: + bs2609: Fix up test mods (#4399) + +Build 1.12.1-14.22.1.2481: + LexManos: + Add new /forge gen command to generate large amounts of chunks. Usage: + /forge gen [dimension] [notifications] Position is in + Block Coords, and can be relative to the player. These will be converted + to chunk coords for you. Count is the number of chunks to load. This is + not a radius, actual total number of chunks. Dimension is optional, you + can use this to pregen other worlds. Notifications is the chunk interval + to inform you of the generating progress. This is optional and will be + 5% or 100 whichever is higher. + Added new config option to modify vanilla world gen to fix various + cascading issues. MC-117810 MC-114332 and more. This WILL change block + placement from vanilla world gen. So this is a opt-in value. Do not + report differences in worlds with this flag enabled. + +Build 1.12.1-14.22.1.2480: + LexManos: Fixed ShapedOre recipes not laying out correctly with the guidebook. + +Build 1.12.1-14.22.1.2479: + Tyler Hancock: Fixed search tabs using wrong contents. (#4393) + +Build 1.12.1-14.22.1.2478: + LexManos: Bump version for RB. + +Build 1.10.2-12.18.3.2477: + mezz: Fix MC-117075 lag spike when unloading many tile entities + +Build 1.11.2-13.20.1.2476: + mezz: Fix MC-117075 lag spike when unloading many tile entities + +Build 1.12.1-14.22.0.2475: + mezz: Fix #4386 Race condition when unloading chunks causes dead tile entities + +Build 1.12.1-14.22.0.2474: + bs2609: Improve generation of normals for vanilla models (#4313) + bs2609: Patch block model renderer to use location-aware light value (#4303) + +Build 1.12.1-14.22.0.2473: + bk1325: + Fix CustomModLoadingErrorDisplayScreen not being handled during init or + preinit. (#4320) + bs2609: Fix light sources rendering wrongly with night vision (MC-58177) (#4365) + marvinroesch99: Fire RenderGameOverlayEvent for vignette (#4360) + +Build 1.12.1-14.22.0.2472: + bs2609: Add missing bounds checks to ItemTextureQuadConverter (#4343) + dualspiral: Insert FML handler before Vanilla connection handshake completes (#4380) + +Build 1.12.1-14.22.0.2471: + williewillus: Fix vanilla map pixel data being used in various places (#4068) + bs2609: Adjust float (un)packing functions to be slightly more accurate (#4316) + marvinroesch99: + Add support instructions to be displayed when creating an issue on + Github (#4323) + blay09: + Allow custom GuiEditArrayEntries without having to recreate the object + in several places (#4329) + +Build 1.12.1-14.22.0.2470: + bs2609: + [1.12] Remove patches adding chunkExists() function, switch to vanilla + code (#4054) + +Build 1.12.1-14.22.0.2469: + Tyler Hancock: Added missing MapGen types to the InitMapGenEvent (#4322) + +Build 1.12.1-14.22.0.2468: + josephcsible: + Fix nether wart, pumpkins, and melons passing the new state as the + original state to CropGrowEvent.Post (#4377) + +Build 1.12.1-14.22.0.2467: + Choonster.2010: Fix FieldWrapper.MapWrapper initialising wrong category (#4335) + +Build 1.12.1-14.22.0.2466: + Choonster.2010: + Don't parse category names as regular expressions in + FieldWrapper.MapWrapper (#4334) + +Build 1.12.1-14.22.0.2465: + LexManos: Fix issue saving observers using different metadata then vanilla. + +Build 1.12.1-14.22.0.2464: + Barteks2x: Fix netty warning spam when sending >1MB packets (#4363) + +Build 1.12.1-14.22.0.2463: + Barteks2x: Fix FML handshake crash, fixes #4285 and #3974 (#4304) + +Build 1.12.1-14.22.0.2462: + LexManos: Fix recipe book auto-fill not working for OreDictionary ingredients. + +Build 1.12.1-14.22.0.2461: + molecularphylo: Fix KeyBindings reset buttons being inverted. + +Build 1.12.1-14.22.0.2460: + LexManos: + Fix for dummied server side registry entries while client has read + entries. + +Build 1.12.1-14.22.0.2459: + marvinroesch99: Tabulate crash report mod list and add signature information (#4251) + +Build 1.12.1-14.22.0.2458: + nedelosk: [1.12] Fix wood plank ore dictionary recipes (#4310) + +Build 1.12.1-14.22.0.2457: + codewarrior: + Fix UnknownFormatConversionException during erroring TE/Entity removal + (#4312) + +Build 1.12.1-14.22.0.2456: + LexManos: + Add support for server side only recipes, as well as detection of + vanilla client recipe book filter to prevent errors. + +Build 1.12.1-14.22.0.2455: + mezz: Fix typo in CapabiltyFluidHandler (#4306) + +Build 1.11.2-13.20.1.2454: + Barteks2x: Fix splitting big packets skipping one byte per additional part (#4302) + +Build 1.12.1-14.22.0.2453: + Barteks2x: Fix splitting big packets skipping one byte per additional part (#4301) + +Build 1.12.1-14.22.0.2452: + LexManos: Filter out scala libraries in forge dev workspace. + tterrag1098: Better descriptions on dependency version range error screen (#4284) + mezz: Fix MC-117075 lag spike when unloading many tile entities (#4281) + bs2609: + Add a hook to allow world providers to change the lightmap colours + (#4279) + Choonster.2010: + Continue loading mod recipes and advancements after encountering an + error (#4277) + bartek.bok: Fix invalid FastTESR quad ordering (#4267) + knightminer4: + Add support for running IModel.retexture() on models from blockstates + (#4200) + python0429: + Add support for oredict item predicates in advancements, and add a + registry for item predicates (#4188) + flashfireex: Add Ability to Override PotionEffect Default Sort Order (#4172) + ohai.iChun: Add PlayerSPPushOutOfBlocksEvent. (#4091) + LexManos: Fix tests + +Build 1.12.1-14.22.0.2447: + LexManos: + Cleanup some output and move the Jar-In-Jar extractor to before any + coremods/mods are loaded so. The intention is to rework this entire + thing to use maven style storage, IF we can get Mojang to pass in the + Libraries folder. + LexManos: Fixed missing line in logger. + LexManos: Fix odd NPE with list files for empty directories. + LexManos: Fix IOUtils import error caused by server/client libraries desync. + +Build 1.12.1-14.22.0.2446: + cpw: + Lex doesn't like this. + Revert "Fix up MC version compatibility checking to be a little less + verbose." + This reverts commit 1927fd76e20a1b3075cb841b09c2caeb57ebd242. + +Build 1.12.1-14.22.0.2445: + cpw: + Fix up MC version compatibility checking to be a little less verbose. If + people use properly formatted version compatibility strings, or the + default compiled in one, this will work exactly as before, but has less + dependence on specific formats for the mcversion string. So a mod + declaring [1.11, 1.12] will now be 1.12.1 compatible by default, for + example. + +Build 1.12.1-14.22.0.2444: + LexManos: + 1.12.1 Update, Not much modder facing changes, 1.12 mods should load and + run fine on this version. + +Build 1.12-14.21.1.2443: + rasheeqhere: + Add smarter getter for block slipperiness (#4116) + Fixed MC-119811, Boats rubber banding when dismounted. + +Build 1.12-14.21.1.2442: + Laughlan Coventry: Add GuiContainer Foreground render event. (#4127) + +Build 1.12-14.21.1.2441: + bs2609: + Use ClassValue to store tileentity names for profiler in lazy cache. + (#4021) + +Build 1.12-14.21.1.2440: + ichttt: Move client-only config options to client config (#4084) + +Build 1.12-14.21.1.2439: + goto.minecraft: + Added CriticalHitEvent to allow more control over whether a attack is a + critical or not, and what damage it does. + +Build 1.12-14.21.1.2438: + bartek.bok: + Fix stacked entity item rendering using the wrong transform for the + extra items. (#4158) + +Build 1.12-14.21.1.2437: + bk1325: Fix lopsided 'V' in FML icons. (#4179) + +Build 1.12-14.21.1.2436: + diesieben07: + Fixed bug where config categories errored if they contained regex + special characters. (#4187) + diesieben07: + Ignore neighbor changes for comparators on the client (Vanilla behavior) + (#4186) + xalcon: + Added pages to the advancements GUI to allow for unlimited root + advancements. (#4183) + +Build 1.12-14.21.1.2435: + InfinityRaider: Make LivingEntityUseItemEvent not abstract (#4208) + PProvenzano: + Clean up Block.getLightValue(IBlockState, IBlockAccess, BlockPos) + (#4203) + p3pp3rf1y: Allow sneaking to bypass villager interaction GUI. (#4193) + +Build 1.12-14.21.1.2434: + bs2609: + Replace hardcoded block check with isTopSolid method call for placing + button/lever (#4212) + +Build 1.12-14.21.1.2433: + python0429: + Added support for oredict dyes to Fireworks, Armors, and Shulker + recipes. (#4223) + +Build 1.12-14.21.1.2432: + p3pp3rf1y: Limit some server to client update packets for Item Capabilities (#4252) + +Build 1.12-14.21.1.2431: + williewillus: Fixed Armor bar disappear after changing dimension. MC-88179 (#4265) + +Build 1.12-14.21.1.2430: + mezz: Fix the firing location of InputEvent.MouseInputEvent (#4270) + +Build 1.11.2-13.20.1.2429: + mezz: + Allow the server to handle item-block interaction if onItemUse does not + return PASS (#3951) + +Build 1.12-14.21.1.2428: + bs2609: Fix some broken test mods (#4245) + +Build 1.12-14.21.1.2427: + rslink: Fixed swapping of finite fluids with negative densities. (#4237) + +Build 1.12-14.21.1.2426: + marvinroesch99: Fix overrides not being read from the server registry snapshot (#4224) + +Build 1.11.2-13.20.1.2425: + diesieben07: Ignore fortune for anything but seeds in crops (#3959) + +Build 1.12-14.21.1.2424: + marvinroesch99: Fix some test mods crashing server caused by model loading (#4225) + +Build 1.12-14.21.1.2423: + diesieben07: Fix FML handshake race condition, fixes #4219 (#4220) + +Build 1.10.2-12.18.3.2422: + mezz: Prevent player from dying infinitely due to zero max health (MC-119183) + +Build 1.11.2-13.20.1.2421: + mezz: Prevent player from dying infinitely due to zero max health (MC-119183) + +Build 1.12-14.21.1.2420: + mezz: Prevent player from dying infinitely due to zero max health (MC-119183) + +Build 1.12-14.21.1.2419: + malte0811: + [1.12] Allow the server to handle item-block interaction if onItemUse + doesn not return PASS (#3967) + +Build 1.12-14.21.1.2418: + Madsthunder: Allow support for custom Shields and Shield disabling weapons. + +Build 1.12-14.21.1.2417: + diesieben07: Ignore fortune for anything but seeds in crops (#4160) + ichttt: Log a warning if a coremod does not follow best practices (#4146) + python0429: Make Optional.Interface repeatable (#4138) + +Build 1.12-14.21.1.2416: + xalcon: Added support for vanilla "nbt strings" in json recipes (#4113) + +Build 1.12-14.21.1.2415: + LexManos: + Fix tripwire statemap not being complete when mappings change. Closes + #3924 + +Build 1.11.2-13.20.1.2414: + mezz: Fix unblockable damage being blocked by armor. (#3933) + +Build 1.12-14.21.1.2413: + LexManos: + Fixed invalid erroring case during loading Advancements form mods that + don't have advancements. + +Build 1.12-14.21.1.2412: + LexManos: + Fixed issue where rendered held items wouldn't properly update when the + reequip animations isnt shown. Closes #4175 + +Build 1.12-14.21.1.2411: + LexManos: Fire recipe registry event after json recipes are loaded. + LexManos: + Send remap event when data is frozen to notify modders to bake things. + Fixes search not working when connecting to vanilla servers. + +Build 1.12-14.21.1.2410: + bs2609: + Clean up uses of deprecated library functions (#4130) + Avoid catching and rethrowing runtime exceptions + to exceptions instead of the log + +Build 1.12-14.21.1.2409: + bs2609: Remove unneeded block patches (#4167) + +Build 1.12-14.21.1.2408: + mezz: Improve javadocs for Mod dependencies (#4168) + +Build 1.12-14.21.1.2407: + mezz: Fix errors in test mods + mezz: Add basic Github issue template + mezz: Stop "Binary patch set is missing" error log in dev environment + +Build 1.12-14.21.1.2406: + CrafterKina: Remove unnecessary maxStackSize restrictions on brewing potions. (#4155) + +Build 1.12-14.21.1.2405: + mezz: + Fix game freeze when resizing the window too small on the mods gui + (#4148) + +Build 1.12-14.21.1.2404: + williewillus: Allow advancement icons to have nbt (#4114) + maxanier: Adjust EnumHelper#addCreatureType to EnumType (#4089) + +Build 1.12-14.21.1.2403: + LexManos: + Fix MC-68754, Screen is not resizeable after exiting fullscreen due to + LWJGL bug + LexManos: + Attempt fix, or at least better debugging for RecipeBook accessing + unknown recipes. + +Build 1.12-14.21.1.2402: + mezz: Use Item's custom FontRenderer for tooltips in the Creative Gui (#4101) + +Build 1.12-14.21.1.2401: + mezz: Fix Recipe Toast crash when granted more than 5000 recipes (#4124) + +Build 1.12-14.21.1.2400: + mezz: + Throw packet encoding exceptions instead of suppressing them, to prevent + corrupt packets (#4144) + +Build 1.12-14.21.1.2399: + LexManos: Quiet down warning for missing translation files. + +Build 1.12-14.21.1.2398: + LexManos: Update JOpt version on the dedicated server to match client. + +Build 1.12-14.21.1.2397: + LexManos: Fix log spam when creating dummy blocks. + LexManos: Fix override duplication caused by bad comparison. + LexManos: Fix getting missing models for overridden Item registry entires + +Build 1.12-14.21.1.2396: + mezz: + Include location of the call when a mod uses System.out or System.err + (Fix #4135) + +Build 1.12-14.21.1.2394: + xalcon: Add isSpawner parameter to the CheckSpawn event (#4075) + mezz: Improve furnace fuel handling (#4083) + jmtalandar: Fix unblockable damage being blocked by armor. (#3933) (#4106) + +Build 1.11.2-13.20.1.2393: + ericmyllyoja: RenderLivingEvent now stores partialTick (#3822) + +Build 1.12-14.21.1.2392: + ericmyllyoja: + RenderLivingEvent now stores partialTick + 2 + +Build 1.11.2-13.20.1.2391: + mincrmatt12: Add rotation origin variable for animated models (#3875) + +Build 1.12-14.21.1.2390: + ichttt: Fix missing messages of missing models (#4120) + +Build 1.12-14.21.1.2389: + CrafterKina: Correct the default resource location of potion registry (#4117) + +Build 1.11.2-13.20.1.2388: + LexManos: + Add @ObjectHolder scanning to vanilla MobEffects, Biomes, Enchantments, + SoundEvents, and PotionTypes constants. Closes #4104 + LexManos: + Optimize ExtendedBlockState.getClean, cache the return value instead of + calculating it. Closes #3936 + LexManos: Fix BiomeDictionary not collecting correctly. + +Build 1.12-14.21.1.2387: + LexManos: Version bump for RB + +Build 1.11.2-13.20.1.2386: + LexManos: Version Bump for RB + +Build 1.12-14.21.0.2385: + Laughlan Coventry: + Added Block::getFogColor to allow custom blocks to control fog colors + while inside them. (#4090) + +Build 1.12-14.21.0.2384: + LexManos: + Optimize ExtendedBlockState.getClean, cache the return value instead of + calculating it. Closes #3936 + +Build 1.12-14.21.0.2383: + LexManos: + Add @ObjectHolder scanning to vanilla MobEffects, Biomes, Enchantments, + SoundEvents, and PotionTypes constants. Closes #4104 + LexManos: Squelch spam in EventBus register, Closes #4102 + +Build 1.12-14.21.0.2382: + mezz: Use lambdas for short anonymous methods + mezz: Use java 8 collection functions + +Build 1.12-14.21.0.2381: + mezz: + Use multiple catch, try-with-resources, replace system.out and + e.printStackTrace + +Build 1.12-14.21.0.2380: + LexManos: Fix the creative menu search function. Closes #4100 + +Build 1.12-14.21.0.2379: + LexManos: Fix MissingMapping REMAP action. Closes #4069 + +Build 1.12-14.21.0.2378: + LexManos: Fix Biome unit test + LexManos: + Repopulate client SearchTreeManager when registries are refreshed. + Closes #4094 + +Build 1.12-14.21.0.2377: + LexManos: Allow the recipe registry to be modified. + LexManos: Fix error when using RegistryBuilder and not specifying a max id number. + LexManos: Add support for loading mod advancements from the mod jar files. + +Build 1.12-14.21.0.2376: + LexManos: Fix BiomeDictionary not collecting correctly. + +Build 1.12-14.21.0.2375: + blay09: + Remove incorrect call to .toString() when instantiating custom config + array entries. (#4078) + +Build 1.12-14.21.0.2374: + vincent.lee: Remove outdated patch to BlockDoublePlant + +Build 1.12-14.21.0.2373: + LexManos: Fix ItemStack/Block/BlockSpecial not applying at runtime. + LexManos: More work on registry override ability. Closes #4079 + fry: Added dependencies and dependency ordering for textures. (#4070) + mezz: Remove the call to client.refreshResources during loading (#4032) + quadraxis: Remove some deprecated methods and clean up + LexManos: Fix substitution tests + +Build 1.12-14.21.0.2368: + bs2609: + Add a FluidUtil method to interact with an arbitrary IFluidHandler + (#4080) + +Build 1.12-14.21.0.2367: + ichttt: Further Java 8 cleanup (#4077) + +Build 1.11.2-13.20.0.2366: + LexManos: Fix ItemStackTransformer not applying at runtime. + +Build 1.12-14.21.0.2365: + LexManos: Fix ModelBlockAnimation expsing a private class. + LexManos: Fix missed side only on BlockFlower + +Build 1.12-14.21.0.2364: + LexManos: Make Block.getSubBlocks not client side only. + +Build 1.12-14.21.0.2363: + fry: + Cleanup of model system, taking advantage of java 8; replaced guava + Optional and Function with java 8 versions. + +Build 1.12-14.21.0.2362: + LexManos: Reload client recipe book after loading modded recipes. + +Build 1.12-14.21.0.2361: + LexManos: Make Dummy block an Air block. + +Build 1.12-14.21.0.2360: + LexManos: Fix minecraft:item_nbt ingredient type. + LexManos: Fix Emerald generation causing chunk loading. + LexManos: Make getSubItems non-client only. Use it for Ingredient iteration. + LexManos: Fix NPE in MissingMappings event. Closes #4067 + +Build 1.12-14.21.0.2359: + mezz: + Add Block.getDrops that uses NonNullList, deprecate the old method. Fix + #3567 (#3778) + +Build 1.12-14.21.0.2358: + mezz: Remove arrival/departure message methods from WorldProvider (#2733) + +Build 1.12-14.21.0.2357: + mezz: Clean up logging + +Build 1.11.2-13.20.0.2356: + kinglemming: Enable support for modded Fishing Rods. (#4011) + +Build 1.12-14.21.0.2355: + bs2609: + [1.12] Cleanup of files with old licence headers, Add missing LGPL 2.1 + licence headers (#4051) + kinglemming: Use instanceof ItemFishingRod instead of item equality (#4060) + +Build 1.12-14.21.0.2354: + Choonster.2010: + Fix uncaught ClassCastException from invalid recipe file (#4043) + A JsonSyntaxException will now be thrown, caught and logged when the + conditions property of a recipe isn't an array + +Build 1.12-14.21.0.2353: + TechnicianLP: + Fix onBlockClicked handler firing twice and Item.onArmorTick in the + wrong place (#4037) + +Build 1.12-14.21.0.2352: + quadraxis: Remove Java 8 warnings now that Minecraft requires it + mezz: Update MCP to 20170624 + +Build 1.12-14.21.0.2351: + bs2609: Fire AnimalTameEvent for parrots (#4003) + +Build 1.12-14.21.0.2350: + tterrag1098: Make ForgeRegistry iterator sorted. Closes #4058 (#4059) + +Build 1.12-14.21.0.2349: + LexManos: Loosen up registry locks until data freeze. + +Build 1.12-14.21.0.2348: + LexManos: + First pass of registry rewrite. Tests do not run yet. Things of note: + Removed the idea of substitutions, just register multiple items with the + same name they will override each other like a normal map. Decoupled + Forge registries from vanilla classes. They now use bouncer classes. + MODDERS SHOULD NEVER USE THESE Introduced more stringent registry + locking. As it sits things are only allowed to be registered during the + RegistryEvent.Registry phases! This is to force modders to split up + their registrations, and pave the way for calling these functions + multiple times during a single MC lifecycle. ObjectHolder, Missing + Mappings, etc... *should* now work for all registry types, nothing + should be special cased to Blocks/Items anymore. Added optional generic + dummy factory to registries, to allow registry creators the ability to + dummy more then just Blocks. Re-worked the ItemStack transformer and + applied it to ItemBlock and ItemBlockSpecial. Allowing us to cleanup + reflective hacks in Block callbacks. Registry onAdd callback is now only + fired on the ACTIVE registry, fixing any issues of temp registries + overriding active objects. + LexManos: + More work, game loads and runs now. Moved Registry events to directly + AFTER PreInit instead of before. This allows modders to register + handlers for it without @EventBusSubscriber. It also allows you to + register custom things needed before the construction of blocks or items + such as Fluids. TODO: Move Fluids to a real registry. @ObjectHolder can + now be used on private fields. Reworked FMLModIdMappingEvent to include + data for all registries. Tile Entities are now registrable. + LexManos: Fixup some registry tests, dummies are now persisted across syncing. + LexManos: + Disable substitution test, substitutions are not managed the way they + used to be. We do not care about substitutions, People who replace + entries should make them compatible with the existing item. + LexManos: + Implement override tracking and syncing. Overrides MUST be registered + within a tracked event so we know what mod it came from. This will allow + servers/saves to select which mod 'wins' and becomes to active entry. + This should also mean that when connecting to a vanilla server things + will revert. + LexManos: Fix conflicts + +Build 1.12-14.21.0.2347: + mezz: Fix Universal bucket handling for Fluids with NBT (Fix #3757) + +Build 1.12-14.21.0.2346: + diesieben07: + Clean up Logging (#3953) + # Conflicts: + # + patches/minecraft/net/minecraft/client/renderer/texture/Stitcher.java.patch + # + patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch + # patches/minecraft/net/minecraft/entity/EntityList.java.patch + # patches/minecraft/net/minecraft/tileentity/TileEntity.java.patch + # src/main/java/net/minecraftforge/oredict/OreDictionary.java + +Build 1.11.2-13.20.0.2345: + diesieben07: Clean up Logging (#3953) + +Build 1.12-14.21.0.2344: + mezz: Fix ShapedOreRecipe matching. #4038 + +Build 1.12-14.21.0.2343: + LexManos: Fix recipe names in packaged jars. Closes #4039 + +Build 1.12-14.21.0.2342: + bs2609: Update NoteBlockEvent with new instruments. Resolves #4018. (#4019) + +Build 1.12-14.21.0.2341: + mezz: Fix Chunk patch (#4036) + +Build 1.12-14.21.0.2340: + TechnicianLP: IRecipeConditions forge:and and forge:false (#4017) + +Build 1.12-14.21.0.2339: + mezz: Fix itemstack comparison with null + mezz: Fix patches in Chunk and Explosion (#4036) + +Build 1.12-14.21.0.2338: + LexManos: Fix loading recipe jsons from jar files. + +Build 1.12-14.21.0.2337: + lumien231: [1.12] Fixes Exception when getting modlist for a vanilla client (#4028) + williewillus: + Fix shapeless recipes not being able to use NBT on output, and fixed + issue with null groups. + +Build 1.12-14.21.0.2336: + bs2609: Remove unused patch to ItemRecord. Closes #2686. (#4035) + +Build 1.12-14.21.0.2335: + mezz: Add timeout to TestNetworkHandshake setup + mezz: Disable TestNetworkHandshake to make Travis work again + mezz: Log info on Travis tests + +Build 1.12-14.21.0.2334: + mezz: Clean up ShapedOreRecipe and ShapelessOreRecipe + mezz: Update mcp mappings to 20170611 + mezz: Update MCP mappings to 20170617 + mezz: Add missing Override annotations + +Build 1.12-14.21.0.2333: + shadowfacts: Allow condition factories to be registered from JSON (#4015) + +Build 1.12-14.21.0.2332: + cpw: + Patch a small bug in SPacketLoginSuccess that lets us emulate the + network handshake. This will be very useful as I rebuild the networking. + +Build 1.12-14.21.0.2331: + LexManos: + Filter any recipe starting with _, Such names are reserved for metadata. + Actually implement conditions for recipes. + +Build 1.12-14.21.0.2330: + LexManos: Fix NBT ItemStack support in json loader. Closes #4002 + +Build 1.12-14.21.0.2329: + LexManos: Fix OreIngredient comparing items in reverse. Closes #3999 + +Build 1.12-14.21.0.2328: + marvinroesch99: Make registries persist by default, fixes #3989 (#3998) + +Build 1.12-14.21.0.2327: + tterrag1098: + Fix exception in ShapedOreRecipe.checkMatch for recipes that don't fill + entire crafting grid (#3995) + +Build 1.12-14.21.0.2326: + LexManos: Fix parseShaped missing Empty slot item. Closes #3990 + +Build 1.12-14.21.0.2325: + LexManos: Fix CraftingHelper.parseShapred error. Closes #3979 + +Build 1.12-14.21.0.2324: + LexManos: Fix NPE in config menu with custom keybinds. Closes #3985 + +Build 1.12-14.21.0.2323: + LexManos: + In-progress Registry system enhancement. Needs cpw to take a look at + enabling removing/overriding in the registry stuff. But in theory it + loads json recipes for mods now. + +Build 1.12-14.21.0.2322: + LexManos: Update ASM for 5.2, and host it on Forge's maven now. + +Build 1.12-14.21.0.2321: + mezz: Fix log4j configuration + mezz: Fix log4j configuration + mezz: Fix log4j configuration + mezz: Update VanillaRegistryTests + +Build 1.10.2-12.18.3.2316: + mezz: Fix log4j configuration + +Build 1.11.2-13.20.0.2315: + mezz: Fix log4j configuration + +Build 1.11.2-13.20.0.2314: + Choonster.2010: Fix IItemHandler wrappers returned by EntityLivingBase (#3942) + +Build 1.11.2-13.20.0.2313: + mezz: Fix getShareTag replacing data on the server (#3776) Closes #3682 + +Build 1.11.2-13.20.0.2312: + LexManos: + Fix crashed caused by bad mods reflectively breaking the grass drop + list. Closes #3943 + +Build 1.11.2-13.20.0.2311: + Barteks2x: Make World.isValid and World.isOutsideBuildHeight public (#3919) + erlend: + Deprecate vanilla getExplosionResistance and properly annotate the forge + replacement (#3929) + bs2609: Make Teleporter fields accessible to subclasses (#3930) + rlonryan: + Changed Event.setCanceled To throw UnsupportedOperationException instead + of IllegalArgumetnException when called on a non-cancelable object + (#3926) + williewillus: Fix canRiderInteract being called on the wrong entity (#3934) + TechnicianLP: NBTTagList implements Iterable (#3884) + bs2609: Clean up MapData patch (#3905) + LexManos: Fix shaders not loading from mod domains Closes #3921 + +Build 1.11.2-13.20.0.2310: + mezz: Clean up formatting of Forge Test mods and disable noisy ones (#3908) + +Build 1.11.2-13.20.0.2309: + InsomniaKitten: Fix broken milk bucket model (#3925) + +Build 1.11.2-13.20.0.2308: + LexManos: Make hopper update accessible to subclasses. Closes #3849 + lukas172: Fix patches of GuiScreen(#3704) and ItemDye(#3736) (#3878) + +Build 1.11.2-13.20.0.2307: + Flaxbeard: Update EntityPlayer armor calculations and ISpecialArmor (#3838) + +Build 1.11.2-13.20.0.2306: + bs2609: + Fixes for PlayerDestroyItemEvent being called with empty itemstacks. + (#3728) + bs2609: + Tweak vertex lighter to avoid causing excess array initialisations + (#3771) + +Build 1.11.2-13.20.0.2305: + Madsthunder: [1.11.2] Added support for Village capabilities (#3648) + +Build 1.11.2-13.20.0.2304: + bluemonster122: + Fixes BlockLiquidWrapper placing a Static fluid where it should place a + Flowing one (#3893) + +Build 1.11.2-13.20.0.2303: + diesieben07: Disable frost walker enchantment on anything but vanilla water (#3906) + +Build 1.11.2-13.20.0.2302: + mattmess1221: Fix head being angled badly when riding mobs. Fixes MC-1207 (#3901) + +Build 1.11.2-13.20.0.2301: + mezz: + Print system details on startup without printing a full crash report + (#3909) + +Build 1.11.2-13.20.0.2300: + mezz: Reduce memory pressure from new objects during loading screen (#3907) + +Build 1.11.2-13.20.0.2299: + diesieben07: Add methods to write IForgeRegistryEntry to ByteBuf (#3806) + +Build 1.11.2-13.20.0.2298: + tterrag1098: + Fix normals not being generated for formats without normals (#3896) + Fix normals not being generated for formats without normals + +Build 1.10.2-12.18.3.2297: + mezz: + Fix MC-117087, prevent calling Class.getSimpleName on TEs unnecessarily + (#3887) + +Build 1.11.2-13.20.0.2296: + mezz: + Fix MC-117087, prevent calling Class.getSimpleName on TEs unnecessarily + (#3873) + +Build 1.11.2-13.20.0.2295: + ichttt: Add a configurable delay when unloading dimensions, fixes #3455 (#3679) + +Build 1.11.2-13.20.0.2294: + maxanier: + Changed custom entity selectors from event based to factory based. + (#3579) + +Build 1.11.2-13.20.0.2293: + ichttt: + Create ItemFishedEvent, the event is cancelable, but items are not + mutable. Use LootTables to control that. (#3705) + +Build 1.11.2-13.20.0.2292: + williewillus: Fix forge pipeline block shifts (#3789) + +Build 1.11.2-13.20.0.2291: + maxa.shen: Add pack.mcmeta to examplemod (#3813) + +Build 1.11.2-13.20.0.2290: + bs2609: + Relocate TileEntity#onLoad call to after it's added to the world instead + of the chunk so as to have a valid world reference (#3836) + +Build 1.11.2-13.20.0.2289: + diesieben07: + Allow client commands to control whether they can be invoked without + prefix. (#3847) + mezz: Improvements to FluidUtil (#3839) + +Build 1.11.2-13.20.0.2288: + mezz: + Remove splash.properties option for Mojang logo (has been disabled) + (#3859) + Fix backgound color being applied to the Forge logo + mezz: When the window is closed during loading, exit the game quickly (#3858) + +Build 1.11.2-13.20.0.2287: + ichttt: Fix GuiMultipleModsErrored ignoring scrolling with mouse wheel. (#3861) + +Build 1.11.2-13.20.0.2286: + Madsthunder: + [1.11.2] Fixed Zombie Villagers not setting and getting professions + correctly (#3678) + +Build 1.11.2-13.20.0.2285: + JDLogic: + Prevent NPE in ConfigManager and fix config gui being enabled for all + mods. Fixes #3856. (#3860) + +Build 1.11.2-13.20.0.2284: + LexManos: + Fix return value of ItemHandlerHelper.insertItem being incorrect when + destination was null. Closes #3840 + +Build 1.11.2-13.20.0.2283: + LexManos: + Fix vanilla inventory wrappers not properly calling markDirty. Closes + #3854 and #3810 Also updated IItemHandler javadocs to reflect returning + EMPTY instead of NULL. + +Build 1.11.2-13.20.0.2282: + cpw: + Add in a check to the splash screen. If the Display.update call takes + too long on average (over first 200 frames) we'll use a sleep based + timer to allow mods doing splash screen work some time on the LWJGL + global lock. + (cherry picked from commit 03d7eaa) + +Build 1.10.2-12.18.3.2281: + github: + Fix NumberFormatException being thrown for empty ItemStack + deserialization. Fixes #3828. (#3830) + +Build 1.11.2-13.20.0.2280: + LexManos: + Fix NumberFormatException being thrown for empty ItemStack + deserialization Thanks @gabizou, 1.11.2 version of #3830 + LexManos: Cleanup AccessTransformer debug output + +Build 1.11.2-13.20.0.2279: + kyo.se.llout: Fix Fluid models rendering with gaps (#3747) Closes #2993 + +Build 1.11.2-13.20.0.2278: + mezz: Fix mutable blockpos leak MC-114281 (#3742) + +Build 1.11.2-13.20.0.2276: + Leviathan143: + Fix typo in LootEntry.Serialiser causing incorrect serialisation. Closes + #2757, Fixes MC-115407 (#3823) + +Build 1.11.2-13.20.0.2274: + ikp10: + Add Item.canDestroyBlocksInCreative() allowing more items to not break + blocks in creative (#3805) + PProvenzano: Fix invulnerable items becoming invisible client side MC-53850 (#3807) + +Build 1.11.2-13.20.0.2273: + williewillus: + Allow result of PlayerInteractEvent to be changed when it's cancelled + (#3744) + bs2609: Added missing bounds check to ChunkCache.getBiome (#3752) + bs2609: Add AnimalTameEvent for handling animal taming (#3763) + mezz: + Skip loading models if there is a fatal mod dependency error (#3772) + Close #3768 + mezz: Add GenerateMinable event for mesa gold (#3774) Closes #3738 + CrafterKina: Fixed HarvestDropsEvent issue by fixed-length lists on getDrops (#3778) + diesieben07: Ignore calls to sendMessage for fake players. Fixes #3796. (#3798) + +Build 1.10.2-12.18.3.2272: + mezz: Fix Vanilla BlockPos memory leak MC-114281 (#3743) + +Build 1.11.2-13.20.0.2271: + Da-Technomancer: + Added a boolean flag for disabling Entity onUpdate (#3731) + The flag is false by default, and if true the Entity will not update. It + is saved and loaded from NBT, and is called updateBlocked. Modders are + responsible for managing this flag for entities they with to 'freeze' or + 'unfreeze'. + Choonster.2010: Add EnumHand and ItemStack to BonemealEvent (#3736) + +Build 1.11.2-13.20.0.2270: + egabriel: Fix EntityFallingBlock check for ITileEntityProvider (#3711) + paulo.siqueira: Add LootTableManager to the LootTableLoadEvent (#3717) + bs2609: Revert block snapshots in reverse order. Fixes #3608. + +Build 1.11.2-13.20.0.2269: + the.f1repl4ce: Added ClientChatEvent. Closes #1442 (#3704) + +Build 1.11.2-13.20.0.2268: + blay09: + Fix custom array entry class for config GUI being ignored when adding + new entries (#3697) + +Build 1.11.2-13.20.0.2267: + kashike: Use thread groups to detect the effective side (#3644) + +Build 1.11.2-13.20.0.2266: + Silly511: + New LivingDestroyBlockEvent for controlling if some entities can destroy + blocks (#3628) + +Build 1.11.2-13.20.0.2265: + LexManos: Fix arrays in map values for config system + LexManos: Fix breaking particles on dedicated server. Closes #3825 + +Build 1.11.2-13.20.0.2264: + LexManos: [MC-2518] Fixed missing break sound and particles. Closes #3821 + +Build 1.11.2-13.20.0.2263: + kirill.desirehd: + [1.11.x] Fix blank tab in creative inventory when additional tabs evenly + divisible by 10 (#3817) + JDLogic: Fix java 6/7 compatibility in GuiConfig (#3824) + +Build 1.11.2-13.20.0.2262: + thilo: + Adding config GUIs to the @Config based configuration System (#3735) + Lots of internal API that modders should not touch. See test mods for + example usages. + +Build 1.11.2-13.20.0.2261: + LexManos: + Fix vanilla bug where player reputations villages were reset on read. + Deprecated Username based API in favor of UUID based API. + +Build 1.11.2-13.20.0.2260: + LexManos: Add setter for default key in RegistryBuilder. Closes #3804 + +Build 1.11.2-13.20.0.2259: + LexManos: + Fix error when reading world info for old saves with missing dimensions. + Closes #3786 #3331 + +Build 1.11.2-13.20.0.2258: + mezz: + Detect and log cascading chunk generation issues during terrain + population (#3756) + +Build 1.11.2-13.20.0.2257: + mezz: + Fix #3733 Splash Screen memory bar background matches screen background + (#3775) + burtonjae: + Fix duplicate achievements getting added to the achievement list (#3770) + (#3779) + +Build 1.11.2-13.20.0.2256: + mattia.malonni: Add additional constructors to EnergyStorage to set values at load time. + +Build 1.11.2-13.20.0.2255: + diesieben07: Fix parameter-names for WorldProvider.shouldMapSpin (#3767) + +Build 1.10.2-12.18.3.2254: + cpw: + Add in a check to the splash screen. If the Display.update call takes + too long on average (over first 200 frames) we'll use a sleep based + timer to allow mods doing splash screen work some time on the LWJGL + global lock. + +Build 1.11.2-13.20.0.2253: + paul.fulham0: + Fix MC-112730 TE global renderer duplicate render (#3651) + * Fix TE global renderer duplicate render + +Build 1.11.2-13.20.0.2252: + bartek.bok: Fix entity write catch block (#3726) + +Build 1.11.2-13.20.0.2251: + Barteks2x: + Fixed TESR items not rendering correctly before entering world + (MC-112292) (#3666) + Fixed crash when rendering text in TESR items before entering world + +Build 1.11.2-13.20.0.2250: + josephcsible: + Fixed 'reset to defaults' button not working on some Forge config + fields. + +Build 1.11.2-13.20.0.2249: + gigaherz: + Allow mods to set other default "home dimensions" for respawning. + (#3528) + sjx233: Add DifficultyChangeEvent (#3525) + +Build 1.11.2-13.20.0.2248: + Guichaguri: Added Forge slot methods to creative container (#3581) + williewillus: + Persist PotionEffect curative items and initialize defaults from Potion + (#3573) + +Build 1.11.2-13.20.0.2247: + williewillus: Restore missing Biome GetWaterColor event. Closes #3164. (#3625) + +Build 1.11.2-13.20.0.2246: + dawn0966: Fixed Missing Furnace Fuels (#3627) + +Build 1.11.2-13.20.0.2245-3630: + vincent.lee: Fix category comments not working. Closes #3593 + bs2609: Prevent concurrent modification of ClassInheritanceMultiMap (#3632) + +Build 1.11.2-13.20.0.2244: + diesieben07: Start firing AttachCapabilitiesEvent (#3645) + bs2609: Fixed ChunkCache.getTileEntity creating tile entities off world thread. + ichttt: Improve exception messages during initialization. + +Build 1.11.2-13.20.0.2243: + LexManos: + Add @Name annotation to config system allowing you to use custom key for + value. Also added category option to root config to allow customization. + See examples/docs for information. + +Build 1.11.2-13.20.0.2242: + LexManos: Fix Poppy to Dandelion ratio + LexManos: Fixed Flower Forests not having proper flowers. Closes #3652 + +Build 1.11.2-13.20.0.2240: + bs2609: Use Forge setting to determine baby zombie chance. Fixes #3690. + aa1ronham: + Add a null check for the throwable message in + NetWorkDispatcher#exceptionCaught (#3688) + (cherry picked from commit 1be1bb59c5c4c7432c515ef07beb6bf7e1f6ef27) + williewillus: + Make getRGBDurabilityForDisplay use getDurailityForDisplay by default. + Closes #3670 (#3673) + bs2609: Fix bug caused by ItemMinecart patch (#3672) + CreativeMD: + Add implementation for Living Attack event on client-side for players + (#3667) + * Fixed unused import + williewillus: Fix forge:default-item missing case for FIXED transform (#3663) + +Build 1.10.2-12.18.3.2239: + aa1ronham: + Add a null check for the throwable message in + NetWorkDispatcher#exceptionCaught (#3688) + +Build 1.11.2-13.20.0.2238: + LexManos: + Properly fix IShearable implementation. Fixes shears taking damage + twice, mooshroom particles, and blocks dropping incorrect loot. + +Build 1.11.2-13.20.0.2237: + LexManos: Fix English injection for some mods on dedicated server. + +Build 1.11.2-13.20.0.2236: + LexManos: + Override Mojang's new logging config to re-enable our logging to text + file. The new launcher's GUI for logs WILL NOT WORK until they add + support on their end. + LexManos: Fix hoppers being able to insert shulker boxes into shulker boxes. + +Build 1.11.2-13.20.0.2235: + tehgeek: + Stop rotation of extended pistons, beds, and double chests Fixes #3634 + Fix rotation of repeaters and comparators + fry: + Added check for quad builder to always have the particle texture set, + and fixed where that wasn't true. Fixes #3653 + williewillus: Fix Item.doesSneakBypassUse being applied incorrectly. + williewillus: Fix ClientTickEvent Post firing inside another profiler section (#3715) + cordonfreeman: + Fix for bad decompile process on Particle.java that causes onGround flag + to not get set properly as well as motionX and motionZ not being set to + 0 when their axis has collision happening (#3716) + +Build 1.10.2-12.18.3.2234: + tehgeek: + Fixed TileEntity#getRenderBoundingBox not offsetting correctly causing + more TEs to render then needed (#3709) (#3712) + +Build 1.11.2-13.20.0.2233: + florian: + Fixed TileEntity#getRenderBoundingBox not offsetting correctly causing + more TEs to render then needed (#3709) + +Build 1.11.2-13.20.0.2232: + cordonfreeman: + [1.11.2] Make AbstractSkeleton implementable by fixing limited access on + getStepSound (#3702) + +Build 1.11.2-13.20.0.2231: + Choonster.2010: Fix extracted mods crash report file name for Windows (#3701) + +Build 1.11.2-13.20.0.2230: + tehgeek: + Remove dynamic lambda methods when inside of SideOnly methods + Clean signatures of ReflectionHelper methods. + +Build 1.11.2-13.20.0.2229: + LexManos: Fix world spawn fuzz. + LexManos: + Fix world spawn fuzz. (reverted from commit + 450c3a80c10c1dc27ef68a3f5e5f58af6a827fde) Protip Don't code while + groggy. + diesieben07: Fix spawn-fuzz formula (#3695) + +Build 1.11.2-13.20.0.2228: + diesieben07: + Fix some cases where world time is not passed through the WorldProvider. + (#3685) + +Build 1.11.2-13.20.0.2227: + lukas.tenbrink: + Replace listSubtypes with listSupertypes to match the intended behavior. + (#3564) + lukas.tenbrink: Fix addTypes not adding in the base types. (#3681) + +Build 1.11.2-13.20.0.2226: + goto.minecraft: this finaly fixes #2866 (#3656) + +Build 1.11.2-13.20.0.2225: + williewillus: Fix MC-111753 (#3655) + +Build 1.11.2-13.20.0.2224: + fry: Small bugfix in lighting logic. + fry: + Fix default missing model zoom text not being set to false on all + places. + +Build 1.11.2-13.20.0.2223: + fry: Added the variant name to the missing model. (#3328) + +Build 1.11.2-13.20.0.2222: + tehgeek: Fix #3635 MC-103403 fix ingredient count for ingot block recipes (#3640) + +Build 1.10.2-12.18.3.2221: + LexManos: + Cache entity constructors for a small performance optimization + (cherry picked from commit 50bf03b82b72866bd54e796a37707d45bcbf3d80) + LexManos: + New client config option to force all chunk rendering off the main + thread. This may help FPS issues, but may also result in world + holes/rendering issues. Also fix Forge configs not saving properly. + (cherry picked from commit 7da6c2d0e1b0056e520990d78f63a9be8d0db5ed) + +Build 1.11.2-13.20.0.2220: + LexManos: + New client config option to force all chunk rendering off the main + thread. This may help FPS issues, but may also result in world + holes/rendering issues. Also fix Forge configs not saving properly. + +Build 1.10.2-12.18.3.2219: + tehgeek: Skip first baking in ModelLoader (#3621) (#3638) + +Build 1.11.2-13.20.0.2218: + LexManos: Cache entity constructors for a small performance optimization + +Build 1.10.2-12.18.3.2217: + tehgeek: + Fix some resources that are never closed, close in a finally block + (#3637) + +Build 1.11.2-13.20.0.2216: + cpw: + Bypass forge chunk cache if it's configuratively disabled + (cherry picked from commit 9fe6385) + +Build 1.10.2-12.18.3.2215: + cpw: Bypass forge chunk cache if it's configuratively disabled + +Build 1.11.2-13.20.0.2214: + Choonster.2010: + Fix Biome#getSpawnableList returning an empty list for non-vanilla + EnumCreatureTypes (#3611) + +Build 1.11.2-13.20.0.2213: + williewillus: Skip first baking in ModelLoader (#3621) + +Build 1.11.2-13.20.0.2211: + diesieben07: Allow block to specify their type for AI pathfinding (#3546) + +Build 1.11.2-13.20.0.2210: + ichttt: Fix #3576 Unnecessary warning about totem being renamed (#3614) + liach: Removed an unsafe usage of `EntityMinecart.getType()` (#3592) + bs2609: Fix DungeonHooks method to use correct type (#3587) + bs2609: Fix ContainerRepair patch to prevent NPE (#3553) + modmuss50: Add Iron Nugget to OreDictionary (#3571) + JDLogic: Add missing patch to ItemStack isItemStackEqual (#3577) + tehgeek: Improve performance of inserting into inventory wrappers (#3622) + bs2609: Fix vanilla bug MC-98707 (#3565) + +Build 1.10.2-12.18.3.2209: + JDLogic: + [1.10.x] Fix ItemHandlerHelper canStack methods not checking + capabilities (#3105) + +Build 1.11.2-13.20.0.2208: + molecularphylo: Fix null check in BrewingRecipeRegistry (#3584) + williewillus: Fix IItemHandler's IStorage using nulls (#3580) + bs2609: Fix and clean up ItemBow.onPlayerStoppedUsing() patch (#3555) + bs2609: Small cleanup for PlayerInteractEvent (#3563) + tehgeek: Clean up null issues, add more annotations (#3590) + tehgeek: Fix #3596 Close jar sources safely in Java 6 (#3597) + williewillus: Fix milk not working on anything at all (#3574) + +Build 1.11.2-13.20.0.2207: + tehgeek: Use travis_wait to extend the timeout on gradlew build (#3610) + bs2609: Fix a couple more ItemStack null checks (#3586) + +Build 1.11.2-13.20.0.2206: + fry: + Fix super call to ItemOverrideList constructor inside + AnimationItemOverrideList, fixes #3264. + +Build 1.11.2-13.20.0.2205: + fry: Added caching for baked vanilla models, fixes #3594. + +Build 1.11.2-13.20.0.2204: + williewillus: Fix horse cap patch being reapplied in the wrong place (#3609) + +Build 1.11.2-13.20.0.2203: + tehgeek: + Add .travis.yml (#3598) + * Add .travis.yml + + * fix --refresh-dependencies + + * try java 8 + + * add build with stracktrace + + * Fix running test + + * try building with java 6 + + * try using simplified init.gradle + + * Revert "try using simplified init.gradle" + This reverts commit e56041e794e3b8c13453245eb2605118e4ac68ce. + + * Revert "try building with java 6" + This reverts commit 51795385f453fdd8a0e77c632b5463d8754b1ba4. + + * Fix running tests + + * skip createExe task + + * Test with broken debug mod + + * Revert "Test with broken debug mod" + This reverts commit 3b26700582ba4f4f5477f5927b0006ef0fe85bb0. + +Build 1.10.2-12.18.3.2202: + aa1ronham: Properly deobfuscate lambda expressions (#3532) + +Build 1.11.2-13.20.0.2201: + LexManos: Inital 1.11 update. + LexManos: Fix tests... + +Build 1.11-13.19.1.2199: + tehgeek: Fix #3561 import io.IOUtils instead of compress.utils.IOUtils (#3562) + +Build 1.11-13.19.1.2198: + tehgeek: Update MCP mappings to snapshot_nodoc_20161220 (#3551) + +Build 1.11-13.19.1.2197: + bs2609: [1.11] Fixes for Chunk.getBlockLightOpacity implementation (#3537) + tehgeek: + Fix some resources that are never closed, close in a finally block + (#3544) + tehgeek: + Add hook to allow any block to respond to filtered block updates like + the Observer block (#3547) + tehgeek: Add nullable annotations to IGuiHandler (#3550) + tehgeek: Properly deobfuscate lambda expressions (#3552) + +Build 1.11-13.19.1.2196: + JDLogic: + [1.11] Fix ItemHandlerHelper canStack and ItemStack areTagsEqual methods + not checking capabilities (#3500) + +Build 1.11-13.19.1.2195: + tehgeek: + Make NBSP character display as a space. MC-2595 (#3522) + Add easy getter for the Locale: MinecraftForgeClient.getLocale() + +Build 1.11-13.19.1.2194: + bs2609: + Patch EntityPlayerSP to use location-aware version of isNormalCube + (#3494) + tehgeek: + Fix uses of uppercase "Forge" where it fails Loader.isModLoaded(modID) + (#3513) + maxanier: [1.11] Made WalkNodeProcessor consider burning blocks (#3515) + tehgeek: Fix setting the world in TileEntity.addTileEntity (#2863) (#3517) + dawn0966: + Added Oak door to Ore Dictionary Exclusion list to fix able to craft it + with any wood type (#3519) + +Build 1.11-13.19.1.2193: + whs1999kr: reset repo to upstream and reapplied patches (#3434) + tehgeek: [1.11] Add memory display to loading screen (#3447) + +Build 1.11-13.19.1.2192: + rock: [1.11] Added EnchantmentLevelSetEvent (#3433) + +Build 1.11-13.19.1.2191: + minecrell: Register Minecraft mod container in FML loader (#3414) + +Build 1.11-13.19.1.2190: + LexManos: Fix modid field name for ProjectInjector. + LexManos: Small memory optimization in Registries. + +Build 1.11-13.19.1.2189: + LexManos: + Enable Enforcement of modid formatting. Must be lowercase and <= 64 + characters + +Build 1.11-13.19.1.2188: + LexManos: Bump version for RB. + +Build 1.11-13.19.0.2187: + mezz: [1.11.x] Refine fluid placement utilities (#3509) + +Build 1.11-13.19.0.2186: + LexManos: + Properly filter out annotations that are for multiple mods in the same + mod source. This prevents disabled mods from getting their proxies + injected. Also prevents mods from getting their proxies injected + multiple times. Effects the @EventBusSubscriber, @Instance, @Metadata, + @SidedProxy annotations. If the target modid is not in the annotation + data, and there are multiple mods in the source, it will attempt to find + it by matching the annotations's class names. This is a potentially + breaking change. Review your logs for "skipping" messages. + +Build 1.10.2-12.18.3.2185: + LexManos: Bump version number for new Recommended Build. + +Build 1.11-13.19.0.2184: + LexManos: + Prevent a crash when scheduling block updates for non-existing blocks + #3485 + +Build 1.10.2-12.18.2.2183: + LexManos: + Prevent a crash when scheduling block updates for non-existing blocks + #3485 + +Build 1.10.2-12.18.2.2182: + LexManos: + Make Container.mergeItemStack respect target slot's max size when slot + is non-empty. Closes #3498 Fix Shift clicking in Beacons with stacked + items when fuel slot is empty. + (cherry picked from commit c6bc4ec5a92b640ebe773bfa48732dfa7eb59a17) + LexManos: + Fix NPE when rendering missing mod screen with version bound + requirements. #3501 + (cherry picked from commit c1e832bff09c949bfe736f492c2e4aa8004baa84) + LexManos: + Fix issue reading chunks from the network when client and server do not + agree on block count. Closes #34925 + (cherry picked from commit daf21e4dcf246cfa15c362800effc5dc787ab777) + +Build 1.11-13.19.0.2181: + LexManos: Make sure to log kick messages in NetworkDispatcher. Closes #3507 + LexManos: + Fix NPE when rendering missing mod screen with version bound + requirements. #3501 + LexManos: + Added isItemValidForSlot check to hopper extraction (#3444) + (cherry picked from commit 0348760a774ca7ed9639376baadae38e272f5bf8) + LexManos: + Fix for showing config default values twice in tooltip (#2257) (#3338) + (cherry picked from commit be73ec3d5ebd972cfacb0f255f71112a0430bc43) + LexManos: + Add null check and informative error message when client receives an + invalid update packet (#3266) + (cherry picked from commit 882e0e3bf22784d693e3816b0efeba5fbedb1a22) + LexManos: + Add ItemBlockSpecial#getBlock (#3343) + (cherry picked from commit cf26f4acbe48ee8790edc03d0b5c16c1167278ab) + LexManos: + Added gradle.properties to MDK (#3361) + The file sets the default max heap size to 3 GiB so that the + decompilation doesn't fail as often. + (cherry picked from commit 49ec3d1b9322ee2b7a1312059118173b0b3fe6d0) + LexManos: + Make SlotItemHandler override Slot.getSlotStackLimit. Closes #3497 Make + Container.mergeItemStack respect target slot's max size when slot is + non-empty. Closes #3498 Fix Shift clicking in Beacons with stacked items + when fuel slot is empty. + LexManos: Restore missed patch in World.updateComparatorOutputLevel. Closes #3495 + LexManos: + Fix issue reading chunks from the network when client and server do not + agree on block count. Closes #34925 + +Build 1.11-13.19.0.2180: + diesieben07: Add missing pooled BlockPos retain in World patch (#3486) + mezz: + Add a way for modded GuiScreens to cancel mouse and keyboard events + (#3438) + blay09: + [1.11] Add canApplyAtEnchantmentTable to Item (#3463) + Allowing increased control of which enchantments can be put on an item + over Vanilla's hard-coded item type checks. + disabled when the item is enchantable but the enchantability requirement + is not met on lower levels. + mezz: [1.11] Add biome dictionary types for newer biomes (#3475) + bs2609: [1.11] Fix null checks in shouldCauseReequipAnimation (#3482) + +Build 1.10.2-12.18.2.2179: + blay09: + Add null check and informative error message when client receives an + invalid update packet (#3266) + raoulvdberge: Add ItemBlockSpecial#getBlock (#3343) + yannick: + Added gradle.properties to MDK (#3361) + The file sets the default max heap size to 3 GiB so that the + decompilation doesn't fail as often. + +Build 1.11-13.19.0.2178: + liach: Moved TextureStitchEvent.Pre to allow custom sprites for blocks (#3436) + +Build 1.11-13.19.0.2177: + bs2609: Fix sky colour blending not working for render distances >16 (#3476) + +Build 1.11-13.19.0.2176: + logictechcorp: Allow connectable blocks to choose what they can connect to (#3437) + +Build 1.11-13.19.0.2175: + dawn0966: Changed Armor Material to use an ItemStack aware version (#3469) + +Build 1.11-13.19.0.2174: + bs2609: Fix Redstone Torch memory leak (#3474) + +Build 1.11-13.19.0.2173: + diesieben07: BiomeDictionary code cleanup (#3466) + +Build 1.11-13.19.0.2172: + TechnicianLP: Added EquipmentChangeEvent (#3411) + +Build 1.10.2-12.18.2.2171: + bs2609: Fix Redstone Torch memory leak (#3271) + +Build 1.10.2-12.18.2.2170: + 1vInc: Fix for showing config default values twice in tooltip (#2257) (#3338) + +Build 1.11-13.19.0.2169: + marvinroesch99: Update assets to new Forge brand (#3464) + +Build 1.11-13.19.0.2168: + LexManos: + First pass at exposing data fixers to modders. Each mod gets its own + version number, mods SHOULD NOT rely on other mod's fixers, just care + about yourself. Walkers can use IDataFixerData to retrieve their + version. + +Build 1.11-13.19.0.2167: + williewillus: Add getSlotLimit(slot) to IItemHandler (#3445) + +Build 1.10.2-12.18.2.2166: + draco18s: Added isItemValidForSlot check to hopper extraction (#3444) + +Build 1.11-13.19.0.2165: + mezz: Provide access to GuiContainer location and dimensions (#3440) + kashike: + Add method to check if an Entity can trample a Block. Fixes #2510 + (#2730) + cpw: + Pass along if the respawn event was the result of the end being + conquered or not (end respawning is really FUNKY code and uses death + instead of 'change dimension') + +Build 1.11-13.19.0.2162: + bs2609: Clean up handling of changes to IVertexConsumer (#3458) + +Build 1.11-13.19.0.2161: + bs2609: Quick fix for another ItemStack null check (#3426) + mezz: Provide access to ShapedOreRecipe width and height (#3439) + +Build 1.11-13.19.0.2160: + cpw: + Fix problem with the server hanging around after forcing the client to + exit, leaving behind stale processes. + +Build 1.11-13.19.0.2159: + mezz: + Fix #3432 Hopper and Dropper item moving does not exactly match vanilla + (#3442) + mezz: Fix using the wrong Pair implementation (#3449) + +Build 1.11-13.19.0.2157: + mezz: Fix #3424 ItemCraftedEvent returns air when shift-clicking (#3441) + +Build 1.11-13.19.0.2156: + mezz: + Cleanup some null checks and remove deprecated methods in Item and Block + (#3429) + +Build 1.11-13.19.0.2155: + LexManos: Make all tests one side only, so we can test vanilla clients in dev env. + LexManos: + Insert FML packet handler into Vanilla pipelines in case modders send + FMLPacket to vanilla. Fixes #3422 + LexManos: Fix max CustomPayload size, 1MB not 16MB. + +Build 1.11-13.19.0.2154: + LexManos: Fix AbstractMethodException in FML Registries. Closes #3427 + +Build 1.11-13.19.0.2153: + shadowfacts: + Move EntityHorse capability patches to AbstractHorse (#3417) + Fixes #3409 + LexManos: Fix ItemStack null check in PlayerInteractionManager + +Build 1.11-13.19.0.2152: + shadowfacts: Initial annotations/nullability changes (#3392) + TechnicianLP: Remove Block.addInformation exists in vanilla (#3413) + LexManos: Fix Item transfers related to Hoppers. + +Build 1.10.2-12.18.2.2151: + ohai.iChun: + Add GetCollisionBoxesEvent. Allows manipulation of the collision boxes + for moving entities and entities stuck in walls. (#3397) + +Build 1.11-13.19.0.2150: + ohai.iChun: + Add GetCollisionBoxesEvent. Allows manipulation of the collision boxes + of blocks for entities. MC1.11 edition. (#3405) + +Build 1.11-13.19.0.2149: + LexManos: First draft of Entity Registry re-write. + +Build 1.11-13.19.0.2148: + LexManos: + Make Wither Skulls respect Block.canEntityDestroy. Closes #3404 + (cherry picked from commit 6b52023a5c341420d976cb50359e2a2a4a6a9192) + +Build 1.10.2-12.18.2.2147: + LexManos: Make Wither Skulls respect Block.canEntityDestroy. Closes #3404 + +Build 1.11-13.19.0.2146: + Bartek_s2: Added EnumHand parameter to Block.getStateForPlacement (#3402) + +Build 1.11-13.19.0.2145: + LexManos: + Fix issues with ZombieVillagers Closes #3398 1.11 doesn't intertwine + zombie types anymore so our edits to split them out for custom + professions are not needed. + LexManos: Fix client side placement issue on blocks with GUIs. Closes #3399 + +Build 1.11-13.19.0.2144: + ezterry3: + Fix Villagers for 1.11 (#3401) + - Add cartographer registry entry + - Fix textures for the nitwit + +Build 1.11-13.19.0.2143: + mezz: [1.11] Fix nullability issues around ForgeHooks and Capabilities (#3395) + +Build 1.11-13.19.0.2142: + larsgerrits99: + Change OreDictionary over from "null" to the new ItemStack system. + (#3400) + +Build 1.11-13.19.0.2141: + LexManos: + Do not install mod_list.json for optional mods. Classpath scanning is in + so they will still be detected + +Build 1.10.2-12.18.2.2140: + LexManos: + Do not install mod_list.json for optional mods. Classpath scanning is in + so they will still be detected + +Build 1.10.2-12.18.2.2139: + LexManos: Include Mercurius in installer. See Forge Forums for more info. + +Build 1.11-13.19.0.2138: + LexManos: Include Mercurius in installer. See Forge Forums for more info. + +Build 1.11-13.19.0.2137: + LexManos: Restore the ability to register modded TileEntities. + +Build 1.11-13.19.0.2136: + mezz: Remove deprecated Fluid stuff + mezz: Implement fluid item capabilities without item swapping + +Build 1.11-13.19.0.2135: + LexManos: + Make EntityShulker fire EnderTeleportEvent. Closes #3383 + (cherry picked from commit d48985fafaed6de6f09136b999ca8aa44184a7b9) + LexManos: Fixed damage bar color. Closes #3389 + LexManos: Fix ItemStackHandler's constructor ignoring size. Closes #3386 + shadowfacts: Fix crafting causing crash (#3388) Closes #3387 + +Build 1.10.2-12.18.2.2134: + LexManos: Update installer to 1.5, and fix local buildscript issues. + LexManos: Make EntityShulker fire EnderTeleportEvent. Closes #3383 + +Build 1.11-13.19.0.2133: + LexManos: + Added event to allow modification of player visibility to mobs/AI + (#3382) + (cherry picked from commit 0a5ef64d6ea96fe85d7c62107081ced649e6a3e9) + +Build 1.10.2-12.18.2.2132: + maxanier: + Added event to allow modification of player visibility to mobs/AI + (#3382) + +Build 1.11-13.19.0.2131: + LexManos: Apply missed patch to WorldProvider. + mezz: [1.11] Fix initCapabilities for ItemStacks (#3379) + LexManos: Disable capabilities for empty ItemStacks. + LexManos: Restore another missing patch in WorldProvider. + +Build 1.11-13.19.0.2130: + LexManos: + Fix build.gradle problems: Installer missing url.png UploadArchives + erroring on local systems due to missing changelog Adding branch name + improperly. + +Build 1.11-13.19.0.2129-1.11.x: + LexManos: Fix localizations not loading correctly in legacy resource packs. + +Build 1.11-13.19.0.2128-1.11.x: + LexManos: Fix FurnaceRecipy registration. + +Build 1.11-13.19.0.2127-1.11.x: + LexManos: Fixed test cases for 1.11 changes. + +Build 1.10.2-12.18.2.2125: + cpw: Update to 20161111 mcp names + cpw: regenerate entitylivingbase patch + +Build 1.10.2-12.18.2.2124: + mezz: Improve error message from crashes during loading (#3362) + +Build 1.10.2-12.18.2.2123: + draco18s: Added events for crop growth (#3320) + +Build 1.10.2-12.18.2.2122: + maxanier: Add support for custom entity selectors in commands (#3356) + +Build 1.10.2-12.18.2.2121: + latvianmodder: Added PermissionAPI (#3155) + +Build 1.10.2-12.18.2.2120: + Choonster.2010: Add hand argument to BlockEvent.PlaceEvent (#3221) (#3270) + +Build 1.10.2-12.18.2.2119: + jezzadabomb: + Fixes #3237 and #2752. (#3347) + * Fix #3237 by correctly utilising the keepLooking argument. + + * Explain within SimpleNetworkWrapper's javadoc that the execute of the + handler isn't on the main Minecraft thread. + +Build 1.10.2-12.18.2.2118: + draco18s: Made default slot implementation respect inventory stack size limit. + +Build 1.10.2-12.18.2.2117: + aa1ronham: Fixed Block.setBedOccupied ignoring 'occupied' parameter + +Build 1.10.2-12.18.2.2116: + raoulvdberge: + Add Item#getNBTShareTag (#3342) + * Add Item#getNBTShareTag + + * Update comment + +Build 1.10.2-12.18.2.2115: + bonii-xx: + Call Looting Event on player death and loot table drops (#3275) + * Call Looting Event on player death and loot table drops + + * Simplify patches + + * More code cleanup: Replace old usage with compact forgehooks + implementation + +Build 1.10.2-12.18.2.2114: + LexManos: Fix POTENTIAL issue with Texture Stitcher exceeding max size. + +Build 1.10.2-12.18.2.2113: + dawn0966: + Fixed Ore Dictionary replacing the oak boat recipe (#3329) + Fixes the oak boat recipe being able to be crafted with any wood + +Build 1.10.2-12.18.2.2112: + rwtema: + Improve the default isItemValid() and getItemStackLimit() + implementations in SlotItemHandler. You can now properly swap the + player's held itemstack with the slot's itemstack. (#3273) + +Build 1.10.2-12.18.2.2111: + LexManos: + Fixed texture stitcher not using full texture height before expanding + width. + +Build 1.10.2-12.18.2.2110: + LexManos: + Special case not drooping snowballs for water and snow layers. Closes + #3326 + LexManos: Update readme to be a little more clear. + +Build 1.10.2-12.18.2.2109: + bs2609: Fix MC-105406 (OpenGL leak in View Frustum) (#3308) + +Build 1.10.2-12.18.2.2108: + mezz: Fix very laggy mipmap slider MC-64581 (#3305) + +Build 1.10.2-12.18.2.2107: + shadowfacts: Add Block#getStateForPlacement (#3129) + +Build 1.10.2-12.18.2.2106: + mezz: Add better key modifier behavior for GUI contexts (#3307) + +Build 1.10.2-12.18.2.2105: + tterrag1098: Make item repair recipe respect itemstack's getMaxDamage (#3295) + +Build 1.10.2-12.18.2.2104: + LexManos: Fix Tabbing issues with config classes. + LexManos: Fix infinite loop in dragon fight when the dragon is over the void. + +Build 1.10.2-12.18.2.2103: + LexManos: Initial pass a re-working the configuration system. Work in progress. + +Build 1.10.2-12.18.2.2102: + atomicblom+github: Allow all Forge Registries to work with ObjectHolder (#3220) + LexManos: @ObjectHolder will now inject null for dummied objects. Closes #3301 + cpw: + Revert "Another fix for registry substitutions. Closes #3212" + This reverts commit ec2977afc919c0f676f59977e6065148ea635f9e. + cpw: + Fix substitutions being broken after freezing - actually store the + original state in registry copies, not the computed state, which is + wrong because it only sees the sub, not the original. + cpw: + Add in missing test runner for a test. Fixes failing tests on jenkins, + hopefully. + +Build 1.10.2-12.18.2.2099: + LexManos: + Revert commits related to filtering proxy and Automatic Subscriber + annotations. Broke some existing setups, will require a annotation + definition change in 1.11. + +Build 1.10.2-12.18.2.2098: + mezz: Fix proxy injector filtering. (#3300) + +Build 1.10.2-12.18.2.2097: + LexManos: Bump version for new Recommended Build. + +Build 1.10.2-12.18.1.2096: + LexManos: Small Cleanup in example build.gradle. + LexManos: + Filter out proxy injectors for incorrect mods. Prevents mod classes + being initialized early when multiple mods are in the same source. + LexManos: + Introduce IContextSetter for events. This will set the active mod + container for events using the normal EventBus. Fixes improper warnings + from initializing mods using the new Registry events. Modders, you + should not use this as it has many performance implementations and if + abused will slow down the event bus A LOT. ActiveModContainer is not + thread safe. + +Build 1.10.2-12.18.1.2095: + mezz: Fix unbound keybindings are activated by unknown keyboard keys (#3288) + +Build 1.10.2-12.18.1.2094: + mmehnert: + caseSensitiveCustomCategories must be set before loading the + configuration file. (#3269) + Otherwise one set with categories in lowercase letters and on case + sensitive + +Build 1.10.2-12.18.1.2093: + tterrag1098: Fix typo in sky rendering causing tons of BlockPos allocations (#3267) + +Build 1.10.2-12.18.1.2092: + cpw: + Add in registry registration events, new subscription events you can use + to make sure you're registering things at the "best" time. + +Build 1.10.2-12.18.1.2091: + LexManos: + Add support for generic filtering of events. Please DO NOT use this in + performance sensitive environments where you will have tons of things + added to the listener list. If that's the case define sub-classes as + they have completely separate lists and will thus be more efficient when + firing the event. + +Build 1.10.2-12.18.1.2090: + lukas.tenbrink: + Fix roofed forests posting decoration events for small mushrooms rather + than big (#3259) + +Build 1.10.2-12.18.1.2089: + mattmess1221: + Add support for offhand bow aiming animation (#3085) + Vanilla allows you to use a bow in your offhand, but it's not visible to + others or in third person. + +Build 1.10.2-12.18.1.2088: + tehgeek: + Remove oredict for Bone Block recipe, stop white dye to bonemeal exploit + (#3255) + +Build 1.10.2-12.18.1.2087: + LexManos: + Fixed Biome.platFlower not being called when bonemealing grass. Closes + #3254 + +Build 1.10.2-12.18.1.2086: + latvianmodder: + Added getCommandMap() & getSortedCommandList() in CommandTreeBase + (#3251) + +Build 1.10.2-12.18.1.2085: + atomicblom+github: New event to allow mutating a baby entity based on it's parents (#3227) + +Build 1.10.2-12.18.1.2084: + latvianmodder: Added CommandTreeBase (#3193) + +Build 1.10.2-12.18.1.2083: + paul.fulham0: Fix debug command creating empty file (MC-103399) (#3218) + +Build 1.10.2-12.18.1.2082: + marvinroesch99: Fix universal bucket not being returned in crafting recipes (#3234) + +Build 1.10.2-12.18.1.2081: + cpw: Create EnergySystems.md + +Build 1.10.2-12.18.1.2080: + LexManos: + Introducing a new standardized energy capability system. Heavily + inspired by the old RedstoneFlux API developed by King Lemming and Team + CoFH. + LexManos: Fix potential shading issue in GuiEditArrayEntries. Closes #3247 + +Build 1.10.2-12.18.1.2079: + LexManos: Fixed ItemStacks having ForgeCaps tag when no caps are serialized. + +Build 1.10.2-12.18.1.2078: + LexManos: Fix Cactus being able top be planted on incorrect soil. + +Build 1.10.2-12.18.1.2077: + bloodmc: Fix wrong var being used during getMaxSpawnPackSize check. (#3240) + +Build 1.10.2-12.18.1.2076: + LexManos: + Move dismount version of EntityMountEvent to Entity class. Should fix + canceling dismounting. Closes #3226 + +Build 1.10.2-12.18.1.2075: + LexManos: Yet another fix for stupid stairs. Closes #3224 + +Build 1.10.2-12.18.1.2074: + LexManos: Make StructureBlock TESRs always render. Closes #3222 + +Build 1.10.2-12.18.1.2073: + paul.fulham0: Fix item use stats (#3216) + +Build 1.10.2-12.18.1.2072: + LexManos: + Fixed decorate event being called with SHROOM type for both convered + trees and large mushrooms. Closes #3215 + +Build 1.10.2-12.18.1.2071: + LexManos: Another fix for registry substitutions. Closes #3212 + +Build 1.10.2-12.18.1.2070: + LexManos: Add legacy support for signature change of AddCallback. + LexManos: + Update gradle wrapper to 2.14, reference MC json, and add java6 compat + lines to default MDK build.gradle. + +Build 1.10.2-12.18.1.2069: + bonii-xx: Revert changes to ItemTool for binary compatibility (#3211) + +Build 1.10.2-12.18.1.2068: + bonii-xx: Expand getHarvestLevel to include player and blockstate (#3192) + +Build 1.10.2-12.18.1.2067: + LexManos: + Make enchantment tables spawn particles for any custom energy provider. + Closes #3208 + +Build 1.10.2-12.18.1.2066: + williewillus: Allow blocks to affect the beacon color (#3205) + +Build 1.10.2-12.18.1.2065: + LexManos: Fix armors rendering badly. Closes #3196 + +Build 1.10.2-12.18.1.2064: + abab9579: Fixed NPE from missing Capabilities (#3191) + +Build 1.10.2-12.18.1.2063: + LexManos: Fix World Capabilities NPE when there are no attached capabilities. + +Build 1.10.2-12.18.1.2062: + abab9579: Introduced Capabilities for World (#3069) + +Build 1.10.2-12.18.1.2061: + LexManos: + Fix vanilla bug in BlockFalling that caused blocks to loose state info + during world gen. Closes #3183 + +Build 1.10.2-12.18.1.2060: + Gerard Bruwn: Added PlayerBrewedPotionEvent (#3187) + +Build 1.10.2-12.18.1.2059: + cpw: Don't crash if you select a fake player + +Build 1.10.2-12.18.1.2058: + LexManos: + Skip searching for mods in the JAVA_HOME directory. Closes #2249 and + #2250 + +Build 1.10.2-12.18.1.2057: + LexManos: + Fix leather armor overlay not rendering when armor is pure white. Closes + #3184 + +Build 1.10.2-12.18.1.2056: + josephcsible: + Fix test mod IDs, names, and versions (#3122) + Most of our test mods have bad IDs (uppercase) and are missing names or + versions. Forge produces a bunch of warnings in the console about this, + which + +Build 1.10.2-12.18.1.2055: + florian: + Make InventoryHelper#spawnItemStack use ItemStack#splitStack to avoid + losing capability data. (#3163) + +Build 1.10.2-12.18.1.2054: + sebastian: + Unlike BakedQuad, UnpackedBakedQuad does not propagate the diffuse + lighting flag to Vertex Consumers. Made UnpackedBakedQuad conform to + BakedQuad's behavior. (#3181) + +Build 1.10.2-12.18.1.2053: + LexManos: + Set ModelLoader.WHITE's texture size iniatlly instead of defaulting to + zero and being set later. + LexManos: Add RenderTooltipEvent (#3034) + +Build 1.10.2-12.18.1.2052: + tehgeek: + Fix #3165 Dispensers with buckets can destroy fluid handler blocks + (#3180) + +Build 1.9.4-12.17.0.2051: + tterrag1098: Add RenderTooltipEvent (#3034) + +Build 1.10.2-12.18.1.2050: + LexManos: Fix Fire not using getFireSpreadSpeed. Closes #3175 + +Build 1.10.2-12.18.1.2049: + LexManos: Fix issue with stairs. + +Build 1.10.2-12.18.1.2048: + LexManos: Removed unintentional functionality when using the Splash Screen. + +Build 1.10.2-12.18.1.2047: + LexManos: Make stair culling use actual state, and be more robust. Closes #3170 + LexManos: Fix name in legacy support in registry changes. + LexManos: + Compleetly skip FML handshake for Vanilla connections. Should fix race + condition. Closes #3084 + LexManos: + Disable DecorateEventDebug by default. Prevents me thinking that + decoration is broken >.< + +Build 1.10.2-12.18.1.2046: + AlgorithmX2: + Fix Vertex Transformer for breaking models (#3132) + * Add setTexture to IVertexConsumer and propagate it. + +Build 1.10.2-12.18.1.2045: + LexManos: + Restone binary compatibility with registry substitution rework. Modders + please switch to using the provided RegistryBuilder to ensure more + forward compatbility. Closes #3144 + LexManos: Fix Forge fluids not serializing properly. Closes #3152 + +Build 1.10.2-12.18.1.2044: + LexManos: + Second pass at fixing 'Dissapearing Doors' This now more robustly fixes + ALL uses of get and has slight performance improvements for itterable + states. Closes #3139 + +Build 1.10.2-12.18.1.2043: + LexManos: + Added config option to disable Forge's fix of Stair/Slab face culling. + Some vanilla resource packs exploit this issue in their custom models + causing unintended rendering issues. + +Build 1.10.2-12.18.1.2042: + LexManos: + Fixed 'Dissapearing Doors', An issue where the world would try to save + blockstates that are not serializeable. + +Build 1.10.2-12.18.1.2041: + cpw: Allow CommandEvent to change the parameter set. Closes #1762 + +Build 1.10.2-12.18.1.2040: + cpw: + Another pass at substitutions - now capable of fixing up ItemBlock to + point at the right block when a block is substituted, should also handle + substituting itemblocks. There's some hackery in the way we have to + change the value of ItemBlock.block, but it's not too egregious in my + opinion. + +Build 1.10.2-12.18.1.2039: + dakotapierone: Update decorate for biomes to support Decorate event + cpw: Clean up AT file + +Build 1.10.2-12.18.1.2038: + cpw: + Fix anvil output slots being wrong by adding new ones. Closes #3121 + without breaking existing mod workarounds for the badly ordered slots. + +Build 1.10.2-12.18.1.2037: + vincent.lee: + Expose vanilla brewing recipe registration (cherry picked from commit + 24bf163) + +Build 1.10.2-12.18.1.2036: + cpw: + Clean up some legacy settings, making sure there's translation strings. + Closes #2965 Thanks for the prompt Zaggy! + +Build 1.10.2-12.18.1.2035: + vincent.lee: Fix MC-91728 (cherry picked from commit 71f75bf) + cpw: Refresh patch after cherry pick (cherry picked from commit 71f75bf) + +Build 1.10.2-12.18.1.2034: + vincent.lee: + Remove sideonly on all other SoundType methods (cherry picked from + commit 46c7cac) + +Build 1.10.2-12.18.1.2033: + mnmiller1: + Fixed NeighborNotifyEvent not containing the piston facing direction. + (cherry picked from commit 5637c41) + +Build 1.10.2-12.18.1.2032: + AlgorithmX2: Use extended state for breaking models (#3086) + +Build 1.10.2-12.18.1.2031: + vincent.lee: No-nonsense getSoundType + cpw: Clean up block patch. Also push json update. + +Build 1.10.2-12.18.1.2030: + CreativeMD: Fixed sound paused/resume issue + +Build 1.10.2-12.18.1.2029: + alexandre.duponchel: FIX : IndexOutOfBoundException + +Build 1.10.2-12.18.1.2028: + cpw: Mark it for actual removal in 1.11 + cpw: Tidy up some more todos + cpw: + Fix #3126 - duplicate stat id error - don't use the "universal + iterators" in statbuilding, use the one without the duplicate entries. + (The duplicate entry one is for rendering setup) + +Build 1.10.2-12.18.1.2027: + cpw: + Fix a vanilla bug with the blockstate ID map not being properly + symmetric with respect to block.getStateFromMeta - closes #3012 properly + but probably has a random MCJIRA ticket somewhere too. + +Build 1.10.2-12.18.1.2026: + vincent.lee: Add ability for custom detector rail output + vincent.lee: Move to a hook in EntityMinecart + vincent.lee: Remove event stuff + +Build 1.10.2-12.18.1.2025: + mezz: Force mipmap even if textures are the wrong size + mezz: Add TextureDump forge test mod + +Build 1.10.2-12.18.1.2024: + vincent.lee: Add hand-specific render event + vincent.lee: Add missing cancelable + cpw: Rename the event to RenderSpecificHandEvent + +Build 1.10.2-12.18.1.2023: + josephcsible: Add CreateFluidSourceEvent to control infinite fluid sources + josephcsible: Add a test for CreateFluidSourceEvent + josephcsible: Use CreateFluidSourceEvent for mod fluids as well + +Build 1.10.2-12.18.1.2022: + mezz: Fix hotkey with default modifier loading wrong when modifier set to NONE + +Build 1.10.2-12.18.1.2021: + bernhard.bonigl: + Add shouldCauseBlockBreakReset callback to Item. This allows to keep + breaking blocks if the NBT or similar changes. + +Build 1.10.2-12.18.1.2020: + Mumfrey: Store member field mappings in the mapping table, possible fix for #3043 + +Build 1.10.2-12.18.1.2019: + cpw: + Something that needs to happen: warn people about bad modids- if they're + not lowercased, or if they're too long. + +Build 1.10.2-12.18.1.2018: + ezterry3: + Fix async race condition on new chunks (closes #3020) (#3090) + This patch fixes a race condition that sometimes caused a just generated + chunk + structures to + generated version + chunk. + This patch ensures when ProvideChunk calls LoadChunk synchronously we + always + condition without + already saved to disk. + Thus this should retain the async functionality from PR #2946 while + preventing + +Build 1.10.2-12.18.1.2017: + cpw: + Some test harness stuffs. Time to get the registry manager properly + tested. + cpw: + More tests. Substitutions now work, and a fix is included. *sigh* Closes + too many bugs to count. + cpw: Some more substitution tests. It seems like it's working as it should. + cpw: Some dummy block replacement tests - it seems they work correctly. + cpw: Add the new tests into the suite + cpw: + Some tweaks to ContainedDeps - it should extract to a file in + versionedMods directly, even if the tag in the jar has a subpath + element. It'll also skip if there is a matching filename in the main + mods dir. + +Build 1.10.2-12.18.1.2016-failtests: + cpw: Some more substitution tests. It seems like it's working as it should. + cpw: Some dummy block replacement tests - it seems they work correctly. + +Build 1.10.2-12.18.1.2014: + LexManos: + Added support for using static methods as event listeners, Register the + .class instead of an instance. And added an improvement to calltime + listener rebuilding. + +Build 1.10.2-12.18.1.2013: + cpw: Lets make a half-decent readme. Thanks to Rorax for the install video! + +Build 1.10.2-12.18.1.2012: + mezz: Add Forge fluid handler test + +Build 1.10.2-12.18.1.2011: + LexManos: Bump version for a RB + +Build 1.10.2-12.18.0.2010: + bernhard.bonigl: + Add an event that allows to modify the looting level based on damage + source + +Build 1.10.2-12.18.0.2009: + williewillus: Add throwable impact event (#3071) + +Build 1.10.2-12.18.0.2007-1.10.0: + LexManos: + Fix hopper extract behavior being broken on edge cases due to + IItemHandler capability. Closes #3062 + +Build 1.10.2-12.18.0.2006-1.10.0: + LexManos: + Fixed FPS graph and new debug lines not being rendered in Debug screen. + Closes #3054 + +Build 1.10.2-12.18.0.2005-1.10.0: + diesieben07: + Restore (buggy?) behavior of vanilla BlockPistonMoving and ignore drop + chance (#3052) + +Build 1.10.2-12.18.0.2004-1.10.0: + LexManos: + Fix villages generating to high when using a cusom sea level. Closes + #3050 + +Build 1.10.2-12.18.0.2003-1.10.0: + LexManos: + Forge will now load extra mods from mods/mod_list.json and + mods/mc_version/mod_list.json. As defined by the same json spec as + --modListFile. And now if repositoryRoot is prefixed with absolute: the + path will NOT be relative to the MC directory. + LexManos: + Update build.gradle to have single line for specifying minecraft + version, and will update ForgeVersion.java as needed. + +Build 1.10.2-12.18.0.2002-1.10.0: + LexManos: + Fixed MC version number... I could of SWORN we removed this in favor of + a automated system... + +Build 1.10.2-12.18.0.2001-1.10.0: + LexManos: 1.10.2 Update + +Build 1.10-12.18.0.2000-1.10.0: + diesieben07: + Fix mob-spawners crashing for non-living entities and simply the patch + in the process (#3042) + +Build 1.10-12.18.0.1999-1.10.0: + mezz: + Fix legacy handling for ItemBucket subclasses and non-universal buckets + (#3038) + mezz: + Fix milk bucket is fillable with water or lava when milk is unregistered + (#3039) + +Build 1.10-12.18.0.1998-1.10.0: + mezz: Remove duplicated universal buckets from the creative list (#3035) + mezz: Fix FluidContainerRegistry handling potions as water bottles (#3037) + +Build 1.10-12.18.0.1997-1.10.0: + cpw: + Big warning for recipe types found without being registered, it turns + out this is pretty severe, modders need to fix it. + +Build 1.10-12.18.0.1996-1.10.0: + mezz: + Fix comparison stability of the Recipe Sorter with unknown recipes #2962 + (#3030) + +Build 1.10-12.18.0.1995-1.10.0: + LexManos: Fixed Husks rendering as standard zombies. Closes #3028 + +Build 1.10-12.18.0.1994-1.10.0: + LexManos: Fixed chests being replaced when trees grew. + +Build 1.10-12.18.0.1993-1.10.0: + luacs1998: Simple implementation of a Open/Close container event (#3017) + +Build 1.10-12.18.0.1991-1.10.0: + LexManos: + Fixed shifted patch in GameSettings causing settings to not load + properly. Closes #3025 #3022 + LexManos: Fixed incorrect variable being sent to doSpecialSpawn. Closes #2986 + LexManos: Fix incorrect logic in ChunkCache.isSideSolid. Closes #3026 + LexManos: Provide 'cleaner' version of TextureMap.setTextureEntry. Closes #1385 + +Build 1.9.4-12.17.0.1990: + LexManos: Fixed incorrect variable being sent to doSpecialSpawn. Closes #2986 + LexManos: Fix incorrect logic in ChunkCache.isSideSolid. Closes #3026 + +Build 1.10-12.18.0.1989-1.10.0: + cpw: Fix doors popping off solid sides. + +Build 1.10-12.18.0.1988-1.10.0: + cpw: Fix that the Missing blocks/items/registries prompt often got stuck. + +Build 1.9.4-12.17.0.1987: + LexManos: + Set ModelLoader.WHITE's texture size iniatlly instead of defaulting to + zero and being set later. + +Build 1.10-12.18.0.1986-1.10.0: + cpw: Fix Realms button text to be shorter again. Closes #3019 + +Build 1.10-12.18.0.1985-1.10.0: + cpw: Fix item pickup dupe bugs. Closes #3015 + +Build 1.10-12.18.0.1984-1.10.0: + blay09: + [1.10] Fix keys with KeyModifier failing to load (#3018) + Fix key options with KeyModifier failing to load due to + NumberFormatException + +Build 1.10-12.18.0.1983-1.10.0: + cpw: + Accept more 1.9.4 version strings. Fix NPE for custom villager types and + their associated zombie spawns. Still needs review. + +Build 1.10-12.18.0.1982-1.10.0: + mezz: Fix all guis closing as soon as they are opened (#3013) + +Build 1.10-12.18.0.1981-1.10.0: + cpw: Update to 1.10 + LexManos: Fix version number. + +Build 1.9.4-12.17.0.1980-1.10.0: + cpw: Fix the MDK - it gets the license too! + +Build 1.9.4-12.17.0.1979-1.10.0: + cpw: + Update the build.gradle script to ship the new license and stop shipping + the old licenses. + +Build 1.9.4-12.17.0.1978-1.10.0: + cpw: + In accordance with our stated goal of relicensing Forge to LGPL v2.1, + this commit enacts that change. Although it is using the 1.9.4 codebase, + it is intended that this branch become public with the 1.10 changes, as + such the license will take effect at that time. The three commits from + persons who have failed to accept the new license, as documented in + #2789, have had their commits reverted. This should complete the license + transition. Commits after the commit date of this commit should be + considered licensed by LGPLv2.1, as indicated in LICENSE-new.txt. All + patches are now considered owned by the Forge project and Forge + Development LLC in particular (note that they will not get the license + boilerplate, as they are machine generated files). + +Build 1.9.4-12.17.0.1976: + GirafiStudios: + Made forge-type spawn eggs spawn childs, when right clicking + EntityAgeable again. (#2982) + +Build 1.9.4-12.17.0.1975: + shadowfacts: Fix broken EntityItem merging for Items with capabilities + diesieben07: + Make ASMDataTable more useful: (#2911) + - EnumHolder now has getters for it's data + - enum arrays work now + - nested annotations work now outside of being in arrays + (cherry picked from commit f10f750) + +Build 1.9.4-12.17.0.1974-1.9.4: + diesieben07: + Make ASMDataTable more useful: (#2911) + - EnumHolder now has getters for it's data + - enum arrays work now + - nested annotations work now outside of being in arrays + +Build 1.9.4-12.17.0.1973: + mezz: Fix incorrect FluidUtil doc (#2996) + +Build 1.9.4-12.17.0.1972: + mezz: Fix ItemStack deserialization can't clear nbt (#3005) + mezz: Improve the "missing mods" on-screen error message (#2997) + +Build 1.9.4-12.17.0.1970: + cpw: Update CONTRIBUTING.md + +Build 1.9.4-12.17.0.1969: + cpw: Update CONTRIBUTING.md + +Build 1.9.4-12.17.0.1968: + mezz: Fix #2918 Make dispensers with buckets work with modded fluids (#2947) + +Build 1.9.4-12.17.0.1967: + LexManos: Fixed brewing stand returning incorrect solts for side inventories. + +Build 1.9.4-12.17.0.1966: + LexManos: Fixed villager career display names being off by one. + +Build 1.9.4-12.17.0.1965: + diesieben07: + Fix DataParameter mixup when vanilla clients are connected causing CCE + in zombie renderer (#2992) + +Build 1.9.4-12.17.0.1964: + williewillus: Fix AnimationItemOverrideList not falling back to super (#2990) + +Build 1.9.4-12.17.0.1963: + mezz: + Fix #2961 Capability data is not preserved by fluid handler interactions + (#2976) + +Build 1.9.4-12.17.0.1962: + cpw: Slight tweak to early loading, to accommodate FMP + +Build 1.9.4-12.17.0.1961: + LexManos: + Fixed Fernflower decompile issue in AnvilChunkLoader.saveExtraData() + Closes #2985 + +Build 1.9.4-12.17.0.1960: + cpw: + Mute the connection reset by peer exception - it's spamilicious for the + most part. + +Build 1.9.4-12.17.0.1959: + cpw: Fix missing IMC message query. + +Build 1.9.4-12.17.0.1958: + man.of.j: Read a Update JSON in UTF-8 (#2978) + +Build 1.9.4-12.17.0.1957: + williewillus: Add getter for the world to LootContext (#2954) + +Build 1.9.4-12.17.0.1956: + gurreja: Fixed arrows not showing in non default AchievementPages (#2968) + +Build 1.9.4-12.17.0.1955: + mezz: Add methods to Fluid to allow custom vaporization overrides (#2959) + +Build 1.9.4-12.17.0.1954: + fry: Fixes #1984. + +Build 1.9.4-12.17.0.1953: + fry: + Modified SimpleModelState to ignore the parts it doesn't know about. + Fixes model part hiding always applying to some models when + transformations are specified in the blockstate json. + +Build 1.9.4-12.17.0.1952: + fry: + Pass the GL context back from the splash screen during the + EntityRenderer init. + +Build 1.9.4-12.17.0.1951: + cpw: + Fire ChunkWatchEvent.Watch event, closes #2767. Based on @sfPlayer1 + patch suggestion. It looks like this logic has shifted relative to 1.8, + so there may be differences in event behaviour now. + +Build 1.9.4-12.17.0.1950: + minecrell: + Fix asynchronous chunk loading (#2946) + Since the update to Minecraft 1.9.4 chunks were actually never loaded + asynchronously because a sync request was always made from the + PlayerChunkMap shortly after the chunk had been queued. + + - PlayerChunkMapEntry now only loads chunks synchronously *after* the + chunk failed to load asynchronously. + - Fixed some minor bugs that caused "Attempted to dequeue chunk" + messages + - Simplified ChunkProviderServer patch. loadChunk no longer generates + chunks, + so there is no need to handle that. + - Moved loader and provider to ChunkIOProvider so there is no need for + "hashCode abuse" + +Build 1.9.4-12.17.0.1949: + mezz: + Make it easier to use FluidTanks that have input/output restrictions + (#2945) + These internal function should NOT be used by anything except the owner + of the tank. + +Build 1.9.4-12.17.0.1948: + LexManos: Fixed BiomeProvider.getModdedBiomeGenerators method name. Closes #2937 + +Build 1.9.4-12.17.0.1947: + williewillus: + Several bugfixes for PlayerInteractEvent (#2943) + * Don't change Result if setCanceled(false) called + + * Fix RightClickEmpty firing even when targeting a block or entity + + * Add a left click empty event + + * Move hook point for EntityInteractSpecific to the right place + + * Fix LeftClickBlock not firing clientside in creative, and clarify docs + about creative + +Build 1.9.4-12.17.0.1946: + mezz: + Add new IFluidHandler for capabilities. (#2942) + Old fluid system is deprecated and slated for removal in the next + cleanup cycle. + +Build 1.9.4-12.17.0.1945: + matti.j.ruohonen: + Add a Slot#isSameInventory() method (#2884) + This fixes shift + double clicking items in Containers that use + SlotItemHandler slots. + +Build 1.9.4-12.17.0.1944: + LexManos: + Fixed POTENTIAL issue where mods would query world infrom from TEs + before they are set. Closes #2863 + +Build 1.9.4-12.17.0.1943: + LexManos: + Fixed client side ticking TileEntites after they are unloaded. Closes + #2852 + LexManos: + Expanded custom villagers to Zombies and world gen. Fixed edge cases + where custom professiosn wernt being used correctly. Closes #2862 + +Build 1.9-12.16.0.1942-1.9: + ljfa-ag: Fix forge:default-tool transformation (#2795) + +Build 1.9.4-12.17.0.1941: + LexManos: Fixed position sent to sanSustainPlant from cactus. Closes #2941 + +Build 1.9.4-12.17.0.1940: + LexManos: + Forge will now warn the user and ask permission to load a world with + unknown registries. Closes #2934 + +Build 1.9.4-12.17.0.1939: + LexManos: Fix BlockFluidBase having collision. Closes #2932 + +Build 1.9.4-12.17.0.1937: + LexManos: + 1.9.4 Update. Major things to note: Class renames: + https://gist.github.com/LexManos/44dd211f90f498ad4015279b103dff86 Tile + Entities are now packed in the ChunkData packet. Forge intends to work + around this to better support large moded worlds, but for the time being + modders should implement the new function carefully and only send what + data they need to! Minecraft's codebase now has annotations, these are + directly from Mojang and should be adheared to! Added support for + package-info.java's containing @Nullable information for all MC code + base. + LexManos: Update mappoings snapshot to 20160518 + cpw: Fix schizophrenia in version numbers. + LexManos: Bump version information for 1.9.4. + LexManos: Update example mod for new mappings. + atomicblom: Add Unit Test to detect mismatches between EnumHelper and Enum ctor + cpw: + Tweak build file slightly - allow passing buildNumber using gradle + parameters (-PbuildNumber=...) and provide a "resetBuildNumber" function + to reset the buildNumber to zero in the ForgeVersion file. Means builds + can be reproducible in-IDE. + tterrag1098: Fix screenshot link paths on Windows (#2886) + LexManos: + Take capabilities into account when comparing ItemStack NBT's. Closes + #2726 + LexManos: + Tipped arrows are now not affected by infinite enchantment but are still + effected by creative mode. + LexManos: Set max enchantment ID to Short.MAX_VALUE. Closes #2799 + LexManos: + Fix Container.compouteStackSize not respecting stack version of + maxStackSize. Closes #2756 + LexManos: Fire playerDestroyItem event's in some cases where we were not. + LexManos: Fix villagers having farmer skin on vanilla servers. Closes #2894 + LexManos: Add alternative ItemAxe Constructor + LexManos: Fix paramters for addArmorMaterial, addOption and addGameType. + LexManos: + Make unit test for EnumHelper more robust and less spammy. Now detects + missing accessors as well. + the.f1repl4ce: Switch new constructor to use floats (#2904) + tterrag1098: Add hook for TE data sync on client (#2893) + cpw: + Strip Optional from the class signature as well, since that's loaded by + the TypeToken registry code and might cause a crash. + LexManos: + Fix installer downloading vanilla jar when not needed. And filter some + more known libraries. + LexManos: + Capture interfaces when scanning classes and preload implementations of + ICrashReportDetail. + LexManos: Set Enchantment table's harvest level. Closes #1349 + LexManos: + More uniformly apply Configuration.caseSensitiveCustomCategories. Closes + #1353 + LexManos: + Close player's inventory to prevent potential dupe issues on some modded + items. Closes #1431 + LexManos: + Move getArmorModel hook up two lines so that the attributes and + animation information is set. Closes #1939 + LexManos: Fire PopulateChunkEvent Pre and Post in ChunkProviderFlat. Closes #2050 + LexManos: Fire LivingSpawnEvents for MobSpawners. Closes #2079 + LexManos: Fix javadocs for BiomeColor events. Closes #2093 + LexManos: + Fixed EntityRegistry.addSpawn adding duplicate spawn entries. Closes + #2112 + LexManos: + Fix setTileEntity causing the world to remove the new and old tile + entities. Closes #2164 + LexManos: Add ServerHangWatchdog to TerminalTransformer whitelist. Closes #2203 + LexManos: Fixed NBTTagString.toString not properly escaping \'s. Closes #2393 + LexManos: + Reinitalize statistics information on Mapping changes. Fixes mismatched + stats to item/block ids. And auto registers stats for modded items. + Closes #2454 + LexManos: + Fix Thorns enchantment bypassing ISpecialArmor.damageArmor function. + Closes #2463 + LexManos: + Fix tooltip for survival tab in the creative menu not drawing on any but + the first page. Closes #2908 and #2504 + LexManos: + Make sure tool-classes for vanilla tools are initialized early. Closes + #2909 and #2525 + LexManos: + Fixed FluidUtil.tryEmptyFluidContainerItem not checking if the tank can + accept fluids first. Closes #2527 + LexManos: + Fixed potential issue with Chunk.getLightOpacity being called before the + chunk is added to the world map. Closes #2529 + LexManos: + Fixed TileEntityBeacon not using position-aware getLightOpacity. Closes + #2530 and #2910 + LexManos: Fixed village wells not having their biomes set. Closes #2499 + LexManos: + Fixed issue with @ObjectHolder and the new registry system. Closes #2640 + Only run static initalizers for classes we need to get the names from + values. + LexManos: + Fixed new ICrashReportDetail loader working with packaged mods by + delaying it until the ModContainer's construct event. Closes #2924 + fry: Reordered transformations during LayerHeldItem rendering, fixes #2827. + fry: + Initial support for model visibility system. Implemented it for OBJ, B3D + and normal vanilla models; fixed NPE accessing parent state in B3DModel. + Fixes #2801. + +Build 1.9.4-12.17.0.1935-1.9.4: + fry: Initial support for model visibility system. Implemented it for OBJ, B3D and normal vanilla models; fixed NPE accessing parent state in B3DModel. Fixes #2801. + +Build 1.9-12.16.1.1934: + mezz: + Improve JavaDoc links, fix some broken JavaDocs (#2833) + + Improve JavaDoc links, fix broken JavaDocs + +Build 1.9.4-12.17.0.1933-1.9.4: + fry: Reordered transformations during LayerHeldItem rendering, fixes #2827. + +Build 1.9.4-12.17.0.1932-1.9.4: + LexManos: Fixed new ICrashReportDetail loader working with packaged mods by delaying it until the ModContainer's construct event. Closes #2924 + +Build 1.9.4-12.17.0.1931-1.9.4: + LexManos: Fixed village wells not having their biomes set. Closes #2499 + LexManos: + Fixed issue with @ObjectHolder and the new registry system. Closes #2640 + Only run static initalizers for classes we need to get the names from values. + +Build 1.9.4-12.17.0.1930-1.9.4: + LexManos: Fix tooltip for survival tab in the creative menu not drawing on any but the first page. Closes #2908 and #2504 + LexManos: Make sure tool-classes for vanilla tools are initialized early. Closes #2909 and #2525 + LexManos: Fixed FluidUtil.tryEmptyFluidContainerItem not checking if the tank can accept fluids first. Closes #2527 + LexManos: Fixed potential issue with Chunk.getLightOpacity being called before the chunk is added to the world map. Closes #2529 + LexManos: Fixed TileEntityBeacon not using position-aware getLightOpacity. Closes #2530 and #2910 + +Build 1.9.4-12.17.0.1929-1.9.4: + LexManos: Fix Thorns enchantment bypassing ISpecialArmor.damageArmor function. Closes #2463 + +Build 1.9.4-12.17.0.1928-1.9.4: + LexManos: Fixed NBTTagString.toString not properly escaping \'s. Closes #2393 + LexManos: + Reinitalize statistics information on Mapping changes. + Fixes mismatched stats to item/block ids. And auto registers stats for modded items. + Closes #2454 + +Build 1.9.4-12.17.0.1927-1.9.4: + LexManos: Fire LivingSpawnEvents for MobSpawners. Closes #2079 + LexManos: Fix javadocs for BiomeColor events. Closes #2093 + LexManos: Fixed EntityRegistry.addSpawn adding duplicate spawn entries. Closes #2112 + LexManos: Fix setTileEntity causing the world to remove the new and old tile entities. Closes #2164 + LexManos: Add ServerHangWatchdog to TerminalTransformer whitelist. Closes #2203 + +Build 1.9.4-12.17.0.1926-1.9.4: + LexManos: Set Enchantment table's harvest level. Closes #1349 + LexManos: More uniformly apply Configuration.caseSensitiveCustomCategories. Closes #1353 + LexManos: Close player's inventory to prevent potential dupe issues on some modded items. Closes #1431 + LexManos: Move getArmorModel hook up two lines so that the attributes and animation information is set. Closes #1939 + LexManos: Fire PopulateChunkEvent Pre and Post in ChunkProviderFlat. Closes #2050 + +Build 1.9.4-12.17.0.1925-1.9.4: + LexManos: Fix installer downloading vanilla jar when not needed. And filter some more known libraries. + LexManos: Capture interfaces when scanning classes and preload implementations of ICrashReportDetail. + +Build 1.9.4-12.17.0.1924-1.9.4: + cpw: Strip Optional from the class signature as well, since that's loaded by the TypeToken registry code and might cause a crash. + +Build 1.9-12.16.1.1923: + shadowfacts: Pass the correct position into isSideSolid in BlockRailBase#canPlaceBlockAt (#2919) + +Build 1.9.4-12.17.0.1922-1.9.4: + tterrag1098: Add hook for TE data sync on client (#2893) + +Build 1.9.4-12.17.0.1921-1.9.4: + the.f1repl4ce: Switch new constructor to use floats (#2904) + +Build 1.9.4-12.17.0.1920-1.9.4: + atomicblom: Add Unit Test to detect mismatches between EnumHelper and Enum ctor + LexManos: Fix paramters for addArmorMaterial, addOption and addGameType. + LexManos: Make unit test for EnumHelper more robust and less spammy. Now detects missing accessors as well. + +Build 1.9.4-12.17.0.1918-1.9.4: + LexManos: Add alternative ItemAxe Constructor + +Build 1.9.4-12.17.0.1917-1.9.4: + LexManos: Fix villagers having farmer skin on vanilla servers. Closes #2894 + +Build 1.9.4-12.17.0.1916-1.9.4: + LexManos: Fire playerDestroyItem event's in some cases where we were not. + +Build 1.9.4-12.17.0.1915-1.9.4: + LexManos: Fix Container.compouteStackSize not respecting stack version of maxStackSize. Closes #2756 + +Build 1.9.4-12.17.0.1914-1.9.4: + LexManos: Set max enchantment ID to Short.MAX_VALUE. Closes #2799 + +Build 1.9.4-12.17.0.1913-1.9.4: + LexManos: Tipped arrows are now not affected by infinite enchantment but are still effected by creative mode. + +Build 1.9.4-12.17.0.1912-1.9.4: + tterrag1098: Fix screenshot link paths on Windows (#2886) + LexManos: Take capabilities into account when comparing ItemStack NBT's. Closes #2726 + +Build 1.9.4-12.17.0.1910-1.9.4: + cpw: Tweak build file slightly - allow passing buildNumber using gradle parameters (-PbuildNumber=...) and provide a "resetBuildNumber" function to reset the buildNumber to zero in the ForgeVersion file. Means builds can be reproducible in-IDE. + +Build 1.9.4-12.17.0.1909-1.9.4: + LexManos: Update example mod for new mappings. + +Build 1.9-12.16.1.1907: + bonii-xx: + Fix Bucket rendering and add sound (#2865) + + * Adjust generated quads from texture to take texture size into account #2858 + + * Fix universal bucket not passing through when rightclicking on a non-block + Add proper sound events when picking up modded fluids #2821 + + * Have FluidUtil execute properly on both sides and sync as expected. Add default sounds to interacting with tanks + + * Save sound for filling/emptying in the fluid + +Build 1.9-12.16.1.1906: + LexManos: Lets just simply this. Fixes last commit. + +Build 1.9-12.16.1.1905: + LexManos: Add modder facing API for Villager Career level trades. Ref: #2854 + +Build 1.9-12.16.1.1904: + cpw: Fix up release jsons to clean up extraneous netty references + fry: Extended Animation State Machine format to allow multiple transitions from one state. + +Build 1.8.9-11.15.1.1902-1.8.9: + cpw: Fix up release jsons to clean up extraneous netty references + +Build 1.9-12.16.1.1901: + cpw: Fix up release jsons to clean up extraneous netty references + +Build 1.9-12.16.1.1900: + LexManos: Make LootPool constructor public again. Closes #2847 + +Build 1.9-12.16.1.1899: + LexManos: Fix type in LootEntry json name. And rename LootTable.finalize to freeze to avoid overriding Object function. Closes #2846 and #2847 + +Build 1.9-12.16.1.1898: + fry: Fixed joint animation application correctly. + +Build 1.9-12.16.1.1897: + shadowfacts: + Add ScreenshotEvent (#2828) + + Add ScreenshotEvent + +Build 1.9-12.16.1.1896: + LexManos: + New LootTable interaction system and event. + Modders can now modify and reference internal elements of a loot table by name. + Editing can ONLY be done in the event and any external editing will cause a exception to be thrown. + See this gist for more information: https://gist.github.com/LexManos/77c983d67b9ad27010428478b66d50fd + +Build 1.9-12.16.1.1895: + fry: Fixed joint hierarchy not being used fully in the animation system. + +Build 1.9-12.16.1.1894: + LexManos: Fixed issue in ChunkIO that would potentially cause NPEs on chunks. Closes #2837 + +Build 1.9-12.16.1.1893: + LexManos: Fixed map extension recipie. + +Build 1.9-12.16.1.1892: + mezz: Fix the rand given to PopulateChunkEvent (#2834) + +Build 1.9-12.16.1.1891: + LexManos: Fix areas where dimension types are used as dimension IDs. + +Build 1.9-12.16.1.1889: + LexManos: Add NPE protection to in-hand item rendering. + +Build 1.9-12.16.1.1888: + mattmess1221: + Fix url regex (#2815) + + Fixed url detection in chat messages. Stops false positives such as `um.....no` + +Build 1.9-12.16.1.1887: + LexManos: Slightly better practice because wait can be randomly interupted. + LexManos: Bump version for new RB. + +Build 1.9-12.16.0.1886: + cpw: Don't ignore rejects + cpw: Add in mcp named patches and use them. Initial 1.9 setup. + cpw: Add rejects with mcp names for application to main codebase. Let's roll? + cpw: First few patches applied + LexManos: net.minecraft.block.* patches + LexManos: util, tileentity, stats, realms. Potions got an overhaul and out registry will need to be adapted. + LexManos: Some import renames and compile error fixes, killed ~800. + fry: Updated various block model patches. + fry: A bunch of rendering rejects updated. + fry: RendererLivingEntity, RenderEntityItem, RenderItem, RenderManager, LayerArmorBase; Item.getModel + ISmartItemModel are now inside ItemOverrideList; fix class rename in TESR patch. + fry: EntityRenderer, most of RenderGlobal, minor fix to LayerBipedArmor. + fry: tabs -> spaces. + fry: FontRenderer + fry: Fixed most errors in the model stuff, except for ModelLoader and b3d and obj getQuads/handleBlockState methods. + LexManos: Some entity patches. + CovertJaguar: Fix broken patches for EntityMinecart + LexManos: Items done, <1000 errors whoot! + LexManos: Small renames before bed. + fry: GuiCreateWorld, GuiSlot, GuiUtilRenderComponents, GuiContainerCreative + fry: GuiOverlayDebug, ItemModelMesher, RenderManager, Stitcher fixed + minor fixes in forge gui classes. + fry: removed Item.getModel, functionality is now achieveable via ItemOverrides. + fry: Updated raw types in ExtendedBlockState, fixed some ATs, updated some things that needed updating in model classes. + fry: Chunk + cpw: + DedicatedServer + IntegratedServer + Adubbz: + Updated the biome dictionary + + Squashed commits: + + [4064de6] Updated the biome dictionary + LexManos: Enchantments, some world, Biomes, bucks, world/gen/features. + Adubbz: Updated BiomeManager to 1.9 + LexManos: Delete reject files i missed + LexManos: More work on misc things. + LexManos: World Patches work. + fry: Fix various errors in text mods. + fry: Fixed B3D loader, fixed some obvious errors in ModelLoader. + cpw: + LanguageManager + NetHandlerPlayClient + fry: ModelBox, PositionTextureVertex, TexturedQuad. Does anyone really use those on the server? + cpw: + ServerPinger + PlayerList + cpw: + WorldServer: NOTE - ChestGenHooks has NOT been updated in accordance with plans for removing it + GuiStats + Fixup deletion of egg handling in entity registry? + fry: Removed generics from IModel subinterfaces, add ed ModelProcessingHelper instead. + fry: Model UV lock handling from the state to the model, fixed most compile errors in ModelLoader, disabled it (and ModelBakeEvent) until it's functional, fixed some errors in ForgeHooksClient. + fry: Made OBJModel.java compile. + LexManos: Fixed errrors in Fluids package. TODO: Make BlockLiquid implement IFluidBlock and REMOVE FluidContainerRegsitry. Everything *should* be able to use IFluidContainer directly. + LexManos: Fishing is now a loot table no more need for FishingHooks. {LootTables still need to be evaludated if they need extra hooks, but thats later} Goodbye 44 compile errors! + LexManos: Temporary hack to fix MCP mappings for param names we are using that is causing compile errors. + LexManos: NetworkDispatcher/FMLProxyPacket 41 more errors cleaned. + cpw: Some fixups for FML, and use the FML registry for potions + cpw: Some more FML related fixups + cpw: Fix up import in Potion + cpw: Some client handler cleanup + cpw: Remove two patches that aren't needed anymore + cpw: Command fixups + cpw: Few more compile fixups + LexManos: More patch work, client patches. + LexManos: + 10 more rejects down. + 98 errors 6 rejects left. + fry: World + fry: Most of ItemInWorldManager reject, various small error fixes. + cpw: Some more forge code fixes + cpw: + Another compilation fix + More patch tweaks for compilation errors. onItemUseTick takes an entity now, cos skellies use stuff too + cpw: More fixups, removing chestgenstuff aggressively. Use loot tables. Any missing ones WILL be added by Mojang. + cpw: Remove more chestgenhooks stuff. Clean up some more ATs + cpw: Potion cleanup. Moar fixes! + cpw: Finish world, chunkloading should work again? + cpw: Another AT, for the player + cpw: Fix up PlayerSP for the AT + LexManos: Interaction hooks need to be re-added but compiles {Doesn't run} + LexManos: + Added bypass functions to Defaulted registry, DO NOT USE THIS MODDERS FORGE INTERNAL ONLY. + And some other fixups for running. + LexManos: Bump version info. Rather important. + LexManos: Fixed position being shifted before being sent to shouldSideBeRendered. + fry: Fix perspective transformations for left-handed items, disable ModelAnimationDebug until model loading is fixed. + cpw: Fix race condition between server ticks and the netlogin code handshaking for FML + cpw: Move the patch into the fml override handler, for less patch + fry: Fix items rendering too low in first person. + fry: Fixed (hopefully) perspective transformations for custom models too. + cpw: Capture Biome Registry within FML + fry: Fixed emply hand not rendering in first person. + fry: Fixed incorrect rendering state caused by transparent rendering pass for entities. + fry: Fixed armor rendering + cpw: Switch to srg patches + fry: Updated to latest mappings. Exc is broken, some anonymous classes didn't map to srg names. + fry: Fixed some errors in forge.exc + fry: First version of updated of ModelLoader, mostly works. + fry: Big model loader refactoring: simplified a lot of things, broke some error reporting. Still generally works. + LexManos: Update patches for fixed inner class suffeling in srg files. + LexManos: We are based on 1.9 not 1.8.9 :D + LexManos: Delete mcp patches. + LexManos: PlayerManager updated. + LexManos: Fix digging blocks in survival. + LexManos: Fixed breaking of tall grass. It now uses fortune. Expanded grass seed hooks to allow Fortune. Potentially removing in future in favor of LootTables. + vazkii: + 1.9: Fixed registering armor materials through EnumHelper exploding + + 1.9 ArmorMaterial now requires a SoundEvent for the equip sound. + fry: Fixed model error reporting, fixed model errors in test mods that shouldn't happen, fixed custom texture loading, made more things private/final. + fry: Fixed incorrect rotations for items in the left hand. Closes #2548. + fry: Fixed incorrect culling of mod TESRs. + fry: Fixed EffectRenderer patch, closes #2547. + fry: Removed imports in patches. + fry: Fixed progress reporting for model loading. + fry: Javadocs, small cleanup. + LexManos: Remove our entity position fixer. Vanilla fixed the bug in 1.9. + LexManos: Fix vanilla bug where bows consumed tipped arrows in creative. + LexManos: Fixed onUseStop being called twice {Bows firing twice} + LexManos: Fixed Sand not falling. + LexManos: Fixed NPE when sneak using a item. + Adubbz: BlockColors and ItemColors no longer assume non-Vanilla id constancy. Added a getter for ItemColors. + fry: Fixed MultiLayerModel not getting correct submodels; Unified the gui lighting of normal and custom models - diffuse lighting is now done in the pipeline, no need for IColoredBakedQuad anymore. + fry: Fixed quads that don't need diffuse lighting getting it anyway. + LexManos: Fix AT lines. + fry: Fixed invalid index calculation in BakedQuadRetextured. + fry: Fixed Block.doesSideBlockRendering, closes #2564. + fry: Fixed outline shader rendering, closes #2560. + fry: Fixed sprite not being passed to the quad builder for custom models. + cordonfreeman: Fix for patch targetting the wrong field to change for failed pathfinding penalty + iTitus: + Fix the EntityPlayer patch + + In 1.8.9 the call goes to getDisplayNameString() so that any changes from the PlayerEvent.NameFormat event are being take into account. + In this patch the call goes to func_70005_c_() which is the getter for the GameProfile name. + I changed it back. + + Sorry if you do not want to accept it because it is a one-liner. + vincent.lee: Fix #2555 + diesieben07: Fix broken patch in EntityPlayer.updateRidden + blay09: + Fix KeyInputEvent only being fired if Keyboard.getEventKeyState() is false. + + It used to be called for both key-up and key-down states prior to 1.9, so I assume Vanilla's changes to F3 behavior broke the patch. + matthewprenger: Pass exceptions thrown in mod event buses back to FML to handle apropriately + vincent.lee: Fix double dropping of items. Closes #2549 + cpw: Ignore classes directory + cpw: Fix bucket test + diesieben07: Fix EntityList.func_188429_b not supporting mod-entities, fixes spawn eggs, fixes #2581 + CovertJaguar: Fix #2601 Minecart infinite acceleration + gigaherz: Fix a condition that caused the enchantment table to roll invalid enchantments. + fry: Switched animation system to capabilities, added animated item example, fixed state passing in MultiModel. + fry: Separated model classes to client and common packages. + fry: instance -> INSTANCE + vincent.lee: Expose IItemHandler on vanilla entities + fry: Implemented slightly more generic version of UVLock, re-enabled it for json models. Closes #2607. + fry: Removed blockCenterToCorner from TRSRTransformation constructor. Closes #2461. + fry: Ignore blocks/items with null registry name during model loading. Fixes NPE during resource reloading in worlds with removed blocks/items. + fry: Made VertexBuffer.sortVertexData cleanup pointers after it's done. Closes #2528. + fry: Added default left hand transforms for forge transform strings. Closes #2615. + elpatricimo: + Allow players sized smaller than 1 block to walk into small spaces + + Same as #2605 but for 1.9 branch + LexManos: Rework DimensionManager for new DimensionType enum, replaces the old provider registry. Also fixed save folder issues with dimensions. Closes #2570 + LexManos: Fix Chests not opening correctly with semi-solid blocks on top. + LexManos: Fixed Item.shouldCauseReequipAnimation hook. + LexManos: Add ShieldDecoration and Tipped arrows to recipe sorter. Closes #2613 + LexManos: Exclude jna from termal tansformer. + vincent.lee: Update according to suggestions + LexManos: Fix pushing players inside blocks. + LexManos: Make RenderLivingBase.add/remvoeLayer, Closes #2573 + LexManos: Added support for custom dyes with Banners. Closes #2596 + LexManos: Allow finite fluids to be drained correctly + LexManos: Make OreDictionary.initVanillaEntries() private so that dumb modders will stop calling it. + vincent.lee: Actually fix dupe drop + LexManos: Fix swap animations for sure this time. + fry: Added Capability.cast, to allow avoiding unchecked casts in ICapabilityProvider.getCapability + LexManos: Update FML Entity Spawn packet for 1.9's location change. Closes #2567 + LexManos: Fixed custom entities unique ids. + LexManos: Fix typo causing biomes to be generated in wrong chunks. Closes #2632 + fry: Show meaningful error if ModelLoaderRegistry is used before the missing model is initialized. + fry: Register the animation Capability. No idea how it worked before at some point. + iTitus: + Add flashing update notification icon made by @gigaherz, closes #2582 + + It is added to the "Mods" button in the main menu and to out-of-date mods in the mod list (there it replaces the "U"). + Also fixes a little typo. + diesieben07: Fix BlockCrops.getDrops not respecting new age methods (for beetroots) + diesieben07: Fix PopulateChunkEvent.Post not firing + LexManos: + New Builder class in BlockStateContainer. Makes building containers with both listed and unlisted properties cleaner. + Make all methods of BiomeGenBase$BiomeProperties public so that modders can use that class outside subclasses. + fry: Cleanup: removed IEEP, removed redundant casts, fixed imports, fixed typos. + fry: Fixed isSideSolid causing infinite loops due to the call to getActualState. + fry: Removed LanguageRegistry and CollectionWrapperFactory. + fry: Removed RenderWorldEvent, encapsulated all public event fields. + fry: Made some more public fields either private or final. + fry: Disabled erroring block, fixed DynBucketTest.TestItem model. + mezz: + Make tooltips layout in the right direction, wrap if there is no room + + Same as #2649, but for Minecraft 1.9 + fry: Fixed diffuse lighting not being applied if forge lighting pipeline is disabled, closes #2651 + fry: Enabled diffuse lighting by default in UnpackedBakedQuad.Builder. + fry: Fixed crosshair always being white, closes #2653. + kashike: + Replace Forge's `BlockPos#getImmutable` method with the included `BlockPos#toImmutable` (func_185334_h), while keeping the override in PooledMutableBlockPos to prevent mutable leaks. + Also prevent a mutable blockpos leak in World#setTileEntity + gigaherz: Add wrapper methods for IStorage#readNBT/writeNBT. + mezz: Fix Block.getPickBlock returning an ItemStack with a null Item + fry: Prevent missing model from loading multiple times. + fry: Fixed StackOverflow caused by the previous commit, closes #2669. + LexManos: Fix EntityPlayer still running old armor logic. Closes #2670 + LexManos: Fix shrubs not generating correctly. Closes #2663 + LexManos: Fix bows not animating properly when picking up ammo while using. Closes #2672 + LexManos: Make NoteBlockEvent raw constructor protected to allow subclasses. Closes #2153 + LexManos: Fix landing particles not showing up. Cloes #2661 + shadowfacts: Forward ItemBlock#addInformation to Block#addInformation + tterrag1098: Add state param to canRenderInLayer + hea3venmc: Fix remapped blocks being overriden with dummy air blocks. Closes #2491 + cpw: + Squashed commit of the following: + + commit b3b290aec9d3010a134859da6001ea28a96c2fdc + Merge: c6ce6a0 d803f7d + Author: cpw + Date: Fri Mar 25 13:28:04 2016 -0400 + + Merge branch 'RegistryRework' of https://github.com/LexManos/MinecraftForge into LexManos-RegistryRework + + Implement proper registry slaves. Should help with rollback related issues. + + Missing patch + + commit d803f7db76f65db9d27302c9804a643bc853dc22 + Author: LexManos + Date: Tue Mar 22 03:36:14 2016 -0700 + + Update VillagerRegistry and use it. Should in theory make custom villagers work now. Using string version instead of int id for networking. + + commit eb5e5b4b42fdca26d2a104e4dc1e6a3ea3051a7b + Author: LexManos + Date: Tue Mar 22 02:14:16 2016 -0700 + + More cleanup. + + commit edbc56b2ff314629d0e402709f3cf29fc79c4a3d + Author: LexManos + Date: Tue Mar 22 02:05:23 2016 -0700 + + More cleanups, removed deprecated UniqueIdentifier {ResourceLocation now} + + commit e2df8d1be3c97601508f83dc97b0e8853fa1e271 + Author: LexManos + Date: Tue Mar 22 01:29:19 2016 -0700 + + Stupid generics.... + + commit 46d57dc4677fa5ff3923e64eaccfb33d7e5aad8d + Author: LexManos + Date: Tue Mar 22 01:00:25 2016 -0700 + + Some registry tweaking to provde a non-complicated API modders can use. + cpw: Reconcile Block.patch + cpw: + Add registries for soundevents, enchantments and potiontypes + MinecraftForge-2576 [1.9] SoundEvents (and Enchantments and PotionTypes) need a FML registry + cpw: MinecraftForge-2683 InvocationTargetException for Forge 1820 for 1.9 + cpw: MinecraftForge-2684 [1.9] New Registry ignores keys + fry: Improved UV offset hackery - should fix most visible custom model seams. + cpw: Support ResLocations for IMC + cpw: Capture a vanilla freeze - will be used when FML connects to vanilla servers, soon + LexManos: Fixed compile error in registry code with Eclipse. + mezz: + Add key binding modifiers and contexts. + + Same as #2674, but for Minecraft 1.9 + Adubbz: Fixed mismatch registry names and mod ids + LexManos: Properly deprecate and link the replacement methods in GameRegistry. Add helper method for registering a block with default ItemBlock because people keep complaining -.- + fry: Changed generic signature of GameRegistry.register methods to work around the type inference bug; updated all example mods to the new block/item registration method. + fry: + Revert "Add key binding modifiers and contexts.", until it's fixed. + + This reverts commit 34c3af7e853d578c8e17e1f0cdf886251fad74ae. + mezz: Re-Add key binding modifiers and contexts. + mezz: Fix inability to attack while holding modifier keys + mcjty1: + Added DimensionManager.createProviderFor() to WorldClient constructor similar to what is done + in WorldServer to make sure the correct provider is created client-side too. + AEnterprise: onBlockHarvested is no longer called twice + fry: Added the ability to change the printed model error count; Added printing of actual exceptions causing missing variants related to blockstate loading, closes #2689. + fry: Made both exceptions occuring during item model loading print in the log; closes #2696. + LexManos: Fix issue caused by setting spawnRadius to 0. Closes #2624 + LexManos: Fixed EntityJoinWorldEvent not being fired for some entitites on Server Worlds. Closes #2685 + LexManos: Fix improper logic in ItemHandlerHelper.giveItemToPlayer causing some items to not be added. Closes #2705 + mezz: + Add modifier support to vanilla keybindings. + + Add Orange conflict color for modifier/key conflicts + (like Ctrl and Ctrl-Z conflicting) + Related to #2692 + vincent.lee: Player Interact Event + Zaggy1024: Fixed using PlaySoundEvent to replace a sound with a PositionedSound causing an NPE due to the Sound field not being set by a call to ISound.createAccessor(SoundHandler). + fry: Fixed mod languages not being loaded on the server. + fry: Fixed some test mods not being marked as client-only. + iTitus: Fix dynbucket item transformation. + fry: Fixed zip being closed too early in the server language loading. + fry: Fixed forge fluid having a collision box. + kat.swales: Corrected CapabilityItemHandler.readNBT ignoring anything in slot 0 in 1.9 + mezz: Fix #2717 Pick block hotkey not working in inventories + mezz: Fix some plain keybinds not working when a modifier is active + LexManos: Enhance some error logging related to OBJLoader issues, and RegistryEntries. + LexManos: + Cleanup OBJLoader parse function and fix issues related to JVM differences. + Also fix support for sopme of the spec that was partially respected. + LexManos: Fixed NPE in dedicated server languages. And fixed logger for main FML event bus. + fry: Made forge fluids use smooth lighting. + kashike: + Remove @SideOnly(Side.CLIENT) from BossInfo/BossInfoServer methods + + These methods can also be used by the server (see BossInfoServer, it sends packets to the client but the methods are @SideOnly(Side.CLIENT)) + LexManos: Fix potential desync between Forge's Villager profession and vanilla's int based system. + LexManos: Fix being kicked from server when climbing ladders. + matti.j.ruohonen: Fix ForgeChunkManager world unloading check (#2736) + mezz: + Add cancelable event for Potions shifting the gui position (#2667) + + Add cancelable event for Potions shifting the gui position + matthewprenger: Don't use import static with net.minecraft classes. Using the latest MCP snapshots this causes an import conflict. (#2742) + CrafterKina: make WorldSavedData implement NBTSerializable (#2745) + mezz: Fix log spam from invalid key modifiers (#2746) + LexManos: Expose a central place to access all of Vanilla and Forge's registries using the new registry API. + iTitus: + Fix forge:default-block transformation. (#2760) + + The first-person left-hand rotation was a little bit of. + vincent.lee: + Boss bar render event (#2701) + + Allow control over increment height + LexManos: Fix NPE on shield break. Closes #2786 + cpw: Add the new license text. Not yet applicable to forge. + cpw: + Update LICENSE-new.txt + + Clarification on infectivity + cpw: + Update LICENSE-new.txt + + Words + cpw: + Update LICENSE-new.txt + + Better words + mezz: Close #2780 add CMD localization for Mac key bindings (#2792) + bonii-xx: + Fix SidedInvWrapper accessing wrong slots for setStackInSlot. (#2797) + + Fix DoubleChestItemHandler not implementing IItemHandlerModifiable + LexManos: Fix sluggish scrolling on GuiScrollList's and fix small rendering issue with scroll bar on certian screen sizes. + bloodmc: + Only run block physics for TileEntities while capturing block placement. (#2803) + + Currently, all blocks placed by players that are not TE's run physics + twice. Blocks that contain a TileEntity are not affected due to a check in + 'ForgeHooks.onPlaceItemIntoWorld'. + + In order to fix the problem, 'Chunk.setBlockState' will now verify if + blocks are being captured before running onBlockAdded and if so, only run + physics if the block has a tileentity. This check also prevents blocks such + as TNT's from running its physics (explosion) when event is cancelled. + williewillus: Add Potion.renderHUDEffect (#2798) + bloodmc: + Call markDirty when restoring blocks with TileEntities. (#2809) + + This change makes sure the updated tileentity is saved properly within the + chunk. + AlexIIL: Fix TextureMap failing when registering a sprite's resource location twice (#2785) + fry: Fixed custom fluid sufraces not rendering from the bottom. Closes #2800. + fry: Make ChunkRenderDispatcher.countRenderBuilders configurable. Closes #2775. + fry: Fixed cooldown overlay sometimes rendering opaque. Closes #2772. + fry: Fixed villager profession not being set correctly on the client, and fixed custom village texture rendering. Closes #2766. + LexManos: Fix withers breaking bedrock. Closes #2813 + LexManos: + Add a java version detection and nag system for users on Java 7 or below. + Added detection of mods that rely on Java 8 and a graceful error screen. + The nag screen will be shown once a day. It can be disabled by editing the forge.cfg. + However it is HIGHLY recomended that user update to Java 8. + LexManos: Remove usage of AsynchronousExecutor library in favor or a simpler implementation. + cpw: Merge in a fix from 1.8.9 for rails + +Build 1.9-12.16.0.1885-1.9: + LexManos: Remove usage of AsynchronousExecutor library in favor or a simpler implementation. + +Build 1.9-12.16.0.1884-1.9: + LexManos: + Add a java version detection and nag system for users on Java 7 or below. + Added detection of mods that rely on Java 8 and a graceful error screen. + The nag screen will be shown once a day. It can be disabled by editing the forge.cfg. + However it is HIGHLY recomended that user update to Java 8. + +Build 1.9-12.16.0.1883-1.9: + LexManos: Fix withers breaking bedrock. Closes #2813 + +Build 1.9-12.16.0.1882-1.9: + fry: Fixed villager profession not being set correctly on the client, and fixed custom village texture rendering. Closes #2766. + +Build 1.9-12.16.0.1881-1.9: + fry: Fixed cooldown overlay sometimes rendering opaque. Closes #2772. + +Build 1.9-12.16.0.1880-1.9: + fry: Make ChunkRenderDispatcher.countRenderBuilders configurable. Closes #2775. + +Build 1.9-12.16.0.1879-1.9: + fry: Fixed custom fluid sufraces not rendering from the bottom. Closes #2800. + +Build 1.9-12.16.0.1878-1.9: + AlexIIL: Fix TextureMap failing when registering a sprite's resource location twice (#2785) + +Build 1.9-12.16.0.1877-1.9: + bloodmc: + Call markDirty when restoring blocks with TileEntities. (#2809) + + This change makes sure the updated tileentity is saved properly within the + chunk. + +Build 1.8.9-11.15.1.1875: + bloodmc: + Call markDirty when restoring blocks with TileEntities. (#2807) + + This change makes sure the updated tileentity is saved properly within the + chunk. + +Build 1.9-12.16.0.1874-1.9: + williewillus: Add Potion.renderHUDEffect (#2798) + +Build 1.8.9-11.15.1.1873: + bloodmc: Fix wrong blockstate being passed to notifyNeighborsRespectDebug. (#2806) + +Build 1.8.9-11.15.1.1872: + bloodmc: + Only run block physics for TileEntities while capturing block placement. (#2805) + + Currently, all blocks placed by players that are not TE's run physics + twice. Blocks that contain a TileEntity are not affected due to a check in + 'ForgeHooks.onPlaceItemIntoWorld'. + + In order to fix the problem, 'Chunk.setBlockState' will now verify if + blocks are being captured before running onBlockAdded and if so, only run + physics if the block has a tileentity. This check also prevents blocks + such as TNT's from running its physics (explosion) when placement event is + cancelled. + +Build 1.9-12.16.0.1871-1.9: + bloodmc: + Only run block physics for TileEntities while capturing block placement. (#2803) + + Currently, all blocks placed by players that are not TE's run physics + twice. Blocks that contain a TileEntity are not affected due to a check in + 'ForgeHooks.onPlaceItemIntoWorld'. + + In order to fix the problem, 'Chunk.setBlockState' will now verify if + blocks are being captured before running onBlockAdded and if so, only run + physics if the block has a tileentity. This check also prevents blocks such + as TNT's from running its physics (explosion) when event is cancelled. + +Build 1.9-12.16.0.1870-1.9: + LexManos: Fix sluggish scrolling on GuiScrollList's and fix small rendering issue with scroll bar on certian screen sizes. + +Build 1.9-12.16.0.1869-1.9: + bonii-xx: + Fix SidedInvWrapper accessing wrong slots for setStackInSlot. (#2797) + + Fix DoubleChestItemHandler not implementing IItemHandlerModifiable + +Build 1.9-12.16.0.1868-1.9: + cpw: + Update LICENSE-new.txt + + Clarification on infectivity + cpw: + Update LICENSE-new.txt + + Words + cpw: + Update LICENSE-new.txt + + Better words + mezz: Close #2780 add CMD localization for Mac key bindings (#2792) + +Build 1.9-12.16.0.1867-1.9: + cpw: Add the new license text. Not yet applicable to forge. + +Build 1.9-12.16.0.1866-1.9: + LexManos: Fix NPE on shield break. Closes #2786 + +Build 1.9-12.16.0.1865-1.9: + vincent.lee: + Boss bar render event (#2701) + + Allow control over increment height + +Build 1.9-12.16.0.1864-1.9: + izooDee5: + Fix forge:default-block transformation. (#2760) + + The first-person left-hand rotation was a little bit of. + +Build 1.9-12.16.0.1863-1.9: + LexManos: Expose a central place to access all of Vanilla and Forge's registries using the new registry API. + +Build 1.9-12.16.0.1862-1.9: + LexManos: Fix log spam from invalid key modifiers (#2746) + +Build 1.9-12.16.0.1861-1.9: + LexManos: make WorldSavedData implement NBTSerializable (#2745) + +Build 1.9-12.16.0.1860-1.9: + LexManos: Don't use import static with net.minecraft classes. Using the latest MCP snapshots this causes an import conflict. (#2742) + +Build 1.9-12.16.0.1859-1.9: + LexManos: + Add cancelable event for Potions shifting the gui position (#2667) + + Add cancelable event for Potions shifting the gui position + +Build 1.9-12.16.0.1858-1.9: + LexManos: Fix ForgeChunkManager world unloading check (#2736) + +Build 1.9-12.16.0.1857-1.9: + LexManos: Fix being kicked from server when climbing ladders. + +Build 1.9-12.16.0.1856-1.9: + LexManos: Fix potential desync between Forge's Villager profession and vanilla's int based system. + +Build 1.8.9-11.15.1.1855: + LexManos: + Update ore dictionary (#2721) + + Updated the Ore Dictionary with more vanilla items: + -Prismarine Shard ( "gemPrismarine" ) + -Prismarine Crystals ( "dustPrismarine" ) + -Prismarine Block ( "blockPrismarine" ) + -Prismarine Brick ( "blockPrismarineBrick" ) + -Dark Prismarine ( "blockDarkPrismarine" ) + -Nether Wart ( "cropNetherWart" ) + -Sugarcane ( "sugarcane" ) + -Paper ( "paper" ) + -Ender Pearl ( "enderpearl" ) + -Bone ( "bone) + -Gunpowder ( "gunpowder) + -String ( "string" ) + -Nether Star ( "netherStar" ) + -Leather ( "leather" ) + -Feather ( "feather" ) + -Egg ( "egg" ) + -End Stone ( "endstone" ) + -Torch ( "torch" ) + -Vine ( "vine" ) + -Cactus ( "blockCactus" ) + -Grass ( "grass") + -Obsidian ( "obsidian" ) + -Red Sandstone ( added to "sandstone" ) + -Crafting Table ( "workbench" ) + -Slime Block ( "blockSlime" ) + -Granite ( "stoneGranite" ) + -Polished Granite ( "stoneGranitePolished" ) + -Diorite ( "stoneDiorite" ) + -Polished Diorite ( "stoneDioritePolished" ) + -Andesite ( "stoneAndesite" ) + -Polished Andesite ( "stoneAndesitePolished" ) + +Build 1.9-12.16.0.1854-1.9: + kashike: + Remove @SideOnly(Side.CLIENT) from BossInfo/BossInfoServer methods + + These methods can also be used by the server (see BossInfoServer, it sends packets to the client but the methods are @SideOnly(Side.CLIENT)) + +Build 1.9-12.16.0.1853-1.9: + fry: Made forge fluids use smooth lighting. + +Build 1.9-12.16.0.1852-1.9: + LexManos: Fixed NPE in dedicated server languages. And fixed logger for main FML event bus. + +Build 1.9-12.16.0.1851-1.9: + LexManos: Enhance some error logging related to OBJLoader issues, and RegistryEntries. + LexManos: + Cleanup OBJLoader parse function and fix issues related to JVM differences. + Also fix support for sopme of the spec that was partially respected. + +Build 1.9-12.16.0.1850-1.9: + mezz: Fix some plain keybinds not working when a modifier is active + +Build 1.9-12.16.0.1849-1.9: + mezz: Fix #2717 Pick block hotkey not working in inventories + +Build 1.9-12.16.0.1848-1.9: + kat.swales: Corrected CapabilityItemHandler.readNBT ignoring anything in slot 0 in 1.9 + +Build 1.8.9-11.15.1.1847: + kat.swales: Corrected readNBT ignoring anything in slot 0 + +Build 1.9-12.16.0.1846-1.9: + fry: Fixed zip being closed too early in the server language loading. + fry: Fixed forge fluid having a collision box. + +Build 1.9-12.16.0.1845-1.9: + iTitus: Fix dynbucket item transformation. + +Build 1.9-12.16.0.1844-1.9: + fry: Fixed some test mods not being marked as client-only. + +Build 1.9-12.16.0.1843-1.9: + fry: Fixed mod languages not being loaded on the server. + +Build 1.9-12.16.0.1842-1.9: + Zaggy1024: Fixed using PlaySoundEvent to replace a sound with a PositionedSound causing an NPE due to the Sound field not being set by a call to ISound.createAccessor(SoundHandler). + +Build 1.9-12.16.0.1841-1.9: + mezz: + Add modifier support to vanilla keybindings. + + Add Orange conflict color for modifier/key conflicts + (like Ctrl and Ctrl-Z conflicting) + Related to #2692 + +Build 1.9-12.16.0.1840-1.9: + vincent.lee: Player Interact Event + +Build 1.9-12.16.0.1839-1.9: + AEnterprise: onBlockHarvested is no longer called twice + LexManos: Fixed EntityJoinWorldEvent not being fired for some entitites on Server Worlds. Closes #2685 + LexManos: Fix improper logic in ItemHandlerHelper.giveItemToPlayer causing some items to not be added. Closes #2705 + +Build 1.9-12.16.0.1838-1.9: + LexManos: Fix issue caused by setting spawnRadius to 0. Closes #2624 + +Build 1.9-12.16.0.1837-1.9: + fry: Made both exceptions occuring during item model loading print in the log; closes #2696. + +Build 1.9-12.16.0.1836-1.9: + fry: Added the ability to change the printed model error count; Added printing of actual exceptions causing missing variants related to blockstate loading, closes #2689. + +Build 1.9-12.16.0.1835-1.9: + mcjty1: + Added DimensionManager.createProviderFor() to WorldClient constructor similar to what is done + in WorldServer to make sure the correct provider is created client-side too. + +Build 1.9-12.16.0.1834-1.9: + iTitus: + Add flashing update notification icon made by @gigaherz, closes #2582 + + It is added to the "Mods" button in the main menu and to out-of-date mods in the mod list (there it replaces the "U"). + Also fixes a little typo. + +Build 1.9-12.16.0.1833-1.9: + mezz: Fix inability to attack while holding modifier keys + +Build 1.9-12.16.0.1832-1.9: + mezz: Re-Add key binding modifiers and contexts. + +Build 1.9-12.16.0.1831-1.9: + fry: + Revert "Add key binding modifiers and contexts.", until it's fixed. + + This reverts commit 34c3af7e853d578c8e17e1f0cdf886251fad74ae. + +Build 1.9-12.16.0.1830-1.9: + fry: Changed generic signature of GameRegistry.register methods to work around the type inference bug; updated all example mods to the new block/item registration method. + +Build 1.9-12.16.0.1829-1.9: + Adubbz: Fixed mismatch registry names and mod ids + +Build 1.9-12.16.0.1828-1.9: + mezz: + Add key binding modifiers and contexts. + + Same as #2674, but for Minecraft 1.9 + +Build 1.9-12.16.0.1827-1.9: + LexManos: Properly deprecate and link the replacement methods in GameRegistry. Add helper method for registering a block with default ItemBlock because people keep complaining -.- + +Build 1.9-12.16.0.1826-1.9: + LexManos: Fixed compile error in registry code with Eclipse. + +Build 1.9-12.16.0.1825-1.9: + cpw: Capture a vanilla freeze - will be used when FML connects to vanilla servers, soon + +Build 1.9-12.16.0.1824-1.9: + cpw: Support ResLocations for IMC + +Build 1.9-12.16.0.1823-1.9: + fry: Improved UV offset hackery - should fix most visible custom model seams. + +Build 1.9-12.16.0.1822-1.9: + cpw: MinecraftForge-2684 [1.9] New Registry ignores keys + +Build 1.9-12.16.0.1821-1.9: + cpw: MinecraftForge-2683 InvocationTargetException for Forge 1820 for 1.9 + +Build 1.9-12.16.0.1820-1.9: + cpw: + Add registries for soundevents, enchantments and potiontypes + MinecraftForge-2576 [1.9] SoundEvents (and Enchantments and PotionTypes) need a FML registry + +Build 1.9-12.16.0.1819-1.9: + cpw: Fix remapped blocks being overriden with dummy air blocks. Closes #2491 + cpw: + Squashed commit of the following: + + commit b3b290aec9d3010a134859da6001ea28a96c2fdc + Merge: c6ce6a0 d803f7d + Author: cpw + Date: Fri Mar 25 13:28:04 2016 -0400 + + Merge branch 'RegistryRework' of https://github.com/LexManos/MinecraftForge into LexManos-RegistryRework + + Implement proper registry slaves. Should help with rollback related issues. + + Missing patch + + commit d803f7db76f65db9d27302c9804a643bc853dc22 + Author: LexManos + Date: Tue Mar 22 03:36:14 2016 -0700 + + Update VillagerRegistry and use it. Should in theory make custom villagers work now. Using string version instead of int id for networking. + + commit eb5e5b4b42fdca26d2a104e4dc1e6a3ea3051a7b + Author: LexManos + Date: Tue Mar 22 02:14:16 2016 -0700 + + More cleanup. + + commit edbc56b2ff314629d0e402709f3cf29fc79c4a3d + Author: LexManos + Date: Tue Mar 22 02:05:23 2016 -0700 + + More cleanups, removed deprecated UniqueIdentifier {ResourceLocation now} + + commit e2df8d1be3c97601508f83dc97b0e8853fa1e271 + Author: LexManos + Date: Tue Mar 22 01:29:19 2016 -0700 + + Stupid generics.... + + commit 46d57dc4677fa5ff3923e64eaccfb33d7e5aad8d + Author: LexManos + Date: Tue Mar 22 01:00:25 2016 -0700 + + Some registry tweaking to provde a non-complicated API modders can use. + cpw: Reconcile Block.patch + +Build 1.9-12.16.0.1817-1.9: + kashike: + Replace Forge's `BlockPos#getImmutable` method with the included `BlockPos#toImmutable` (func_185334_h), while keeping the override in PooledMutableBlockPos to prevent mutable leaks. + Also prevent a mutable blockpos leak in World#setTileEntity + gigaherz: Add wrapper methods for IStorage#readNBT/writeNBT. + LexManos: Fix landing particles not showing up. Cloes #2661 + shadowfacts: Forward ItemBlock#addInformation to Block#addInformation + tterrag1098: Add state param to canRenderInLayer + +Build 1.9-12.16.0.1816-1.9: + LexManos: Make NoteBlockEvent raw constructor protected to allow subclasses. Closes #2153 + +Build 1.9-12.16.0.1815-1.9: + LexManos: Fix EntityPlayer still running old armor logic. Closes #2670 + LexManos: Fix shrubs not generating correctly. Closes #2663 + LexManos: Fix bows not animating properly when picking up ammo while using. Closes #2672 + +Build 1.9-12.16.0.1814-1.9: + mezz: Fix Block.getPickBlock returning an ItemStack with a null Item + +Build 1.9-12.16.0.1813-1.9: + fry: Fixed StackOverflow caused by the previous commit, closes #2669. + +Build 1.9-12.16.0.1812-1.9: + fry: Prevent missing model from loading multiple times. + +Build 1.9-12.16.0.1811-1.9: + fry: Enabled diffuse lighting by default in UnpackedBakedQuad.Builder. + fry: Fixed crosshair always being white, closes #2653. + +Build 1.9-12.16.0.1810-1.9: + fry: Fixed diffuse lighting not being applied if forge lighting pipeline is disabled, closes #2651 + +Build 1.9-12.16.0.1809-1.9: + mezz: + Make tooltips layout in the right direction, wrap if there is no room + + Same as #2649, but for Minecraft 1.9 + +Build 1.8.9-11.15.1.1808: + mezz: + Make tooltips layout in the right direction, wrap if there is no room + + Fixes #2255 + +Build 1.9-12.16.0.1807-1.9: + fry: Disabled erroring block, fixed DynBucketTest.TestItem model. + +Build 1.9-12.16.0.1806-1.9: + diesieben07: Fix PopulateChunkEvent.Post not firing + +Build 1.9-12.16.0.1805-1.9: + fry: Cleanup: removed IEEP, removed redundant casts, fixed imports, fixed typos. + fry: Fixed isSideSolid causing infinite loops due to the call to getActualState. + fry: Removed LanguageRegistry and CollectionWrapperFactory. + fry: Removed RenderWorldEvent, encapsulated all public event fields. + fry: Made some more public fields either private or final. + +Build 1.9-12.16.0.1804-1.9: + LexManos: + New Builder class in BlockStateContainer. Makes building containers with both listed and unlisted properties cleaner. + Make all methods of BiomeGenBase$BiomeProperties public so that modders can use that class outside subclasses. + +Build 1.9-12.16.0.1803-1.9: + diesieben07: Fix BlockCrops.getDrops not respecting new age methods (for beetroots) + +Build 1.9-12.16.0.1802-1.9: + fry: Show meaningful error if ModelLoaderRegistry is used before the missing model is initialized. + fry: Register the animation Capability. No idea how it worked before at some point. + +Build 1.9-12.16.0.1801-1.9: + LexManos: Fix typo causing biomes to be generated in wrong chunks. Closes #2632 + +Build 1.9-12.16.0.1800-1.9: + LexManos: Fixed custom entities unique ids. + +Build 1.9-12.16.0.1799-1.9: + LexManos: Update FML Entity Spawn packet for 1.9's location change. Closes #2567 + +Build 1.9-12.16.0.1798-1.9: + vincent.lee: Actually fix dupe drop + +Build 1.9-12.16.0.1797-1.9: + fry: Added Capability.cast, to allow avoiding unchecked casts in ICapabilityProvider.getCapability + +Build 1.9-12.16.0.1796-1.9: + LexManos: Fix swap animations for sure this time. + +Build 1.9-12.16.0.1795-1.9: + LexManos: Allow finite fluids to be drained correctly + LexManos: Make OreDictionary.initVanillaEntries() private so that dumb modders will stop calling it. + +Build 1.8.9-11.15.1.1794: + Choonster.2010: Allow finite fluids to be drained correctly + +Build 1.9-12.16.0.1792-1.9: + matthewprenger: Pass exceptions thrown in mod event buses back to FML to handle apropriately + vincent.lee: Fix double dropping of items. Closes #2549 + diesieben07: Fix EntityList.func_188429_b not supporting mod-entities, fixes spawn eggs, fixes #2581 + +Build 1.8.9-11.15.1.1791: + elpatricimo: + Fix pushing players inside blocks. + + same changes made to the 1.9 branch + +Build 1.9-12.16.0.1790-1.9: + vincent.lee: Expose IItemHandler on vanilla entities + vincent.lee: Update according to suggestions + +Build 1.9-12.16.0.1789-1.9: + LexManos: Make RenderLivingBase.add/remvoeLayer, Closes #2573 + LexManos: Added support for custom dyes with Banners. Closes #2596 + +Build 1.9-12.16.0.1788-1.9: + LexManos: Add ShieldDecoration and Tipped arrows to recipe sorter. Closes #2613 + LexManos: Exclude jna from termal tansformer. + LexManos: Fix pushing players inside blocks. + +Build 1.9-12.16.0.1787-1.9: + LexManos: Fix Chests not opening correctly with semi-solid blocks on top. + LexManos: Fixed Item.shouldCauseReequipAnimation hook. + +Build 1.9-12.16.0.1786-1.9: + elpatricimo: + Allow players sized smaller than 1 block to walk into small spaces + + Same as #2605 but for 1.9 branch + +Build 1.8.9-11.15.1.1785: + elpatricimo: Allow players sized smaller than 1 block to walk into small spaces + +Build 1.9-12.16.0.1784-1.9: + LexManos: Rework DimensionManager for new DimensionType enum, replaces the old provider registry. Also fixed save folder issues with dimensions. Closes #2570 + +Build 1.8.9-11.15.1.1783: + CovertJaguar: Add missing Minecart/Track hook. + +Build 1.9-12.16.0.1782-1.9: + fry: Removed blockCenterToCorner from TRSRTransformation constructor. Closes #2461. + fry: Ignore blocks/items with null registry name during model loading. Fixes NPE during resource reloading in worlds with removed blocks/items. + fry: Made VertexBuffer.sortVertexData cleanup pointers after it's done. Closes #2528. + fry: Added default left hand transforms for forge transform strings. Closes #2615. + +Build 1.9-12.16.0.1781-1.9: + fry: Switched animation system to capabilities, added animated item example, fixed state passing in MultiModel. + fry: Separated model classes to client and common packages. + fry: instance -> INSTANCE + fry: Implemented slightly more generic version of UVLock, re-enabled it for json models. Closes #2607. + +Build 1.9-12.16.0.1780-1.9: + gigaherz: Fix a condition that caused the enchantment table to roll invalid enchantments. + +Build 1.9-12.16.0.1779-1.9: + blay09: + Fix KeyInputEvent only being fired if Keyboard.getEventKeyState() is false. + + It used to be called for both key-up and key-down states prior to 1.9, so I assume Vanilla's changes to F3 behavior broke the patch. + +Build 1.9-12.16.0.1778-1.9: + CovertJaguar: Fix #2601 Minecart infinite acceleration + +Build 1.8.9-11.15.1.1777: + cordonfreeman: Fix for patch targetting the wrong field to change for failed pathfinding penalty + +Build 1.9-12.16.0.1776-1.9: + diesieben07: Fix broken patch in EntityPlayer.updateRidden + +Build 1.9-12.16.0.1775-1.9: + iTitus: + Fix the EntityPlayer patch + + In 1.8.9 the call goes to getDisplayNameString() so that any changes from the PlayerEvent.NameFormat event are being take into account. + In this patch the call goes to func_70005_c_() which is the getter for the GameProfile name. + I changed it back. + + Sorry if you do not want to accept it because it is a one-liner. + vincent.lee: Fix #2555 + +Build 1.9-12.16.0.1774-1.9: + cordonfreeman: Fix for patch targetting the wrong field to change for failed pathfinding penalty + +Build 1.9-12.16.0.1773-1.9: + cpw: Fix bucket test + +Build 1.9-12.16.0.1772-1.9: + bernhard.bonigl: + Fix CombinedInvWrapper accessing incorrect slots + Closes #2533 + +Build 1.9-12.16.0.1771-1.9: + cpw: Ignore classes directory + +Build 1.9-12.16.0.1770-1.9: + fry: Fixed sprite not being passed to the quad builder for custom models. + +Build 1.9-12.16.0.1769-1.9: + fry: Fixed outline shader rendering, closes #2560. + +Build 1.9-12.16.0.1768-1.9: + fry: Fixed Block.doesSideBlockRendering, closes #2564. + +Build 1.9-12.16.0.1767-1.9: + fry: Fixed invalid index calculation in BakedQuadRetextured. + +Build 1.8.9-11.15.1.1765: + bernhard.bonigl: + Fix CombinedInvWrapper accessing incorrect slots + Closes #2533 + +Build 1.8.9-11.15.1.1764: + abab9579: + Added EntityViewRenderEvent#FOVModifier + + Enables mods to modify raw FOV directly. + Avoids modifier limit from FOVUpdateEvent. + Aware of blocks which are needed for fov change related with materials. + +Build 1.8.9-11.15.1.1763: + mnmiller1: Added local click position to PlayerInteractEvent. + +Build 1.8.9-11.15.1.1762: + LexManos: + Fixed dummy blocks not being removed from registry on dedicated server correctly. Closes #2487 + Also added some more debug logs! + +Build 1.8.9-11.15.1.1761: + bernhard.bonigl: + Fix WordServer.canCreatureTypeSpawnHere not using Forge Events. + Followup of #2496 + +Build 1.8.9-11.15.1.1760: + agent-lego: + Increased actual maximum fuel burn time + + Increased actual maximum fuel burn time from 32767 to 2147483647. + Backwards compatible. + +Build 1.8.9-11.15.1.1759: + bernhard.bonigl: Fix WorldEvent.PotentialSpawns Event passing the list instance of the ChunkProvider to users + +Build 1.8.9-11.15.1.1758: + fry: ModelLoader: added verbose error logging showing items/blockstates associated with model locations; removed redundant cast leftover from ungenerified code; fixed up a couple of warnings. + +Build 1.8.9-11.15.1.1757: + cpw: Fix race condition when using indexed codec in a LAN server. Fixes spurious crash when LAN server is running. + +Build 1.8.9-11.15.1.1756: + cpw: Log when it's likely the indexedcodec is gonna fail, because of LAN server derps likely. Try and give some context for debuggers. + +Build 1.8.9-11.15.1.1755: + bernhard.bonigl: Fix universal bucket logging an exception + +Build 1.8.9-11.15.1.1754: + AlgorithmX2: Preserve ItemStack Caps when picking Items up. + AlgorithmX2: Test getLightOpacity(world,pos) in World as well as the chunk. + +Build 1.8.9-11.15.1.1752: + AlgorithmX2: In material Liquid Hooks. + +Build 1.8.9-11.15.1.1751: + diesieben07: Fix Potion.shouldRenderInvText + +Build 1.8.9-11.15.1.1750: + AlgorithmX2: + Fix bug with getLightOpacity based on TileEntities, + Capture getLightOpacity prior to removing the tile entity. + +Build 1.8.9-11.15.1.1749: + LexManos: Fix loading of world ID maps for worlds without dummy data. Closes #2477 + +Build 1.8.9-11.15.1.1748: + bernhard.bonigl: Fix customized bucket names not getting translated correctly + +Build 1.8.9-11.15.1.1747: + fry: Added default levels for fluid extended properties in fluid model. + +Build 1.8.9-11.15.1.1746: + bernhard.bonigl: Add universal bucket + +Build 1.8.9-11.15.1.1745: + LexManos: Fix chat formatting not surviving line wraps in chat messages. + +Build 1.8.9-11.15.1.1744: + diesieben07: Fix the entity shader hook + +Build 1.8.9-11.15.1.1743: + iLexiconn: Added hook to add entity spectator shader + +Build 1.8.9-11.15.1.1742: + ross: Workaround JDK-8087309: Constant folding "static final boolean" in boolean expressions is incomplete + +Build 1.8.9-11.15.1.1741: + LexManos: Protect BlockSnapshot and Chunk.getTileEntity from mutible BlockPos instances. Closes #2438 + +Build 1.8.9-11.15.1.1740: + LexManos: Fixed invalid parameters being sent to LivingSpawnEvent.CheckSpawn. Closes #2453 + LexManos: Fixed Entity.shouldRiderSit modifying game logic and not just rendering. Closes #2402 + LexManos: Fixed Block/Item.setRegistryName printing a incorrect warning when used. Closes #2398 + LexManos: Fixed vanilla bug where network clients would see incorrect break progress on blocks. Closes #2462 + LexManos: Fixed implementation of RenderEntityItem.shouldSpreadItems. Closes #2448 + LexManos: Fixed invalid item being passed to gatherCapabilities when itemstacks changed item. Closes #2445 + LexManos: Add missing classes to CrashReport preloading. Closes #2421 + LexManos: Fixed Block.onNeighborChange not being called for all axises. Closes #2428 + +Build 1.8.9-11.15.1.1739: + LexManos: Potential fix for NPE when using an item to open a slotless inventory. Closes #1354 + +Build 1.8.9-11.15.1.1738: + fry: Fix custom model loader reload hook not firing during registration. + +Build 1.8.9-11.15.1.1737: + fry: Fix incorrectly updated patch to ChunkCache. Related to #2451. + +Build 1.8.9-11.15.1.1736: + fry: Fix multiple registrations of reloading hooks in custom model loaders. + +Build 1.8.9-11.15.1.1735: + LexManos: Fix jar signer not applying to universal packed in the installer. + LexManos: Remove Mojang logger spam in EntityItem. + +Build 1.8.9-11.15.1.1734: + fry: Fix TRSRTransformation.toItemTransform. Closes #2425. + +Build 1.8.9-11.15.1.1733: + paul.fulham0: Fix #2321 + +Build 1.8.9-11.15.1.1732: + Mumfrey: Fix ASM SignatureReader choking on lambda signatures generated by JDT + +Build 1.8.9-11.15.1.1731: + fry: Revert binary-incompatible changes in models. + +Build 1.8.9-11.15.1.1730: + fry: Fix droppers not dropping. + +Build 1.8.9-11.15.1.1729: + fry: Added "gui3d" and "smooth_lighting" options to the forge blockstate. Implemented them for vanilla and B3D models. Added generic types to IModel subinterfaces, to simplify chaining. + fry: One day I will learn to include all required classes in the commit. + +Build 1.8.9-11.15.1.1727: + matthewprenger: Log unknown exceptions in commands. Resolves #2433 + +Build 1.8.9-11.15.1.1726: + fry: Fixed incorrect patch to GenLayer, causing large vanilla biomes to not work properly. + +Build 1.8.9-11.15.1.1725: + fry: Provide original armor model in the custom armor model hook. + +Build 1.8.9-11.15.1.1724: + fry: Fixed small bug in item extraction code. + +Build 1.8.9-11.15.1.1723: + fry: Fix NoSuchElementException in ModelBlockAnimation caused by empty event list. + +Build 1.8.9-11.15.1.1722: + LexManos: Bump version in prep for new Recomended Build. + +Build 1.8.9-11.15.0.1721: + LexManos: Loosen TileEntity's default hasCapability implementation. Modders should specifically opt in. + +Build 1.8.9-11.15.0.1720: + vikestepftb: + Add EntityTravelToDimensionEvent + + Resolve Merge Conflict + + Move event call inside conditional + +Build 1.8.9-11.15.0.1719: + fry: Fixed minor race condition between mouse clicks and TESR in the animation example. + +Build 1.8.9-11.15.0.1718: + fry: + Model animation system. + Main things of interest: + * IAnimationStateMachine - state machine for animations; can load + from json. + * AnimationTESR - automatic TESR for animated models. + * AnimationModelBase - same for entities. + * ITimeValue - time-varying value, used to control animation + parameters from code. + + * TESRs can now be batched - look at TESR.renderTileEntityFast + + TE.hasFastRenderer. + * RegionRenderCache is not accessible to TESRs and other client-side + logic - MinecraftForgeClient.getRegionRenderCache. + fry: Sometimes I forget how much trivial things are missing from Java 6. + +Build 1.8.9-11.15.0.1716: + t.tomkins: Fixed: BlockPos passed to isBeaconBase + rwtema: + Add IItemHandler capability + + Add the actual patches that I forgot. + + Add simple implementations of IStorage and the factory methods. + + Add ItemStackHandler. A simple IItemHandler implementaton. + + return nulls, not throw nulls. + + Move the vanilla wrappers to a separate class for now. + + Minor clean ups of VanillaWrapper code. + + Inline static methods. + + Add comments. + + Minor cleanup of code. + + Remove redundant size field and add a validate slot index method. + + Minor formatting issues. + + Break early If stacksize to insert is 0. + + Remove setByte() methods. + + Throw exception if IItemHandler can't be modifyed in NBT loading. + + Replace event handler with patches + + Add capability to mine cart inventory entities. + + Change formatting and registration of capability. + + Make InventoryPlayer implements IItemHandler because why not. Also added a field to allow mods that add additional player inventory space to publicly expose them. + + Reduce patch sizes + + Lazy initialization of the item handler for vanilla tiles. + + Minor formatting changes. + + Create a single vanilla chest item handler that will merge with adjacent chests when detected. Added hooks to reset the cached adjacent value when a block update is detected and when a chunk loads. + + Revert "Make InventoryPlayer implements IItemHandler because why not. Also added a field to allow mods that add additional player inventory space to publicly expose them." + + This reverts commit 306d4a37fd0e8c8a0754411c013b750dfe8e2c87. + + Fix furnace derp + + Replace double chest code with a simpler method. + + Vanilla wrappers implement IItemHandlerModifiable (since they are modifiable) + + Minor code cleanups + + Add an onContentsChanged() and onLoad() callback methods.to the default implementation. + + Add slot as a parameter in the callback method. + + Change IItemHandlerModifiable.setStackInSlot() to void, and added a note about not being intended for cross-mod use. + + Improve ItemStackHandler handling of errored NBT. + + Make the stacks array protected. + + Fix a lot of derps in SlotItemHandler. + + Fix derp in ItemStackHandler + + Clarify comments on IItemHandler + + ItemStackHandler no longer caches the stack array in local variable. + + Clean up the Chests code to make intentions clearer + + Vanilla hoppers have their cooldown activated when an item is inserted. Made this behavior part of an item handler (rather than the insertion code) + + Fix mistake in ItemStackHandler + + More documentation of potential edge cases in getStackInSlot() + + Make limit checking more resiliant. + LexManos: Fix J6 compile error in IItemHandler PR. + +Build 1.8.9-11.15.0.1715: + blay09: Fix items being dropped out of a GuiContainer when dealing with a slot outside of the xSize/ySize boundaries. + +Build 1.8.9-11.15.0.1714: + asiekierka: Fix #2388 + +Build 1.8.9-11.15.0.1713: + LexManos: Fix invalid ServerHangWatchdog patch causing it to not apply. + LexManos: + Restore OreDictionary.getOres(String, boolean) and doeOreNameExist(String) functions that went MIA in git merge issue. + Original Commit: https://github.com/MinecraftForge/MinecraftForge/commit/cd3bbfb02c9fcd4ce4bbf00f460dfdd6a386d107 + +Build 1.8.9-11.15.0.1712: + minecrell: Strip console formatting codes for Vanilla log file + +Build 1.8.9-11.15.0.1711: + iLexiconn: + Fixed makeItemStack ignoring stackSize + + Fixes #2376 + +Build 1.8.9-11.15.0.1710: + fry: Fixed error detection login in ModelLoader, reduced the maximum number of printed stack traces to 5 per domain. + +Build 1.8.9-11.15.0.1709: + LexManos: Fix Deobfusication transformer throwing verification errores in Eclipse development environments. + LexManos: Fix forge logging not working correctly in ForgeDev. + +Build 1.8.9-11.15.0.1708: + fry: Correctly handle error caused by missing/malformed bucket model definition file. + +Build 1.8.9-11.15.0.1707: + LexManos: Call deserialze on capabilities in ItemStack.setItem. Closes #2384 + +Build 1.8.9-11.15.0.1706: + LexManos: Fix ItemStacks not getting the parent capability provider from items. Closes #2383 + +Build 1.8.9-11.15.0.1705: + bartek.bok: Allow sleeping without bed + kashike: Skip hang detection on first run of the server hang watchdog + +Build 1.8.9-11.15.0.1703: + fry: Fixed missing model error reporting, made block and item variants sort before loading, to make the splash screen info more useful. + +Build 1.8.9-11.15.0.1702: + cpw: Fix spruce not growing properly + +Build 1.8.9-11.15.0.1701: + cpw: Fixed problem with LAN connections seeing the original ProxyPacket and consuming the first byte. Closes #2373 + +Build 1.8.9-11.15.0.1700: + cpw: Fix shouldRefresh not to be so over-eager about modded TEs. Should fix Packet21 causing a TE reset. + +Build 1.8.9-11.15.0.1699: + LexManos: Clone FML packet indexes if channel is not open. Fixes potential threading issue. + +Build 1.8.9-11.15.0.1698: + bernhard.bonigl: + Default bucket model is empty, allow bucket model without fluid. + This allows capsules, cans, bottles,... to use the same item model for their item variant. Also it's makes much more sense. + +Build 1.8.9-11.15.0.1697: + mezz: Add GuiScreenEvent.BackgroundDrawnEvent + +Build 1.8.9-11.15.0.1696: + cpw: + Fix problem which meant runtime deobf to MCP names wasn't working. SRG named mods located in the mods dir of a dev + environment will now load normally. + +Build 1.8.9-11.15.0.1695: + LexManos: + New Capability system allowing for more manageable world object features. + + When combined with @Optional this should address all issues of soft dependancy on mods/apis. + This also addresses the issue of dynamic functionality in TileEntities/Entities. + + Current capability providers: TileEntity, Entity, ItemStack + + Also added INBTSerializeable, a generic interface for game objects that can be written to/from NBT tags. + + Vanilla capabilities will be coming soon, mostly on request and review. + So start requesting capabiliteis on vanilla/Forge features. + +Build 1.8.9-11.15.0.1694: + LexManos: Fixed GuiWrongMinecraft having wrong Log file name. Closes #2348 + LexManos: Fix jline server console not showing colored text. Closes #2334 + LexManos: Fixed banners not droping the correct item when harvested using modded mechanics. Closes #2258 + +Build 1.8.9-11.15.0.1693: + LexManos: Remove dead code in JarDiscoverer. Closes #2346 + LexManos: Made WrongMinecraftVersionException and ModSortingException a bit easier to read in log files. Closes: #2345 + +Build 1.8.9-11.15.0.1692: + fry: Catch GROUND item transform type with the forge hook too. + +Build 1.8.9-11.15.0.1691: + fry: Implemented face culling for item models, improves performance slightly. Closes #2326 + +Build 1.8.9-11.15.0.1690: + vincent.lee: + Fix visual effect entity persisting longer than it should + + Fix derp + +Build 1.8.9-11.15.0.1689: + LexManos: Fixed issue with WorldServer.getTileEntities when being called with ranges that overlap chunks oddly. Closes #2350 + +Build 1.8.9-11.15.0.1688: + fry: Made block model loading bar more robust, and fixed the count. + +Build 1.8.9-11.15.0.1687: + fry: Added progress bar for the ModelLoader. + +Build 1.8.9-11.15.0.1686: + fry: Model loader improvements: adding custom data/textures to models that don't need them doesn't cause a error now, since it's common to put those in the defaults section of the blockstate json; you can get IModel associated with the variant now - using ModelLoaderRegistry.getModel; MultiLayerModel should now respect transformations applied to it, and respect part transformations. + fry: Derp. + +Build 1.8.9-11.15.0.1684: + cpw: STFU I know how to code. *shouts* get off my lawn! + +Build 1.8.9-11.15.0.1683: + cpw: Make the parent dir tree for the dep extractor + +Build 1.8.9-11.15.0.1682: + fry: Changed default implementation of Block.getExtendedState. Closes #2309. + +Build 1.8.9-11.15.0.1681: + fry: Fixed perspective transformation handling for fluid models, changed inventory fluid model to use unrotated still texture. + fry: Don't crash on exception during loading of item variants from blockstate jsons. + fry: Fixed implementation if IRetexturableModel in ItemLayerModel. Closes #2244. + fry: Java6 + Eclipse + Gradle strike again. + +Build 1.8.9-11.15.0.1677: + fry: Fixed invalid flow vector caching of still fluids. + +Build 1.8.9-11.15.0.1676: + fry: Fixed random offset not working properly for flatly-lit models. + +Build 1.8.9-11.15.0.1675: + cpw: Explicitly close the file. + +Build 1.8.9-11.15.0.1674: + cpw: + Add a simple ContainedDep mechanic- mods can contain other mods or libs, and can specify them using a manifest tag: "ContainedDeps". + This is a space separated (manifest standard) list of jar files that are to be extracted into the version specific directory. + + There's also a special system property "fml.skipContainedDeps" that will allow for runtime skipping of extraction of contained deps (a comma separated list, based on the file name). + +Build 1.8.9-11.15.0.1673: + LexManos: + Added new get/setRegistryName functions to Item and Block. + And helper functions in GameRegistry to allow for registering using those names automatically. + This is to simplify registration and get rid of the horrible hacks users are doing now with 'unlocalised names'. + +Build 1.8.9-11.15.0.1672: + cpw: Move substitution activation after id loading. This should fix the problem of null for existing object. + +Build 1.8.9-11.15.0.1671: + fry: SidedProxy now has sensible default values - nested ClientProxy and ServerProxy classes. + +Build 1.8.9-11.15.0.1670: + mattmess1221: Add links for messages and other commands + +Build 1.8.9-11.15.0.1669: + fry: Reverted Render registration changes due to them working. + +Build 1.8.9-11.15.0.1668: + fry: Fixed RenderingRegistry not working. Closes #2312. + fry: Nobody is left behind. + +Build 1.8.9-11.15.0.1666: + cpw: Fix that the dummy registry entries don't allow clients connecting to servers. Also fix that it repeatedly nags about missing stuff in the world. + +Build 1.8.9-11.15.0.1665: + LexManos: Fix boss health bar rendering when debug overlay is enabled. Closes #2328 + +Build 1.8.9-11.15.0.1664: + LexManos: Allow for default 1.8.8 mods to be loaded. Should be SRG compatible. + LexManos: Fix J6 compile issue with ModelFluid. + LexManos: Swap Mod and Realms button to fix new realms 'notification' icon. + +Build 1.8.9-11.15.0.1663: + fry: Restored transparency to the Forge logo. + +Build 1.8.9-11.15.0.1662: + fry: Updated the forge logo to a higher-quality GIF file. Closes #2276. + +Build 1.8.9-11.15.0.1661: + fry: Fixed broken leaky caching of OBJ models. + fry: Fixed wrong import. + +Build 1.8.9-11.15.0.1659: + fry: Caching of fluid models. Fixes #2145. + +Build 1.8.9-11.15.0.1658: + fry: TESRs registering in preinit don't break pistons anymore. Fixes #2298. + +Build 1.8.9-11.15.0.1657: + fry: Fixed color disabling not working for forge pipeline. Closes #2286. + +Build 1.8.9-11.15.0.1656: + fry: 1.8.9 update + +Build 1.8.8-11.15.0.1655: + mezz: Allow server to access Potion isBadEffect() + cpw: 1.8.8 initial work + cpw: regenerate reference patchset at patches.mcp. These will be used to generate a new patchtree under patches. + cpw: Test of mcp patching + cpw: + Patches and rejected patches. Note: some which had imports are not listed here because they need + to be refactored not to have imports. + Progress: https://gist.github.com/cpw/29695e426e2b122cf8ff + fry: Updated various rendering-related patches and classes to 1.8.8; forge still uses vecmath. + fry: Fix generics and error in the BlockState patch. + fry: FontRenderer + Item patch update; WorldVertexBufferUploader patch derp fix. + fry: IntegratedServer, World, EnumChatFormatting and EnumFacing + fry: WorldProvider, WorldType, WorldServer, WorldServerMulti + fry: EntityAIAttackOnCollide, ServerStatusResponse, MinecraftServer, NetHandlerLoginServer, Vec3, BiomeGenBase, AnvilChunkLoader, ChunkProviderServer, MapGenRavine, MinecraftServer updated; fix in Block, GuiIngameForge; can load the world and play with ~20 more manual error fixes. + fry: BlockOre, BlockRotatedPillar, SoundManager, EntityPlayerSP, GuiScreen, GuiAchievements, GuiContainer, BlockModelRenderer, ContainerEnchantment, Slot updated manually and imports removed; GitSlot patch updated. + cpw: Delete rejects that I initially processed. + cpw: + LoadingScreenRenderer,Minecraft,GuiContainerCreative,PlayerControllerMP,LanguageManager,Locale,SimpleReloadableResourceManager,EntityList,EntityLivingBase,EntityWither,EntityMinecart,EntityPlayerMP + + NethanlderPlayClient patch is now in vanilla. The FMLCommonHandler future exception catcher is not needed anymore, it's in Util. The caching of player profiles is now in vanilla (SkinManager). + fry: Updated FML Gui methods to WorldRenderer API changes. + fry: EntityPlayer patch updated. + fry: GuiButton, GuiChat, GuiCreateWorld, GuiIngameMenu, ServerListEntryNormal, GuiStats rejects updated. + fry: RenderEntityItem, RenderPlayer, RendererLivingEntity, LayerArmorBase, ItemStack rejects fixed; changed Armor Layer hook to catch LayerBipedArmor only. + fry: ItemRenderer, RenderGlobal, StateMap, RenderItem rejects updated. + fry: TileEntity and TileEntityHopper rejects fixed, GuiOverlayDebug patch fixed. + fry: PlayerManager, PlayerProfileCache, ServerConfigurationManager, NetHandlerHandshakeTCP rejects fixed; ItemInWorldManager patch error fixed. + fry: ItemBlock, ItemBow, ItemMonsterPlacer, ItemReed, ItemSign rejects fixed. + fry: Manually updated WorldChunkManager, Chunk and BiomeDecorator patches, removed imports. + fry: TextureMap, TextureManager and Stitcher rejects fixed. + fry: EntityRenderer, StringTranslate rejects fixed. + fry: Overlay patch fix: use the correct block position. + cpw: + Enchantment,EnchantmentHelper,EntityEnderman,EntityZombie,EntityVillager,FurnaceRecipes,RecipeFireworks,RecipeRepairItem,NetworkSystem,S00PacketServerInfo + PotionEffect,StatList,Session,WeightedRandomChestContent,Explosion,ExtendedBlockStorage,SaveHandler. + + All NBT patches seem to have been merged upstream, so removing. The IntegratedServer and MinecraftServer pending queue changes also removed, as fixed upstream. + cpw: WorldGen rejects, lots of them. Couple of small fixes elsewhere. + cpw: Fix a newly missing AT. Remove all CL_ references. OBFID is gone. + cpw: All the patches done? Some code fixups.. It begins. + cpw: A few tweaks, things are starting to work now.. + fry: Model stuff: updated to generics, fixed various warnings, added handling of new perspective types. + cpw: Some generic and other warning cleanups + fry: ExtendedBlockState, Properties generic updates. + cpw: Remove a suppression + cpw: This should be everything needed to separate blocks and items completely. + fry: Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). + kashike: Use the FMLSecurityManager checkPermission(Permission) method for context-based permission checks. Fixes #2067 + fry: B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. + fry: Fix holes in generated item models. + fry: Removed face doubles from item models. + minecrell: Add jline-based console with colors and tab-completion + cpw: Fix a typesig that was broken + cpw: Re-add trove and vecmath. Mojang no longer ship them. + cpw: Use the 2.1 snapshot for FG + fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. + cpw: Back to srgnames for patches. We should be starting to look OK now. + cpw: Small tweak to the OUT/ERR logger - should skip the Throwable stuffs now. + cpw: + Fix weird patch issue where the this FG commit: https://github.com/MinecraftForge/ForgeGradle/commit/2f0ca9921b961133689d29b807333241010a802d + breaks if the exact end of a line is a srgname. Not ideal, but should work. + cpw: Fix derpy fir trees in the taiga. So many patches. See if we can find any more mistakes?! + fry: Fixed NPE is B3D loader caused by the missing vertex normal; updated the example chest model - it's now has 2 meshes; Updated ModelAnimationDebug - it now uses the new chest model, renders the base with the static world renderer, and only the lid with the TESR. + cpw: Update mappings to 20151122. + LexManos: Update universal manifest for 1.8.8's json. + cpw: Cleanup Fluid deprecations stuff. + cpw: + OMG! Documentation? WUT? I haz lost my mind. + Also, Functional interface for IMC. Senders can send a classname implementing Guava's function, and receivers + will be able to get that function, and do, well, whatever, really. Probably best for those callback type + scenarios, connecting up APIs and stuffs. + cpw: Fix MDK for 1.8.8 using FG2.1 snapshot + cpw: Yeah, amount is NOT deprecated. + cpw: ONE EVENT BUS TO RULE THEM ALL AND IN THE DARKNESS FIRE THEM! + cpw: Deprecate it as well, because hey, it's redundant now. + cpw: Clean up some very long dead code. Bukkit hasn't existed in a very long time now. IASM never worked, and I'm not about to implement it. + cpw: Cleaning up some derpy names + cpw: More cleanups, some documentation, a bunch of deprecations. + lordillyohs: + Remove trailing */ in the build.gradle + + Signed-off-by: Anthony Anderson + cpw: Fix button and lever placement problem. Closes #2204 + cpw: Fix up a couple of patches, affected by the recent update + cpw: + Add .exc for StatList patch + + More tweaking + lumien231: Fixed: The Integrated Server not being stopped when exiting a singleplayer world to the main menu + cpw: Propogate AbortException. Closes #2206. Also fix tracing printstream when printStackTrace is called. + LexManos: Bump version for new Minecraft version. + LexManos: Fixed placing blocks on snow layers with more then one layer. + LexManos: Fixed Large mushrooms generating incorrectly. + LexManos: Removed IItemRenderer class, all functionality is possible with new rendering system. + LexManos: Compiler warnings pass, undeprecated SplashProgress related stuff. + cpw: Giant registry fixup + LexManos: Add chunk loading protection to WorldSever.getTileEntitiesIn, may prevent orphanced chunks and a CME in EntityPlayerMP. Note: The 'max' parameters are NON-inclusive. + cpw: Fix up blockstate rebuild. Closes #2221. Also fix formatting. IDEA has differences. Solved now. + bernhard.bonigl: Add a PotionRegistry to handle dynamic distribution and remapping of Potion IDs + cpw: Fix problem with spam from registry on loading a second world. Empty the staging. + cpw: Some tweaks - GameRegistry is modder facing API, so avoid having MC methods there. Fix a couple of registry bugs. + cpw: Fixup Jline integration + cpw: A few fixes + cpw: Allow entity selectors to select "." in entity names. Closes #2125 + cpw: Be noisy when API is in a coremod. It'll never work and modders should realize that fact. + cpw: + Fix language adapter loading. + + The language adapter is now properly picked up after the mod is loaded + on the classpath, fixing the ClassNotFoundException occurring before. + Also fixed some minor formatting and made it throw a full + RuntimeException on failure. + + Fix up some formatting + cpw: Most requested feature of all time? TileEntity init method called after it's ready to roll. remove all the if (firstTicks) + mark.a.woodman: + Initialize sources list + + Fixes crash NPE thrown by addFile() + cpw: Clean up chunk patch. + liach: Fix typo in `guava` + cpw: Add a flag to the modidremapping event. If the remapevent is because the registry is refreezing, it'll be true. + minecrell: + Improve the console command completer + + - Fix space after command getting removed when completing a + subcommand together with the command prefix + - Add support for completing without input (shows command list) + - Sort command completion results + - Fix console spamming command prefixes after closing the input stream + bernhard.bonigl: Add shouldRender() to Potions that allows to hide them completely in the inventory + LexManos: Remove MCP reference patches. + LexManos: Fixed colored leather armor, and custom armor textures. + fry: Fixed orientations of generated item faces. Fixes #2215. + fry: Workaround for https://github.com/google/guava/issues/738 + bx9j52xd: Fixed that oldLight is not being used. + LexManos: Fixed ModList GUI rendering incorrectly. Closes #2254 + LexManos: Add EMERALD and SILVERFISH to GenerateMinable event. Closes #1158 + LexManos: Deprecate int IDs in FluidRegistry. Modders should only ever use the String name. Also add a 'friendly' exception when attempting to get an ID for a unregistered fluid. Closes #1374 + LexManos: Fix wrong EventType passed for Emerald ore-gen. + AlgorithmX2: + Added doesSideBlockRendering to provide finer grain face culling. + Implemented for BlockStairs and BlockSlab. + cpw: Use ItemStack.hasEffect. closes #2230 + minzmann: Update PotionEffect.java.patch + cpw: Fix derpage when loading a 1.8 world, with persistent state being entirely ignored in that case. + AlgorithmX2: Add getHighlightTip allowing a item to override its displayed renderToolHightlight. + cpw: + A test for issue #1848. Please try this with any mods you can @ 1.8.8, and see if you still get log spam of any kind (not just the + log message from the issue either). + AlgorithmX2: Added addLandingEffects allowing mods to override landing particles, for blocks that require world information to determine textures. + LexManos: Fix enchanting applying the same enchantment multiple times. Closes #2273 + fry: + Preparations for the Animation system. + Changes to the Model API - IModelState now works with Optional. Handling of parts of the model is not optional, and coordinate space/result interpretation is up to the caller. IModel doesn't extend IModelPart by default anymore; MapModelState uses composition to achieve previous functionality, IModelPart implementations are disjoint now. Updated perspective handing to the new API, removed IPerspectiveState (MapModelState is now the same thing). Perspective transforms for the default fluid model. + fry: IModel can now depend on a variant definition (ModelResourceLocation); added MultiLayerModel - simple model that'll render correctly in multiple layers + example of using it. + fry: Fixed java6 errors in previous commit. + fry: Forge pipeline will now take original model lightmap into account, if present. + fry: Delayed quad list resolution in MultiModel, fixes NPE in MultiLayerModel. + fry: LightUtil.pack and .unpack now work correctly with unpacked arrays of size <4. + fry: Fix dependency resolution for models with custom data/textures. + jadran.kotnik: Fix client side commands adding parts of the color codes on autocomplete (prefix "7" and suffix "r"). + fry: Fixed NPE caused by accessing undefined layer in MultiLayerModel. + bernhard.bonigl: + Add a dynamic bucket model that displays the animated liquid contained + Has a config option (default off) that replaces the vanilla buckets with the forge bucket model + + New original bucket textures from mr_hazard + LexManos: + Fixed registry issues that prevented connecting to 1.8 Forge servers. + More precisely: Servers with missing registries default back to frozen version. + Throw descriptive error if we do not have any information. + LexManos: Fixed vanilla bug related to spawning entities on top of fences. Closes #2303 + cpw: Fix the channel handler naming. It now uses the standard netty namer for it, by careful use of cunning reflection. + cpw: Fix up persistent substitution. Should close #2259 + cpw: + Blocks are no longer erased from the registry if the mod isn't present. This means that modded blocks can potentially retain their IDs + even if they are temporarily not present in the game. Currently TileEntity data associated with the block is erased. + cpw: Try and fix registry NPE when substitution is active. + cpw: Capture ItemBlock remaps. + cpw: Actually use the delegate for the itemblock + cpw: Try and make sure active substitutions are immediately available in the block to item map. + fry: Added an ability to register custom item variants, not ending with "#inventory". Should allow grouping multiple item models into 1 blockstate json. + fry: Fixed random block position offset not applying correctly. + LexManos: Fix Button/Torch/Lever placement on stairs and slabs. Closes #2291 + diesieben07: Allow forge-type spawn-eggs to spawn child entities when clicking EntityAgeable + bernhard.bonigl: Add a hook for custom particle spawning for slimes + bernhard.bonigl: + Fix bucket replacement not loading the bucket model by itself if replacing buckets. + This happens when no other mod that uses the bucket model is present. + Also added a simple method for registering the bucket model, should give + modders an idea on how to use the general model. + +Build 1.8.8-11.15.0.1654-1.8.8: + bernhard.bonigl: + Fix bucket replacement not loading the bucket model by itself if replacing buckets. + This happens when no other mod that uses the bucket model is present. + Also added a simple method for registering the bucket model, should give + modders an idea on how to use the general model. + +Build 1.8.8-11.15.0.1653-1.8.8: + bernhard.bonigl: Add a hook for custom particle spawning for slimes + +Build 1.8.8-11.15.0.1652-1.8.8: + diesieben07: Allow forge-type spawn-eggs to spawn child entities when clicking EntityAgeable + +Build 1.8.8-11.15.0.1651-1.8.8: + LexManos: Fix Button/Torch/Lever placement on stairs and slabs. Closes #2291 + +Build 1.8.8-11.15.0.1650-1.8.8: + fry: Fixed random block position offset not applying correctly. + +Build 1.8.8-11.15.0.1649-1.8.8: + fry: Added an ability to register custom item variants, not ending with "#inventory". Should allow grouping multiple item models into 1 blockstate json. + +Build 1.8.8-11.15.0.1647-1.8.8: + cpw: Try and make sure active substitutions are immediately available in the block to item map. + +Build 1.8.8-11.15.0.1646-1.8.8: + cpw: Actually use the delegate for the itemblock + +Build 1.8.8-11.15.0.1645-1.8.8: + cpw: Capture ItemBlock remaps. + +Build 1.8.8-11.15.0.1644-1.8.8: + cpw: Try and fix registry NPE when substitution is active. + +Build 1.8.8-11.15.0.1643-1.8.8: + cpw: + Blocks are no longer erased from the registry if the mod isn't present. This means that modded blocks can potentially retain their IDs + even if they are temporarily not present in the game. Currently TileEntity data associated with the block is erased. + +Build 1.8.8-11.15.0.1642-1.8.8: + cpw: Fix up persistent substitution. Should close #2259 + +Build 1.8.8-11.15.0.1641-1.8.8: + cpw: Fix the channel handler naming. It now uses the standard netty namer for it, by careful use of cunning reflection. + +Build 1.8.8-11.15.0.1640-1.8.8: + LexManos: Fixed vanilla bug related to spawning entities on top of fences. Closes #2303 + +Build 1.8.8-11.15.0.1639-1.8.8: + LexManos: + Fixed registry issues that prevented connecting to 1.8 Forge servers. + More precisely: Servers with missing registries default back to frozen version. + Throw descriptive error if we do not have any information. + +Build 1.8.8-11.15.0.1638-1.8.8: + bernhard.bonigl: + Add a dynamic bucket model that displays the animated liquid contained + Has a config option (default off) that replaces the vanilla buckets with the forge bucket model + + New original bucket textures from mr_hazard + +Build 1.8.8-11.15.0.1637-1.8.8: + fry: Fixed NPE caused by accessing undefined layer in MultiLayerModel. + +Build 1.8.8-11.15.0.1636-1.8.8: + jadran.kotnik: Fix client side commands adding parts of the color codes on autocomplete (prefix "7" and suffix "r"). + +Build 1.8.8-11.15.0.1635-1.8.8: + fry: Fix dependency resolution for models with custom data/textures. + +Build 1.8.8-11.15.0.1634-1.8.8: + fry: LightUtil.pack and .unpack now work correctly with unpacked arrays of size <4. + +Build 1.8.8-11.15.0.1633-1.8.8: + fry: Delayed quad list resolution in MultiModel, fixes NPE in MultiLayerModel. + +Build 1.8.8-11.15.0.1632-1.8.8: + fry: IModel can now depend on a variant definition (ModelResourceLocation); added MultiLayerModel - simple model that'll render correctly in multiple layers + example of using it. + fry: Fixed java6 errors in previous commit. + fry: Forge pipeline will now take original model lightmap into account, if present. + +Build 1.8.8-11.15.0.1630-1.8.8: + LexManos: Fix enchanting applying the same enchantment multiple times. Closes #2273 + fry: + Preparations for the Animation system. + Changes to the Model API - IModelState now works with Optional. Handling of parts of the model is not optional, and coordinate space/result interpretation is up to the caller. IModel doesn't extend IModelPart by default anymore; MapModelState uses composition to achieve previous functionality, IModelPart implementations are disjoint now. Updated perspective handing to the new API, removed IPerspectiveState (MapModelState is now the same thing). Perspective transforms for the default fluid model. + +Build 1.8.8-11.15.0.1628-1.8.8: + AlgorithmX2: Added addLandingEffects allowing mods to override landing particles, for blocks that require world information to determine textures. + +Build 1.8.8-11.15.0.1627-1.8.8: + AlgorithmX2: Add getHighlightTip allowing a item to override its displayed renderToolHightlight. + +Build 1.8.8-11.15.0.1626-1.8.8: + cpw: + A test for issue #1848. Please try this with any mods you can @ 1.8.8, and see if you still get log spam of any kind (not just the + log message from the issue either). + +Build 1.8.8-11.15.0.1625-1.8.8: + minzmann: Update PotionEffect.java.patch + +Build 1.8.8-11.15.0.1624-1.8.8: + cpw: Fix derpage when loading a 1.8 world, with persistent state being entirely ignored in that case. + +Build 1.8.8-11.15.0.1623-1.8.8: + bernhard.bonigl: Add shouldRender() to Potions that allows to hide them completely in the inventory + +Build 1.8.8-11.15.0.1622-1.8.8: + minecrell: + Improve the console command completer + + - Fix space after command getting removed when completing a + subcommand together with the command prefix + - Add support for completing without input (shows command list) + - Sort command completion results + - Fix console spamming command prefixes after closing the input stream + +Build 1.8.8-11.15.0.1621-1.8.8: + cpw: Use ItemStack.hasEffect. closes #2230 + +Build 1.8.8-11.15.0.1620-1.8.8: + liach: Fix typo in `guava` + +Build 1.8.8-11.15.0.1619-1.8.8: + AlgorithmX2: + Added doesSideBlockRendering to provide finer grain face culling. + Implemented for BlockStairs and BlockSlab. + +Build 1.8.8-11.15.0.1618-1.8.8: + LexManos: Fix wrong EventType passed for Emerald ore-gen. + +Build 1.8.8-11.15.0.1617-1.8.8: + LexManos: Deprecate int IDs in FluidRegistry. Modders should only ever use the String name. Also add a 'friendly' exception when attempting to get an ID for a unregistered fluid. Closes #1374 + +Build 1.8.8-11.15.0.1616-1.8.8: + LexManos: Add EMERALD and SILVERFISH to GenerateMinable event. Closes #1158 + +Build 1.8.8-11.15.0.1615-1.8.8: + LexManos: Fixed ModList GUI rendering incorrectly. Closes #2254 + +Build 1.7.10-10.13.4.1614-1.7.10: + LexManos: Fix dispensers equipping armor on players in the wrong slot Closes #1649 + +Build 1.8.8-11.15.0.1613-1.8.8: + bx9j52xd: Fixed that oldLight is not being used. + +Build 1.8.8-11.15.0.1612-1.8.8: + fry: Workaround for https://github.com/google/guava/issues/738 + +Build 1.8.8-11.15.0.1611-1.8.8: + fry: Fixed orientations of generated item faces. Fixes #2215. + +Build 1.8.8-11.15.0.1610-1.8.8: + LexManos: Remove MCP reference patches. + LexManos: Fixed colored leather armor, and custom armor textures. + +Build 1.8.8-11.15.0.1609-1.8.8: + cpw: Add a flag to the modidremapping event. If the remapevent is because the registry is refreezing, it'll be true. + +Build 1.8.8-11.15.0.1608-1.8.8: + cpw: Clean up chunk patch. + +Build 1.8.8-11.15.0.1607-1.8.8: + mark.a.woodman: + Initialize sources list + + Fixes crash NPE thrown by addFile() + +Build 1.8.8-11.15.0.1606-1.8.8: + cpw: Most requested feature of all time? TileEntity init method called after it's ready to roll. remove all the if (firstTicks) + +Build 1.8.8-11.15.0.1605-1.8.8: + cpw: + Fix language adapter loading. + + The language adapter is now properly picked up after the mod is loaded + on the classpath, fixing the ClassNotFoundException occurring before. + Also fixed some minor formatting and made it throw a full + RuntimeException on failure. + + Fix up some formatting + +Build 1.8.8-11.15.0.1604-1.8.8: + cpw: Be noisy when API is in a coremod. It'll never work and modders should realize that fact. + +Build 1.8.8-11.15.0.1603-1.8.8: + mezz: Allow server to access Potion isBadEffect() + +Build 1.8.8-11.15.0.1602-1.8.8: + kashike: Use the FMLSecurityManager checkPermission(Permission) method for context-based permission checks. Fixes #2067 + +Build 1.8.8-11.15.0.1601-1.8.8: + cpw: Allow entity selectors to select "." in entity names. Closes #2125 + +Build 1.8.8-11.15.0.1600-1.8.8: + minecrell: Add jline-based console with colors and tab-completion + bernhard.bonigl: Add a PotionRegistry to handle dynamic distribution and remapping of Potion IDs + cpw: Some tweaks - GameRegistry is modder facing API, so avoid having MC methods there. Fix a couple of registry bugs. + cpw: Fixup Jline integration + cpw: A few fixes + +Build 1.8.8-11.15.0.1596-1.8.8: + cpw: Fix problem with spam from registry on loading a second world. Empty the staging. + +Build 1.8.8-11.15.0.1595-1.8.8: + lumien231: Fixed: The Integrated Server not being stopped when exiting a singleplayer world to the main menu + +Build 1.8.8-11.15.0.1594-1.8.8: + LexManos: Add chunk loading protection to WorldSever.getTileEntitiesIn, may prevent orphanced chunks and a CME in EntityPlayerMP. Note: The 'max' parameters are NON-inclusive. + cpw: Fix up blockstate rebuild. Closes #2221. Also fix formatting. IDEA has differences. Solved now. + +Build 1.8.8-11.15.0.1592-1.8.8: + cpw: Giant registry fixup + +Build 1.8.8-11.15.0.1591-1.8.8: + LexManos: Bump version for new Minecraft version. + LexManos: Fixed placing blocks on snow layers with more then one layer. + LexManos: Fixed Large mushrooms generating incorrectly. + LexManos: Removed IItemRenderer class, all functionality is possible with new rendering system. + LexManos: Compiler warnings pass, undeprecated SplashProgress related stuff. + +Build 1.8.8-11.14.4.1590-1.8.8: + cpw: Propogate AbortException. Closes #2206. Also fix tracing printstream when printStackTrace is called. + +Build 1.8.8-11.14.4.1589-1.8.8: + cpw: Fix up a couple of patches, affected by the recent update + cpw: + Add .exc for StatList patch + + More tweaking + +Build 1.8.8-11.14.4.1588-1.8.8: + cpw: Fix button and lever placement problem. Closes #2204 + +Build 1.8.8-11.14.4.1587-1.8.8: + lordillyohs: + Remove trailing */ in the build.gradle + + Signed-off-by: Anthony Anderson + +Build 1.8.8-11.14.4.1586-1.8.8: + cpw: Cleaning up some derpy names + cpw: More cleanups, some documentation, a bunch of deprecations. + +Build 1.8.8-11.14.4.1585-1.8.8: + cpw: Deprecate it as well, because hey, it's redundant now. + cpw: Clean up some very long dead code. Bukkit hasn't existed in a very long time now. IASM never worked, and I'm not about to implement it. + +Build 1.8.8-11.14.4.1584-1.8.8: + cpw: ONE EVENT BUS TO RULE THEM ALL AND IN THE DARKNESS FIRE THEM! + +Build 1.8.8-11.14.4.1583-1.8.8: + cpw: Fix MDK for 1.8.8 using FG2.1 snapshot + cpw: Yeah, amount is NOT deprecated. + +Build 1.8.8-11.14.4.1582-1.8.8: + cpw: + OMG! Documentation? WUT? I haz lost my mind. + Also, Functional interface for IMC. Senders can send a classname implementing Guava's function, and receivers + will be able to get that function, and do, well, whatever, really. Probably best for those callback type + scenarios, connecting up APIs and stuffs. + +Build 1.8.8-11.14.4.1581-1.8.8: + cpw: Cleanup Fluid deprecations stuff. + +Build 1.8.8-11.14.4.1580-1.8.8: + LexManos: Update universal manifest for 1.8.8's json. + +Build 1.8.8-11.14.4.1579-1.8.8: + fry: Fixed NPE is B3D loader caused by the missing vertex normal; updated the example chest model - it's now has 2 meshes; Updated ModelAnimationDebug - it now uses the new chest model, renders the base with the static world renderer, and only the lid with the TESR. + LexManos: Fix incorrect position passes to Block.getExplosionResistance from entities. + LexManos: Moved client side Block.onBlockDestroyed to after Item.onBlockDestroyed to match server order. + LexManos: Enable the normal ModList GUI in game. Use GL_SCISSOR to support the transparent in-game GUI. + Choonster.2010: BiomeManager: Fix off-by-one errors + LexManos: Fix bold font rendering, Unicode is 2x pixel density of normal. + LexManos: Fix invalid position passed to isAir/getLight in World.playAmbientSound + fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. + fry: Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). + fry: B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. + fry: Fix holes in generated item models. + fry: Removed face doubles from item models. + fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. + cpw: Update mappings to 20151122. + +Build 1.8-11.14.4.1577: + fry: Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). + fry: B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. + fry: Fix holes in generated item models. + fry: Removed face doubles from item models. + fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. + +Build 1.8.8-11.14.4.1576-1.8.8: + cpw: Fix derpy fir trees in the taiga. So many patches. See if we can find any more mistakes?! + +Build 1.8.8-11.14.4.1575-1.8.8: + cpw: Small tweak to the OUT/ERR logger - should skip the Throwable stuffs now. + cpw: + Fix weird patch issue where the this FG commit: https://github.com/MinecraftForge/ForgeGradle/commit/2f0ca9921b961133689d29b807333241010a802d + breaks if the exact end of a line is a srgname. Not ideal, but should work. + +Build 1.8-11.14.4.1572: + LexManos: Fix invalid position passed to isAir/getLight in World.playAmbientSound + +Build 1.8-11.14.4.1571: + Choonster.2010: BiomeManager: Fix off-by-one errors + +Build 1.8-11.14.4.1570: + LexManos: Fix bold font rendering, Unicode is 2x pixel density of normal. + +Build 1.8-11.14.4.1569: + LexManos: Enable the normal ModList GUI in game. Use GL_SCISSOR to support the transparent in-game GUI. + +Build 1.8-11.14.4.1568: + LexManos: Fix incorrect position passes to Block.getExplosionResistance from entities. + LexManos: Moved client side Block.onBlockDestroyed to after Item.onBlockDestroyed to match server order. + +Build 1.7.10-10.13.4.1566-1.7.10: + scott: Add an event hook to allow overriding of fuels recognized by vanilla fuel handling. + +Build 1.8-11.14.4.1565: + lumien231: Fix Client Login Issue when logging into a non existent dimension + +Build 1.7.10-10.13.4.1564-1.7.10: + LexManos: Fixed skulls not placing on fences like vanilla {Vanilla is buggy -.-} Closes #2185 + +Build 1.8-11.14.4.1563: + LexManos: Bump version for Recomended Build. + +Build 1.8-11.14.3.1562: + LexManos: + Merge pull request #2179 from arideus101/patch-1 + + Fixed issue where custom colored armor wouldn't be colored. (reverted from commit dee0b2084b519419bbf97d8ad177204830ea2b07) + +Build 1.8-11.14.3.1561: + jasondoyle528: Allows Custom Armor Coloring to be done easily + +Build 1.8-11.14.3.1560: + gabizou: + Fix a possible NPE when checking supertypes of interfaces. Closes #2176. + + Signed-off-by: Gabriel Harris-Rouquette + +Build 1.8-11.14.3.1559: + bjoern: + Fix possible crash in EventBus + + There is currently no way to check if an event handler has been registered or not. + But when trying to unregister a not-registered event handler, Minecraft crashes with a NullPointerException. + This is a simple fix to prevent such crashes. + cpw: Fix substitutions for recipes and oredict recipes. Should mean that substitutions start working properly. + cpw: + OreDictionary will warn if there's an invalid ore being registered now, rather than just + using -1 and doing weird things with the list as a result. + cpw: Two more corner cases in the oredictionary. Should work for all cases now. + cpw: + Fix firing the remap event. It always fires now, and additionally fires when the registry reverts to frozen. + Most mods refer to the gameregistry for ids they care about, so this shouldn't affect anything significantly, + but if your mod was dependent on their being content in the remap event, and only acting on that content, + empty content means it's "reverted to frozen" state - the state at the start of the game. + +Build 1.7.10-10.13.4.1558-1.7.10: + cpw: + Fix firing the remap event. It always fires now, and additionally fires when the registry reverts to frozen. + Most mods refer to the gameregistry for ids they care about, so this shouldn't affect anything significantly, + but if your mod was dependent on their being content in the remap event, and only acting on that content, + empty content means it's "reverted to frozen" state - the state at the start of the game. + +Build 1.7.10-10.13.4.1557-1.7.10: + cpw: Two more corner cases in the oredictionary. Should work for all cases now. + +Build 1.8-11.14.3.1556: + LexManos: Fixed Open url confirm screen not showing URL. + LexManos: Fixed Stronghold Library not having anything in it's chests. + +Build 1.8-11.14.3.1555: + diesieben07: Fix GameData.findBlock + +Build 1.8-11.14.3.1554: + fry: Fixed anaglyph transformation not being applied in the forge lighting fully. + +Build 1.8-11.14.3.1553: + fry: Provide ItemCameraTransforms for vanilla models when possible. + +Build 1.8-11.14.3.1552: + fry: OBJ loader: reworked texture resolution: keys now have to start with #, like every other model loader; models without explicit library now work, remapping is possible by using the key "#OBJModel.Default.Texture.Name"; in addition to remapping by material name, remapping by texture name works too, like in other model formats. + +Build 1.8-11.14.3.1551: + fry: Performace fix for item rendering. + +Build 1.8-11.14.3.1550: + Choonster.2010: + Fix texture error message for broken textures + + -- Fixes #2100 + -- Iterates over badTextureDomains instead of missingTextures.keySet() + as a domain can have broken textures without any missing textures + +Build 1.8-11.14.3.1549: + fry: Obj loader: fix vertices shared between faces having the same attributed (uvs/normals). + the.f1repl4ce: Fixed a bug that caused the config option name to overlap with the selectable values when using GuiConfigEntries.SelectValueEntry, fixes #2114 + fry: OBJ model: use original vertex material when defining face. + fry: Fixed block color multiplier not being cached properly in the forge renderer, performance improvement. + LexManos: Merge FML and Forge lang file, and update crowdin project. + LexManos: + Redesign the ModList GUI to use a scrolling list for the main body content. + Allowing for larger information to be displayed. + URLs are auto-detected and now clickable. + Mod Logos are now centered, it looks better. + LexManos: + Introduce a new centralized version checking system. + Using the @Mod annotation mods can opt-in to a centrally controlled update system. + This is PURELY a notification system and will NOT automatically download any updates. + The End User can control which mods check for updates and disabel the system entirely using the Forge Config and GUI. + Format for the json the URL must point to is described here: https://gist.github.com/LexManos/7aacb9aa991330523884 + +Build 1.8-11.14.3.1543: + fry: Fix color multiplier applied incorrectly for items. + fry: OBJ loader: fixed another whitespace-related issue; removed unused "modifyUVs" property for now; added the "flip-v" property to switch between OpenGL-style and DirextX-style model UVs; fixed normals - they are now correct in-world, still a bit strange for the items; fixed normals a little bit for B3D models too. + +Build 1.7.10-10.13.4.1541-1.7.10: + cpw: + OreDictionary will warn if there's an invalid ore being registered now, rather than just + using -1 and doing weird things with the list as a result. + +Build 1.7.10-10.13.4.1539-1.7.10: + diesieben07: Fix CME when entities are spawned from EntityJoinWorldEvent + bernhard.bonigl: Fix Potion IDs above 127 + Abrar Syed: Update FG version to 2.0.2 + fry: Changed how the forge lighting system handles holey models for opaque blocks; it now mimics vanilla behaviour, which allows light to pass through them. + fry: Fix for the previous commit - transparent blocks were handled improperly. + glstillman: OBJLoader: Quick bandages to support/fix the new way that face/vertex normals are calculated, a very quick bandage to patch TextureCoordinates for the time being, and the Parser now uses a Pattern to split strings on whitespace instead of only splitting on " ". + cpw: Fix substitutions for recipes and oredict recipes. Should mean that substitutions start working properly. + +Build 1.8-11.14.3.1532: + fry: Fixed normal calculation for vanilla models, fixed the grass darkening and simular issues. + fry: More lighting fixes, flat lighting now works correctly for grass and torches. + +Build 1.8-11.14.3.1530: + fry: Fixed piston rendering (WorldRenderer offset wasn't applied); fixed TESR being registered too early in one of the debug mods. + +Build 1.8-11.14.3.1529: + glstillman: Fixed a bug with item model loading that would occur if ModelBakery.addVariantName() was called with the same string location parameter for 2 different items, and the string pointed to a location that didn't exist, where ModelLoader.loadAnyModel() would substitute the blockdefinition in for the item model, but wouldn't remove the original input location from the loadingModels list, which would cause the location from the second call to throw an IllegalStateException even though that location now has a model. + fry: + Perspective awareness for vanilla and multi models, fixes #2148. + Improved error handling in MultiModel. + fry: Fixed generic bug in MultiModel + fry: Fixed AO being applied to OBJ model transparency, and OBJ loader trying to force the loading of the builtin white texture. + fry: Provide a IModel for "builtin/generated", fixes #2147 + fry: Fixed another generic issue in MultiModel. + +Build 1.8-11.14.3.1525: + fry: Small fix for reworked classic lighting + +Build 1.8-11.14.3.1524: + fry: Added OBJ loader for the ModelLoaderRegistry system. + +Build 1.8-11.14.3.1523: + fry: + Model pipeline system. + Should replace all ad-hoc quad generation methods in forge, and make IBakedModel -> WorldRenderer data transfer faster. Added IVertexConsumer + helper classes; lighting that works correctly for non-axis-aligned faces using the new infrastructure. Changed smooth lighting algorithm, now it should work correctly for everything. + New block lighter can be disabled in the forge config options. + fry: Added back in the lost class + +Build 1.8-11.14.3.1521: + simonbarnes1: + Add Guava and Apache to LaunchClassLoader exclusion list on server + + Move exclusions to common place. Less likely to get out of sync + +Build 1.8-11.14.3.1520: + bk1325: Add PlayerSetSpawnEvent + +Build 1.8-11.14.3.1519: + fry: '#' is now added automatically to the beginning of the texture names in B3D models, and the remapping is expected via the blockstate JSON, since it's more reasonable than adding it to the file name in the modelling program or matching the resource location with the filename. + +Build 1.8-11.14.3.1518: + fry: Fixes Attributes.transform affecting only 1 vertex. + +Build 1.7.10-10.13.4.1517-1.7.10: + bjoern: + Fix possible crash in EventBus + + There is currently no way to check if an event handler has been registered or not. + But when trying to unregister a not-registered event handler, Minecraft crashes with a NullPointerException. + This is a simple fix to prevent such crashes. + +Build 1.8-11.14.3.1516: + luacs1998: Fix a possible crash in EventBus + +Build 1.8-11.14.3.1515: + rubensworks: Fix dispenser action for modded spawn eggs + +Build 1.8-11.14.3.1514: + LexManos: Update Gradle wrapper to 2.7 + LexManos: Fix entity count being incorrect for spawning logic. Now filter out 'persistant' entities. + +Build 1.8-11.14.3.1513: + foka_12: Disallow conflicting furnace recipes + +Build 1.8-11.14.3.1512: + fry: Workaround for MinecraftForge/ForgeGradle#256 + +Build 1.8-11.14.3.1511: + cpw: + FMLNetworkHandler.openGui should not try and open a GUI on a FakePlayer. + Fixes #2082 and probably dozens of mod errors. Also, side benefit of the + merged codebase! FML code can ref Forge code! + +Build 1.8-11.14.3.1510: + laci200270: Update FMLSecurityManager.java + cpw: Format a bit better + +Build 1.8-11.14.3.1509: + fry: Much requested temporary hack for items and TESRs. Context: #1582, #1597, #1713, #2058 and others. + +Build 1.8-11.14.3.1508: + vorquel: Fix faulty Channel name + +Build 1.8-11.14.3.1507: + simonbarnes1: Use already provided profile for the player's own skin + +Build 1.8-11.14.3.1506: + cpw: + More cleanup of the default eclipse workspace. The project is now called "MDKExample" not "Minecraft". + The project tree is now contemporary, instead of a copy from 1.5.x era MC. The launches are cleaned up, and refer to + a better default "runDir" of "run" rather than "eclipse".. Updating to FG2.0.1 which will contain relevant binary fixes. + +Build 1.8-11.14.3.1505: + cpw: Fix eclipse workspace inside the mdk - don't run it through the tokenconverter. Also add in CREDITS-fml.txt to the MDK - it's still required. + +Build 1.8-11.14.3.1504: + LexManos: + Fixed issue where config folder would not be created before SplashProgress tried to read from it. + Default macs to disable the new loading screen due to to many macs having issues. + Users can enable it again by editing their config. + Catch and gracefully handle more errors when starting up the Splash Screen. + +Build 1.8-11.14.3.1503: + diesieben07: Re-introduce RenderBlockOverlayEvent, seems to have been missed during 1.8 update + Abrar Syed: removed broken and duplicate AT lines + Abrar Syed: added hardcoded fml version file + Abrar Syed: DeobfuscationData no longer required at dev time + Abrar Syed: removed old unnecessary stuff + Abrar Syed: Added FG2 buildscript + updated for Gradle 2.4 + Abrar Syed: added jenkins compat tasks + Abrar Syed: fixed local-building fail with changelog + Abrar Syed: updated installed gradle. not finished + Abrar Syed: fixed deployment credentials + cpw: FML is no more. FML has ceased to be. FML's expired and gone to meet its maker. FML's a stiff! Bereft of life, FML rests in peace. + cpw: Vestigal fml-ectomy. + cpw: + FML's metabolic processes are now history. FML's off the twig. FML's kicked the bucket, FML's shuffled off this mortal coil, + run down the curtain and joined the bleedin' choir invisible!! THIS IS AN EX-PROJECT! + Abrar Syed: added MDK package + cpw: Fix MDK task - it now runs. + cpw: The final nail in the coffin. BYE! + cpw: + Trying to fix the MDK to include gradle wrapper, but the gradle-wrapper.jar is + corrupted. @AbrarSyed can you take a look? + cpw: + Fix packaging the gradle wrapper properly. There is still a problem with + the MDK- it fails to run setupDecompWorkspace. + + Filed an issue at ForgeGradle, since this seems to be something FG2 shouldn't + be doing, but is? + + https://github.com/MinecraftForge/ForgeGradle/issues/235 + cpw: Remove patches + cpw: Fix ciWriteBuildNumber task. Ugly, but it works. + cpw: Fix crowdin task. Good luck jenkins, lets roll! + cpw: Fix crowdin again. Run, jenkins, for god's sake, run! + LexManos: Update gradle wrapper and fix changelog task. + +Build 1.8-11.14.3.1502: + cpw: ObjectHolder works great, but it should be a lot less spammy about failed lookups. They're usually mod options. + cpw: Actually rebuild the fluidNames each rebuild, don't just try and force changes in. Should fix #1973 + cpw: + Wake up the FluidRegistry before any mods start loading. Should stop mods claiming to own water or lava (depending on who accessed + FluidRegistry first) + cpw: Be a little bit more helpful when the ObjectHolder misses. Should help figure out what is going in in #2006 + cpw: Cherry pick some changes from 1.8 for inner class discovery, also fix the negativecache. Closes #1872 + +Build 1.8-11.14.3.1501: + LexManos: Fix placing skulls on fence posts. Closes #2055 + +Build 1.8-11.14.3.1500: + starbuck: Fix harvest logic running in addition to shearable logic + +Build 1.8-11.14.3.1499: + glstillman: Fixed a bug with ExtendedBlockStates containing at least one IProperty and one IUnlistedProperty not allowing blocks to be placed. + +Build 1.8-11.14.3.1498: + liach: Add an EnumHelper hook and fixed an issue + +Build 1.8-11.14.3.1497: + simonbarnes1: Fix placing signs with NBT prompting for text + +Build 1.8-11.14.3.1496: + Zaggy1024: + Fixed a Forge blockstates json removing models causing an NPE in the loader. + Fixed the deep clone of a V1 Variant not cloning the submodels properly. + +Build 1.8-11.14.3.1495: + clienthax: Signed-off-by: Clienthax + +Build 1.8-11.14.3.1494: + rubensworks: Make EnumFacing events available server-side + +Build 1.8-11.14.3.1493: + rubensworks: Fix source block check for BlockFluidClassic + +Build 1.7.10-10.13.4.1492-1.7.10: + cpw: Cherry pick some changes from 1.8 for inner class discovery, also fix the negativecache. Closes #1872 + +Build 1.8-11.14.3.1491: + diesieben07: Allow the new entity eggs to be created via middle-click + +Build 1.7.10-10.13.4.1490-1.7.10: + cpw: Actually rebuild the fluidNames each rebuild, don't just try and force changes in. Should fix #1973 + cpw: + Wake up the FluidRegistry before any mods start loading. Should stop mods claiming to own water or lava (depending on who accessed + FluidRegistry first) + cpw: Be a little bit more helpful when the ObjectHolder misses. Should help figure out what is going in in #2006 + +Build 1.8-11.14.3.1487: + fry: Custom transformations in forge blockstate json. + +Build 1.8-11.14.3.1486: + LexManos: Fixed ItemMonsterPlacer.getEggInfo missing return. Closes #1975 + +Build 1.8-11.14.3.1485: + jadran.kotnik: Fixed error GUIs showing a white screen and replaced a rogue direct GL call. + +Build 1.8-11.14.3.1484: + izooDee5: Fix particle texture of the generated item models. + +Build 1.8-11.14.3.1483: + bernhard.bonigl: Fix StateMap always mapping properties to the "minecraft" domain instead of the mods, causing it to not find BlockState definitions. + +Build 1.8-11.14.3.1482: + LexManos: Add debug for max texture size and output when Texture Atlas can not stitch all textures. + +Build 1.7.10-10.13.4.1481-1.7.10: + cpw: ObjectHolder works great, but it should be a lot less spammy about failed lookups. They're usually mod options. + +Build 1.8-11.14.3.1480: + LexManos: More descripotive error if Patcher is passed invalid data for vanilla classes. + +Build 1.8-11.14.3.1479: + fry: Fixed perspective transformations for item models. + fry: Vanilla models can now use custom textures. Fixes #1962 + fry: There's no Map.getOrDefault in java6. + +Build 1.8-11.14.3.1476: + LexManos: Fix AT for Block constructor. + +Build 1.8-11.14.3.1475: + fry: Added ItemLayerModel - less awkward, simpler and faster version of ItemModelGenerator. + +Build 1.8-11.14.3.1474: + LexManos: Throw more descriptive errors when mods attempt to register invalid global entity IDs. + LexManos: Include the thread state in the potential error handleing for SplashProgress. + LexManos: Fixed Wavefront Object Importer reading files with integer values. Closes #1651, #1654 + LexManos: Create config folder in SplashProgress if it does not exist. + LexManos: Add the stitching allocation stage to loading screen. + LexManos: + Make TextureMap for items and blocks skip the first pass of loading/stitching textures. + Should decrease loading times for large packs. + May cause issues with some mods so use -Dfml.skipFirstTextureLoad=false to disable. + LexManos: Add TextureManager to loading screen. + LexManos: Time each bar in the loading screen and print it to the log, useful information to see where most time is spent in loading. + cpw: + Mods that are extracted to the mods dir by unzipping or whatever will now cause the game to crash. Too much info is in the META-INF now, + and more will be being added. Extracting to the mods dir just completely breaks that. + +Build 1.8-11.14.3.1473: + jamioflan: + Added CameraSetup sub-event for camera angles + + Allows players to alter yaw and pitch of renderViewEntity, but more importantly, adds the ability to roll the view. + + Added camera roll hook + +Build 1.7.10-10.13.4.1472-1.7.10: + michafla: fix logic for guessing mesa tag in biome dict + cpw: + Mods that are extracted to the mods dir by unzipping or whatever will now cause the game to crash. Too much info is in the META-INF now, + and more will be being added. Extracting to the mods dir just completely breaks that. + +Build 1.7.10-10.13.4.1470-1.7.10: + LexManos: Add TextureManager to loading screen. + LexManos: Time each bar in the loading screen and print it to the log, useful information to see where most time is spent in loading. + +Build 1.7.10-10.13.4.1469-1.7.10: + LexManos: Create config folder in SplashProgress if it does not exist. + LexManos: Add the stitching allocation stage to loading screen. + LexManos: + Make TextureMap for items and blocks skip the first pass of loading/stitching textures. + Should decrease loading times for large packs. + May cause issues with some mods so use -Dfml.skipFirstTextureLoad=false to disable. + +Build 1.8-11.14.3.1468: + LexManos: Patch line number update. Ignore this. + LexManos: + New system in EntityRegistry to allow modders to register spawn eggs. + For entites that do not use the global ID system. + {Which no mod entity should} + Vanilla spawn eggs will now detect a 'entity_name' entry in it's NBT data and use that for spawning/rendering. + +Build 1.8-11.14.3.1467: + foka_12: Change permission levels on ore recipes parameters + +Build 1.8-11.14.3.1466: + foka_12: + Fixed NPE when calling canBrew + + Oversight on my part, + + If the ingredient doesn't return true in Item.isPotionIngredient, Items.potionitem.getEffects(stack) returns null, causing an NPE to be thrown later on. + + This invalidates #1947. + +Build 1.8-11.14.3.1465: + LexManos: Use Guava instead of Nio for J6 compatibility. + +Build 1.8-11.14.3.1464: + fry: Added fluid renderer. + +Build 1.8-11.14.3.1463: + LexManos: Make Item.shouldCauseReequipAnimation is bit more precise and copy over the new item for rendering even if the animation is diabled. + +Build 1.8-11.14.3.1462: + LexManos: Add vanilla block rotation support back in for certain blocks that were missed in 1.8 update. Closes #1903 + +Build 1.8-11.14.3.1461: + xxmicloxx: Bugfix for B3DLoader + +Build 1.8-11.14.3.1460: + Daniel: + Fix incorrect block position in BlockReed canPlaceBlockAt + + block.canSustainPlant is called on the wrong block position. It should be called on the block below (the 'soil' block). + +Build 1.8-11.14.3.1459: + mezz: Add GuiScreenEvents for keyboard and mouse input + +Build 1.8-11.14.3.1458: + t.tomkins: + Player sensitive version of Block.getPickBlock + + Block.getPickBlock was patched in 1.7 but was overlooked in 1.8. + + Closes: https://github.com/MinecraftForge/MinecraftForge/issues/1709 + LexManos: Add Item.shouldCauseReequipAnimation to allow modders more control over the 'Reequip' animation. + +Build 1.8-11.14.3.1457: + LexManos: Fixed compile issues with irtimaled's PR. + +Build 1.7.10-10.13.4.1456-1.7.10: + irtimaled: + Copy fortress.dat from vanilla location + + Fixes #1747 + + If the dat file isn't in the dimension specific folder but is present in the vanilla data folder then copy it over. + LexManos: Make FML Gui classes use GlStateManager. Closes FML#615 + LexManos: Fixed Wavefront Object Importer reading files with integer values. Closes #1651, #1654 + +Build 1.8-11.14.3.1453: + LexManos: Cleanup code format in LayerBreakingTest. + LexManos: Fixup model loading errors not being printed by making ICustomModelLoader.loadModel propogate IOExceptions as needed. + +Build 1.7.10-10.13.4.1452-1.7.10: + LexManos: Include the thread state in the potential error handleing for SplashProgress. + +Build 1.7.10-10.13.4.1451-1.7.10: + LexManos: Throw more descriptive errors when mods attempt to register invalid global entity IDs. + +Build 1.8-11.14.3.1450: + LexManos: Bump version for new RB. + LexManos: Cleanup some spammy output. + LexManos: Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. + LexManos: Quiet FMLControlledNamespacedRegistry debug spam by default. Reenable using -Dfml.debugRegistryEntries=true. + LexManos: Quiet CrashReport class pre-loading debug, no flag to re-enable. + LexManos: Cleanup mod signature data table. Easily seperating those mods with signatures vs those with none. + LexManos: Cleanup mod state dump to be easier to read by displaying the states in abreviation and placing them before the mod info. + +Build 1.8-11.14.3.1449: + clarsson: Fixing two IndexOutBoundsExceptions from the BiomeDictionary + +Build 1.7.10-10.13.4.1448-1.7.10: + LexManos: Cleanup mod state dump to be easier to read by displaying the states in abreviation and placing them before the mod info. + +Build 1.7.10-10.13.4.1447-1.7.10: + LexManos: Cleanup some spammy output. + LexManos: Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. + LexManos: Quiet FMLControlledNamespacedRegistry debug spam by default. Reenable using -Dfml.debugRegistryEntries=true. + LexManos: Quiet CrashReport class pre-loading debug, no flag to re-enable. + LexManos: Cleanup mod signature data table. Easily seperating those mods with signatures vs those with none. + +Build 1.8-11.14.3.1446: + LexManos: Copy over parent's modelSet value in variants as well. + LexManos: Bump version for new RB + +Build 1.7.10-10.13.4.1445-1.7.10: + LexManos: Bump version for new RB. + +Build 1.8-11.14.2.1444: + cpw: + Fix up the client/server fluid race condition that could cause the game to bail when an SSP game connects. + There's still a teeny gap, but it's MUCH less prominent than it was before. + +Build 1.8-11.14.2.1443: + lumien231: Added LivingExperienceDropsEvent to change the amount of experience an entity drops + +Build 1.8-11.14.2.1442: + jcoleman350: Added ItemMap type check to item frames and ItemRenderer, enabling vanilla style rendering for custom maps + +Build 1.8-11.14.2.1441: + LexManos: Redefine removal value in IRetextureableModel from null to empty string {""} due to ImmutibleMap not allowing null Values. Closes #1927 + +Build 1.8-11.14.2.1440: + foka_12: Added a brewing registry system + +Build 1.8-11.14.2.1439: + LexManos: Limit Sign text to 384 json characters and strip control codes. This is 1.8.7's Sign fix. Thanks Searge. + LexManos: Remove worlds from WorldBorder when unloaded tol prevent memory leak, Closes #1923 + LexManos: Missed patch for sign fix. + +Build 1.8-11.14.2.1437: + cpw: + Attempt to synchronize the state for vanilla client completions and quit the handler if the vanilla + thread has already setup the connection. Should fix #1924 + +Build 1.8-11.14.2.1436: + LexManos: Change custom payload lock to be buffer itself incase multiple packets use the same backend buffer. Closes #1908 + +Build 1.8-11.14.2.1435: + Fuami.cake: + Added Breaking Animation for Smart Models, Checking each layer. + Added Layered Smart Render Test. + +Build 1.8-11.14.2.1434: + LexManos: Update README.txt + +Build 1.8-11.14.2.1433: + fry: Fixed missing variant logging; added the possibility to specify the item variant in the blockstate json. + fry: fixed AT missing for getModelBlockDefinition + fry: + B3D Improvements + - fixed keyframe transformation application + - textures are now resolved the same way as in vanilla models + - added the ability to use forge blockstate texture information + - removed unused code from the B3D example + +Build 1.8-11.14.2.1431: + fry: Fixed partial variant detection in the forge blockstate loader. + +Build 1.8-11.14.2.1430: + LexManos: Mitigate potential issue with users requesting lots of server status information by caching ServerStatus json. + +Build 1.8-11.14.2.1429: + clienthax: + Add missing forge patch from 1.8 port + https://github.com/MinecraftForge/MinecraftForge/blob/1.7.10/patches/minecraft/net/minecraft/client/Minecraft.java.patch#L88 + +Build 1.7.10-10.13.3.1428-1.7.10: + cpw: + Fix up the client/server fluid race condition that could cause the game to bail when an SSP game connects. + There's still a teeny gap, but it's MUCH less prominent than it was before. + +Build 1.8-11.14.2.1427: + LexManos: + Hook BlockState's Json loading to add support for simplified Forge format. + See https://github.com/MinecraftForge/MinecraftForge/pull/1885 for more details. + +Build 1.8-11.14.2.1426: + cpw: + Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. + + (cherry picked from commit e3211eec0469dc6717943010d584207b7abdb1e0) + + Conflicts: + fml/src/main/java/cpw/mods/fml/client/SplashProgress.java + cpw: + Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 + + (cherry picked from commit 19d7e16fa6a28c5665de1ed6e50d8699e865bff2) + + Conflicts: + fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch + cpw: So we can't print a lot of unicode in the splash screen, so restrict to a hard subset we know we CAN print, closes #1910 + LexManos: Fixed missing import in last merge. + +Build 1.7.10-10.13.3.1424-1.7.10: + cpw: So we can't print a lot of unicode in the splash screen, so restrict to a hard subset we know we CAN print, closes #1910 + +Build 1.8-11.14.2.1423: + AlgorithmX2: Allow placing item frames on Solid Block Faces (isSideSolid) + +Build 1.7.10-10.13.3.1422-1.7.10: + cpw: + Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. + + (cherry picked from commit e3211eec0469dc6717943010d584207b7abdb1e0) + + Conflicts: + fml/src/main/java/cpw/mods/fml/client/SplashProgress.java + cpw: + Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 + + (cherry picked from commit 19d7e16fa6a28c5665de1ed6e50d8699e865bff2) + + Conflicts: + fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch + +Build 1.8-11.14.2.1421: + cpw: + MinecraftForge/FML@12ccf9cf49b76140841cdc5a459422ae4781de1a Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse. + MinecraftForge/FML@e8cd368da30661ed2898fff232e2db787edcbdcc It's an IllegalState not an IllegalArgument *sigh* + MinecraftForge/FML@2be9c743424c92f8799a6af1d59d60edd65e6bf0 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it + MinecraftForge/FML@7d8804cf656081d1570068f52e9bfc7140b21a65 You can't setAction to BLOCKONLY + MinecraftForge/FML@c73861efe67594ee9995bc93744cab06bd6647d1 Cherry-pick 01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 + MinecraftForge/FML@94c45b48c1265e7c4f60f591d413fa545787d354 Fix json cache crash, handle the file much more cleanly. Probably an MC JIRA since it's a vanilla bug. Closes #619 + cpw: + Forge really should have always supported the concept of an "exact spawn". Individual world providers can still + change this behaviour of course, but for default maps it makes sense to support it as a config option. + cpw: + Removed fluidID from ItemStack. + + This fixes a rather huge issue where FluidStacks on the client could be desynced if a modder was unaware of it. + + This is a breaking change but can be mitigated with a transformer to the getter getFluidID(). + + Signed-off-by: King Lemming + cpw: Add in a fluidid transformer + cpw: Fix formatting + cpw: + Allow for duplicate Fluid Blocks. It's annoying to be sure but just as with the OreDictionary, we'll have to handle it. + + Signed-off-by: King Lemming + cpw: + You shouldn't be creating FluidStacks from unregistered Fluids. Warn clearly on failed registrations, and make a useful log message for failed fluidstack + creations. Should help a lot with tracking down broken mods that are doing this wrongly. + LexManos: MinecraftForge/FML@31cf2a9cab6d1977d31436220d9612eaa13d4e0f Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. + LexManos: Restore binary compatibility issues in FluidRegistry caused by recent changes. + me: + Fix FluidRegsitry.registerFluid + + FluidRegistry: + ```java + static BiMap fluids = HashBiMap.create(); + static BiMap fluidIDs = HashBiMap.create(); + ... + public static boolean registerFluid(Fluid fluid) + { + if (fluidIDs.containsKey(fluid.getName())) + ^^^^^^^ + ``` + There is definitely should be fluids instead fluidIDs. This mistake broke many mods. + kinglemming: + Fixes #1782 + + Signed-off-by: King Lemming + kinglemming: + Fixes FluidContainerRegistry properly - no more corner case where client/server mods disagree. + + Also clarifies the 2x Fluid registration error message somewhat. + + Signed-off-by: King Lemming + kinglemming: + Adds a warning to the FluidContainerRegistry when a mod does something stupid! Also denies the registration. + + Signed-off-by: King Lemming + cpw: + MinecraftForge/FML@ce791cb1f2cf983ef77b1e5c4028ddefab394062 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors. + MinecraftForge/FML@852710962a9b6d7c8e2ca188c715eebb2da44c2a Clean up some dead code + cpw: MinecraftForge/FML@be5ec06e3144d55a03d125f3ce364eade3771f4f Cleaning up the missing resource stack spam, and condensing the information into a usefully understandable format. + cpw: MinecraftForge/FML@0da1263ff9ede99267c03728a1c823b8056d5e44 Enhance error output for bad textures a bit more and try and capture more types of error.. + cpw: + Fluids are now tracked internally by mod. This allows for the server and the world to specify a "default" + in the case of a possible alternative fluid implementation. If you always called registerFluid, things + should work pretty seamlessly, but if you didn't (gating with an isFluidRegistered check for example) + you should change to register anyway. This way, even if you're not default in the overall instance, you may + become default if you're the only mod present on a server, for example, or in a world save. + + This should radically decrease the mixups caused by mod load ordering problems, and other issues around fluid + tracking. + cpw: Fix NPE - Closes #1794 + cpw: And handle the null case in the constructor itself. Closes #1794 (again) + cpw: + MinecraftForge/FML@dfce4cd8d023a546c4c21405db182b8ddcd38633 Allow registering custom language adapters. + MinecraftForge/FML@9fecd72cf0bd483ae7bc2ce821ae6b2f5e5b9c65 Some tidyup of the PR + MinecraftForge/FML@10ac2a4fd972e923a60d23d10e8f297b8584f565 Fix itemCtorArgs javadoc in registerBlock + MinecraftForge/FML@86f70d37a40bbeaf7c389a14adcd8311ba5584df Patch TracingPrintStream to handle Kotlin IO. + kinglemming: + Adjusts OreDictionary to prevent invalid registrations. + Getting Ore Names for a non-existent ore will no longer automatically add that Name to the list nor generate an ID. + + Tweaks a warning message in the FluidContainerRegistry. No functionality change. + + Signed-off-by: King Lemming + LexManos: + Revert KL's change, requesting a ore WILL register it. + + Registering like this and returning a new empty list allows for modders to register their recipes and such without requiring to be executed after someone actually adds an item. If handled properly this allows for more flexible load orders, and more responsive code. + kinglemming: + Adds some new Ore querying functionality. + + Also attempts to size initial Hashmaps in a logical manner. + + Signed-off-by: King Lemming + cpw: + Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker. + + (cherry picked from commit de066a86da281d381b0e3ab9e83682720327049c) + + Conflicts: + patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch + patches/minecraft/net/minecraft/nbt/NBTTagList.java.patch + cpw: Verify that the fluid registry doesn't contain "junk" fluids thru reflection. + cpw: MinecraftForge/FML@8f9e3a7e30c8cc436dcb8d94b18b4634e0376339 Exceptions during construction phase should not propogate and cause an immediate crash. Closes #638 + cpw: Change logging to avoid the String.format bug. Closes #1809 + cpw: Actually use the override constraint in ticket requests. Closes #1802 + cpw: + Reformat ItemArmor$ArmorMaterial.getBaseItem to use an if/then/else structure. The switch + causes the generation of an internal class which may derp custom armor addition. + Closes #1799 + cpw: Make FluidStack hold a delegate for the fluid. This can then float based on what is "live" at present. + cpw: Fix static initializer derp. + cpw: Replace the OLD fluid in the fluidID map, not the new one.. + cpw: + Expose the fluid that a block was constructed with, useful for 'non-default' + configuration of fluidblocks. Shouldn't be used outside of this purpose. + cpw: MinecraftForge/FML@d14d1a8fea4c9242c944079ab8e4cdd516dfce4c Update to use the inherited jar format. Simplifies a lot.. + cpw: + MinecraftForge/FML@a39482c4b7ac2883f821619b47ff31e0b6e74b29 Splash screen implementation + MinecraftForge/FML@01fea095cdcd80c2ae9f0ebfd1c72242b3f2dbf8 Merge branch '1.7.10-load-progress' of github.com:RainWarrior/FML into 1.7.10 + MinecraftForge/FML@364b4bbbb0d4d168f9a63fa62a09e4e2fa213039 Call some loader stuffs + MinecraftForge/FML@61a891280d15f9f17e28bf86a427f32de5a8983e Make sure to close the splash screen if there's gonna be an error display + fry: + MinecraftForge/FML@5785a9c9e8d76b91a03ed1f9791aeee1cb7ea00b Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645 + MinecraftForge/FML@bd117be9c3e3919f3c29538cde80e3eb8fa48368 Correctly track exceptions thrown in the loading screen rendering thread + cpw: + MinecraftForge/FML@36688e781aae67fb1e4e7047acf689edeeac7ddb Add in resource reloading to the bar. Tidy up some of the labels a bit. + MinecraftForge/FML@a1dc465a55612ecdd44e6cde3adc0f1d53c6d97b More progress bar action! + MinecraftForge/FML@bfcbf4ef4366fd3d8bfd20adafb63a857bb0dd53 More progress bar hooks + MinecraftForge/FML@a6670c415ee97e771020921e00773c4c15e7512e Thread errors should be correctly displayed in the crash report now + MinecraftForge/FML@9a16d26186d27029cae32a19c09ddf48f7cba22e fixed bar text positioning + MinecraftForge/FML@0059c630281b7105c0532d2dba1bec27cf0323b2 Track mipmaps and texture upload + MinecraftForge/FML@ef5f809752e87e369235e98a63027e9347185cd9 Fix broken log message in vanilla. + cpw: + MinecraftForge/FML@4fe7b469b5ba156d4a786cd9e105b18cca7c271a Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now. + MinecraftForge/FML@31ae43590a2ba771d69b6c6513bcd5fe87ae8f8f Fix trying to close the screen during error. + cpw: MinecraftForge/FML@94821fac98e64d9b8ad7434ed23a621850a8e11c Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json + cpw: MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. + cpw: MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request #650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. + fry: + Updated FML: + MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. + MinecraftForge/FML@adcf2247c69f68415033a3c0b2c527053733514c Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack + MinecraftForge/FML@91338433fa74e782e237643632de2cc5e17ee280 Add classloader exclusion for ASM + MinecraftForge/FML@7c10b93a2ded2799d41b73b67a2766c31e992d8a Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651 + MinecraftForge/FML@8ccfa24764a3f4854f5334c0da1224286175e13b Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10 + MinecraftForge/FML@b2650a0bdb7d69010a55de518e76591a6c417e87 Optifine can tell us when they're ready for the new splash screen. + MinecraftForge/FML@02a5a58a1cbb25cd3baecf1535950e4780b7810f Fix the ordering of the messages, so they make sense now. + MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. + MinecraftForge/FML@5dbb481732bf4bcf8b0c5c02806051a933e6587e Eliminated texture name allocation race condition + MinecraftForge/FML@450b82ca0e13cf889a42eeb198b67115a4851031 Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed + cpw: MinecraftForge/FML@0b84b6aa297bdf6ab9f010e340f286442cb242dc Expose the state of the loader + cpw: + Attempt to fix the slow loading problem. Instead of forcing the main thread to wait around + on every call to processWindowMessages, we will simply skip it, if the mutex is already + claimed by the display thread. This should fix slow loading issues seen by some with + the new loading screen. + cpw: Hardcode the FML version in-game as a specific value. + cpw: Strip control codes in progress bar messages. They cause crashes sometimes. + cpw: + Clean up transformers a bit. Can't use COMPUTE_FRAMES even though it's required - the game refuses to even + run if I do. Note for j8: when we force Java8 classes, all coremods will need a thorough overhaul - the + current way we do things is not sustainable when Java8 becomes the universal norm. + cpw: + Add in an ItemStackHolder - a way to inject ItemStacks without having to have complex lookup code everywhere. + + Example: https://gist.github.com/cpw/9af398451a20459ac263 + cpw: Bump minor version # to 2 because of the fluid changes (mirroring what happening in 1.7.10) + +Build 1.7.10-10.13.3.1420-1.7.10: + cpw: + Add in an ItemStackHolder - a way to inject ItemStacks without having to have complex lookup code everywhere. + + Example: https://gist.github.com/cpw/9af398451a20459ac263 + +Build 1.8-11.14.1.1419: + LexManos: Fixed damage reduction rate of vanilla armor incorrectly scaling with armor's current durability. + +Build 1.8-11.14.1.1418: + AlgorithmX2: Fix Partial Face Lighting on Top/Bottom Faces ; Vanilla MC-80148 + +Build 1.8-11.14.1.1417: + LexManos: Force netty downgrade on dedicated server to match client. Netty bug: https://github.com/netty/netty/issues/2302 Closes #1848 + +Build 1.8-11.14.1.1416: + LexManos: Fixed command exploit with C12 + +Build 1.8-11.14.1.1415: + LexManos: Fixes MC-75630 - Exploit with signs and command blocks + +Build 1.8-11.14.1.1414: + LexManos: Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 + +Build 1.8-11.14.1.1413: + LexManos: Loosen up ServerChatEvent to support IChatComponent Closes #1893 + LexManos: Cleanup a lot of spammy output. Everything hidden behind environment flags now. Scale anvil image down 50% + LexManos: Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. + +Build 1.8-11.14.1.1412: + me: Add true support for unicode fonts + +Build 1.8-11.14.1.1411: + diesieben07: Fix crash when texture loading throws RuntimeException without message + +Build 1.8-11.14.1.1410: + xxt1g3lxx.xxt1g3lxx: Changed forge command tab completion to use getListOfStringsMatchingLastWord() + +Build 1.8-11.14.1.1409: + xxt1g3lxx.xxt1g3lxx: Added tab completion + +Build 1.7.10-10.13.3.1408-1.7.10: + cpw: Strip control codes in progress bar messages. They cause crashes sometimes. + cpw: + Clean up transformers a bit. Can't use COMPUTE_FRAMES even though it's required - the game refuses to even + run if I do. Note for j8: when we force Java8 classes, all coremods will need a thorough overhaul - the + current way we do things is not sustainable when Java8 becomes the universal norm. + +Build 1.7.10-10.13.3.1407-1.7.10: + cpw: Hardcode the FML version in-game as a specific value. + +Build 1.7.10-10.13.3.1406-1.7.10: + cpw: Merged FML into Forge's repo. FML is no longer developed seperatly. + +Build 1.8-11.14.1.1405: + cpw: Merged FML into Forge's repo. FML is no longer developed seperatly. + +Build 1.8-11.14.1.1404: + tmtravlrsmail: + Initialized the Nether Fortress chest loot + + Forced the nether fortress chest loot to initialize in ChestGenHooks + like the other types. + + Changed tabs to spaces. Silly Eclipse. + +Build 1.7.10-10.13.3.1403-1.7.10: + fry: + Updated FML: + MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. + MinecraftForge/FML@adcf2247c69f68415033a3c0b2c527053733514c Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack + MinecraftForge/FML@91338433fa74e782e237643632de2cc5e17ee280 Add classloader exclusion for ASM + MinecraftForge/FML@7c10b93a2ded2799d41b73b67a2766c31e992d8a Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651 + MinecraftForge/FML@8ccfa24764a3f4854f5334c0da1224286175e13b Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10 + MinecraftForge/FML@b2650a0bdb7d69010a55de518e76591a6c417e87 Optifine can tell us when they're ready for the new splash screen. + MinecraftForge/FML@02a5a58a1cbb25cd3baecf1535950e4780b7810f Fix the ordering of the messages, so they make sense now. + MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. + MinecraftForge/FML@5dbb481732bf4bcf8b0c5c02806051a933e6587e Eliminated texture name allocation race condition + MinecraftForge/FML@450b82ca0e13cf889a42eeb198b67115a4851031 Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed + cpw: MinecraftForge/FML@0b84b6aa297bdf6ab9f010e340f286442cb242dc Expose the state of the loader + +Build 1.8-11.14.1.1402: + silfadur: Added hook for IPerspectiveAwareModel in RenderItem.renderItemIntoGUI for ItemCameraTransforms.TransformType.GUI + +Build 1.7.10-10.13.3.1401-1710ls: + fry: + Updated FML: + MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. + MinecraftForge/FML@adcf2247c69f68415033a3c0b2c527053733514c Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack + MinecraftForge/FML@91338433fa74e782e237643632de2cc5e17ee280 Add classloader exclusion for ASM + MinecraftForge/FML@7c10b93a2ded2799d41b73b67a2766c31e992d8a Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651 + MinecraftForge/FML@8ccfa24764a3f4854f5334c0da1224286175e13b Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10 + MinecraftForge/FML@b2650a0bdb7d69010a55de518e76591a6c417e87 Optifine can tell us when they're ready for the new splash screen. + MinecraftForge/FML@02a5a58a1cbb25cd3baecf1535950e4780b7810f Fix the ordering of the messages, so they make sense now. + MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. + MinecraftForge/FML@5dbb481732bf4bcf8b0c5c02806051a933e6587e Eliminated texture name allocation race condition + MinecraftForge/FML@450b82ca0e13cf889a42eeb198b67115a4851031 Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed + +Build 1.7.10-10.13.3.1400-1.7.10: + cpw: MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request #650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. + +Build 1.7.10-10.13.3.1399-1.7.10: + cpw: + MinecraftForge/FML@a39482c4b7ac2883f821619b47ff31e0b6e74b29 Splash screen implementation + MinecraftForge/FML@01fea095cdcd80c2ae9f0ebfd1c72242b3f2dbf8 Merge branch '1.7.10-load-progress' of github.com:RainWarrior/FML into 1.7.10 + MinecraftForge/FML@364b4bbbb0d4d168f9a63fa62a09e4e2fa213039 Call some loader stuffs + MinecraftForge/FML@61a891280d15f9f17e28bf86a427f32de5a8983e Make sure to close the splash screen if there's gonna be an error display + fry: + MinecraftForge/FML@5785a9c9e8d76b91a03ed1f9791aeee1cb7ea00b Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645 + MinecraftForge/FML@bd117be9c3e3919f3c29538cde80e3eb8fa48368 Correctly track exceptions thrown in the loading screen rendering thread + cpw: + MinecraftForge/FML@36688e781aae67fb1e4e7047acf689edeeac7ddb Add in resource reloading to the bar. Tidy up some of the labels a bit. + MinecraftForge/FML@a1dc465a55612ecdd44e6cde3adc0f1d53c6d97b More progress bar action! + MinecraftForge/FML@bfcbf4ef4366fd3d8bfd20adafb63a857bb0dd53 More progress bar hooks + MinecraftForge/FML@a6670c415ee97e771020921e00773c4c15e7512e Thread errors should be correctly displayed in the crash report now + MinecraftForge/FML@9a16d26186d27029cae32a19c09ddf48f7cba22e fixed bar text positioning + MinecraftForge/FML@0059c630281b7105c0532d2dba1bec27cf0323b2 Track mipmaps and texture upload + MinecraftForge/FML@ef5f809752e87e369235e98a63027e9347185cd9 Fix broken log message in vanilla. + cpw: + MinecraftForge/FML@4fe7b469b5ba156d4a786cd9e105b18cca7c271a Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now. + MinecraftForge/FML@31ae43590a2ba771d69b6c6513bcd5fe87ae8f8f Fix trying to close the screen during error. + cpw: MinecraftForge/FML@94821fac98e64d9b8ad7434ed23a621850a8e11c Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json + cpw: MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. + +Build 1.8-11.14.1.1398: + Zaggy1024: Fixed a bug which caused the light level not to update when a block implements Block.getLightValue(IBlockAccess, BlockPos) to change the light value for different block states. + +Build 1.8-11.14.1.1397: + Parker Young: Fixes MC-52974: Host's skin doesn't load in LAN + +Build 1.8-11.14.1.1396: + Zaggy1024: Removed @SideOnly(Side.CLIENT) from EnumWorldBlockLayer. + +Build 1.7.10-10.13.3.1395-1710ls: + cpw: MinecraftForge/FML@94821fac98e64d9b8ad7434ed23a621850a8e11c Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json + +Build 1.7.10-10.13.3.1394-1710ls: + cpw: + MinecraftForge/FML@4fe7b469b5ba156d4a786cd9e105b18cca7c271a Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now. + MinecraftForge/FML@31ae43590a2ba771d69b6c6513bcd5fe87ae8f8f Fix trying to close the screen during error. + +Build 1.7.10-10.13.3.1393-1710ls: + cpw: + MinecraftForge/FML@36688e781aae67fb1e4e7047acf689edeeac7ddb Add in resource reloading to the bar. Tidy up some of the labels a bit. + MinecraftForge/FML@a1dc465a55612ecdd44e6cde3adc0f1d53c6d97b More progress bar action! + MinecraftForge/FML@bfcbf4ef4366fd3d8bfd20adafb63a857bb0dd53 More progress bar hooks + MinecraftForge/FML@a6670c415ee97e771020921e00773c4c15e7512e Thread errors should be correctly displayed in the crash report now + MinecraftForge/FML@9a16d26186d27029cae32a19c09ddf48f7cba22e fixed bar text positioning + MinecraftForge/FML@0059c630281b7105c0532d2dba1bec27cf0323b2 Track mipmaps and texture upload + MinecraftForge/FML@ef5f809752e87e369235e98a63027e9347185cd9 Fix broken log message in vanilla. + +Build 1.8-11.14.1.1392: + LexManos: Cleanup RenderEntityItem patch, fixes Z-fighting issue in EntityItems. Closes #1824 + +Build 1.7.10-10.13.3.1391-1710ls: + fry: + MinecraftForge/FML@5785a9c9e8d76b91a03ed1f9791aeee1cb7ea00b Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645 + MinecraftForge/FML@bd117be9c3e3919f3c29538cde80e3eb8fa48368 Correctly track exceptions thrown in the loading screen rendering thread + +Build 1.8-11.14.1.1390: + jadran.kotnik: + Extracted the creation of RegionRenderCache into a method. + Classes extending RegionRenderCache can change the behavior of the cache, allowing to visually change blocks (schematics etc). + +Build 1.7.10-10.13.3.1388-1.7.10: + cpw: MinecraftForge/FML@d14d1a8fea4c9242c944079ab8e4cdd516dfce4c Update to use the inherited jar format. Simplifies a lot.. + +Build 1.7.10-10.13.3.1385-1.7.10: + cpw: + Expose the fluid that a block was constructed with, useful for 'non-default' + configuration of fluidblocks. Shouldn't be used outside of this purpose. + +Build 1.7.10-10.13.3.1384-1.7.10: + cpw: Replace the OLD fluid in the fluidID map, not the new one.. + +Build 1.7.10-10.13.3.1383-1.7.10: + cpw: Fix static initializer derp. + +Build 1.7.10-10.13.3.1382-1.7.10: + cpw: Make FluidStack hold a delegate for the fluid. This can then float based on what is "live" at present. + +Build 1.7.10-10.13.3.1381-1.7.10: + cpw: + Reformat ItemArmor$ArmorMaterial.getBaseItem to use an if/then/else structure. The switch + causes the generation of an internal class which may derp custom armor addition. + Closes #1799 + +Build 1.7.10-10.13.3.1380-1.7.10: + cpw: Actually use the override constraint in ticket requests. Closes #1802 + +Build 1.7.10-10.13.3.1379-1.7.10: + cpw: Change logging to avoid the String.format bug. Closes #1809 + +Build 1.7.10-10.13.3.1378-1.7.10: + cpw: MinecraftForge/FML@8f9e3a7e30c8cc436dcb8d94b18b4634e0376339 Exceptions during construction phase should not propogate and cause an immediate crash. Closes #638 + +Build 1.7.10-10.13.3.1377-1.7.10: + cpw: Verify that the fluid registry doesn't contain "junk" fluids thru reflection. + +Build 1.7.10-10.13.3.1376-1.7.10: + cpw: + Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker. + + (cherry picked from commit de066a86da281d381b0e3ab9e83682720327049c) + + Conflicts: + patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch + patches/minecraft/net/minecraft/nbt/NBTTagList.java.patch + +Build 1.8-11.14.1.1375: + LexManos: Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker. + +Build 1.7.10-10.13.3.1374-1.7.10: + kinglemming: + Adds some new Ore querying functionality. + + Also attempts to size initial Hashmaps in a logical manner. + + Signed-off-by: King Lemming + +Build 1.7.10-10.13.3.1373-1.7.10: + LexManos: + Revert KL's change, requesting a ore WILL register it. + + Registering like this and returning a new empty list allows for modders to register their recipes and such without requiring to be executed after someone actually adds an item. If handled properly this allows for more flexible load orders, and more responsive code. + +Build 1.7.10-10.13.3.1372-1.7.10: + kinglemming: + Adjusts OreDictionary to prevent invalid registrations. + Getting Ore Names for a non-existent ore will no longer automatically add that Name to the list nor generate an ID. + + Tweaks a warning message in the FluidContainerRegistry. No functionality change. + + Signed-off-by: King Lemming + +Build 1.8-11.14.1.1371: + cpw: + MinecraftForge/FML@888e489394e52abdfb349fbfbd7f8e153b5af124 Allow registering custom language adapters. + MinecraftForge/FML@906f94ca143f756f40404fde38af32b2481d0673 Some tidyup of the PR + MinecraftForge/FML@1c025f18433df868859022eea8e6d198444736de Patch TracingPrintStream to handle Kotlin IO. + +Build 1.7.10-10.13.3.1370-1.7.10: + cpw: + MinecraftForge/FML@dfce4cd8d023a546c4c21405db182b8ddcd38633 Allow registering custom language adapters. + MinecraftForge/FML@9fecd72cf0bd483ae7bc2ce821ae6b2f5e5b9c65 Some tidyup of the PR + MinecraftForge/FML@10ac2a4fd972e923a60d23d10e8f297b8584f565 Fix itemCtorArgs javadoc in registerBlock + MinecraftForge/FML@86f70d37a40bbeaf7c389a14adcd8311ba5584df Patch TracingPrintStream to handle Kotlin IO. + +Build 1.7.10-10.13.3.1369-1.7.10: + cpw: And handle the null case in the constructor itself. Closes #1794 (again) + +Build 1.7.10-10.13.3.1368-1.7.10: + cpw: Fix NPE - Closes #1794 + +Build 1.7.10-10.13.3.1367-1.7.10: + cpw: + Fluids are now tracked internally by mod. This allows for the server and the world to specify a "default" + in the case of a possible alternative fluid implementation. If you always called registerFluid, things + should work pretty seamlessly, but if you didn't (gating with an isFluidRegistered check for example) + you should change to register anyway. This way, even if you're not default in the overall instance, you may + become default if you're the only mod present on a server, for example, or in a world save. + + This should radically decrease the mixups caused by mod load ordering problems, and other issues around fluid + tracking. + +Build 1.7.10-10.13.3.1366-1.7.10: + cpw: MinecraftForge/FML@0da1263ff9ede99267c03728a1c823b8056d5e44 Enhance error output for bad textures a bit more and try and capture more types of error.. + +Build 1.7.10-10.13.3.1365-1.7.10: + cpw: MinecraftForge/FML@be5ec06e3144d55a03d125f3ce364eade3771f4f Cleaning up the missing resource stack spam, and condensing the information into a usefully understandable format. + +Build 1.7.10-10.13.3.1364-1.7.10: + cpw: + MinecraftForge/FML@ce791cb1f2cf983ef77b1e5c4028ddefab394062 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors. + MinecraftForge/FML@852710962a9b6d7c8e2ca188c715eebb2da44c2a Clean up some dead code + +Build 1.7.10-10.13.3.1363-1.7.10: + kinglemming: + Adds a warning to the FluidContainerRegistry when a mod does something stupid! Also denies the registration. + + Signed-off-by: King Lemming + +Build 1.7.10-10.13.3.1362-1.7.10: + kinglemming: + Fixes FluidContainerRegistry properly - no more corner case where client/server mods disagree. + + Also clarifies the 2x Fluid registration error message somewhat. + + Signed-off-by: King Lemming + +Build 1.8-11.14.1.1361: + LexManos: MinecraftForge/FML@4a753227adb805d29f3bf245c3f8427193c35544 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors. + +Build 1.7.10-10.13.3.1360-1.7.10: + kinglemming: + Fixes #1782 + + Signed-off-by: King Lemming + +Build 1.8-11.14.1.1359: + Abrar Syed: changed run configs to GradleStarts + +Build 1.7.10-10.13.3.1358-1.7.10: + me: + Fix FluidRegsitry.registerFluid + + FluidRegistry: + ```java + static BiMap fluids = HashBiMap.create(); + static BiMap fluidIDs = HashBiMap.create(); + ... + public static boolean registerFluid(Fluid fluid) + { + if (fluidIDs.containsKey(fluid.getName())) + ^^^^^^^ + ``` + There is definitely should be fluids instead fluidIDs. This mistake broke many mods. + +Build 1.8-11.14.1.1357: + LexManos: + Updated FML: + MinecraftForge/FML@c8160311d580f2dfccdf796a5243e16844787cb6 Stop IllegalFormatConversionException thrown if @Mod has flagged client-only or server-only + MinecraftForge/FML@9a894952afb526436649f608f7af5992b97f044c Merge pull request #627 from GotoLink/patch-1 + MinecraftForge/FML@40faac64520d1a197f08eaa9a0f850e7df43359a Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. + +Build 1.7.10-10.13.3.1356-1.7.10: + LexManos: MinecraftForge/FML@31cf2a9cab6d1977d31436220d9612eaa13d4e0f Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. + LexManos: Restore binary compatibility issues in FluidRegistry caused by recent changes. + +Build 1.7.10-10.13.3.1355-1.7.10: + cpw: + Removed fluidID from ItemStack. + + This fixes a rather huge issue where FluidStacks on the client could be desynced if a modder was unaware of it. + + This is a breaking change but can be mitigated with a transformer to the getter getFluidID(). + + Signed-off-by: King Lemming + cpw: Add in a fluidid transformer + cpw: Fix formatting + cpw: + Allow for duplicate Fluid Blocks. It's annoying to be sure but just as with the OreDictionary, we'll have to handle it. + + Signed-off-by: King Lemming + cpw: + You shouldn't be creating FluidStacks from unregistered Fluids. Warn clearly on failed registrations, and make a useful log message for failed fluidstack + creations. Should help a lot with tracking down broken mods that are doing this wrongly. + +Build 1.8-11.14.1.1354: + ohai.iChun: Readded but deprecated the old RenderPlayerEvent that were deleted. Sorry, Lex. + +Build 1.8-11.14.1.1353: + ohai.iChun: + Reimplement RenderPlayerEvent that was removed in the port to 1.8 from 1.7.10. + RenderPlayerEvent.Specials was removed because the special effects are done in the LayerRenderer now. + +Build 1.7.10-10.13.2.1352-1.7.10: + cpw: + Forge really should have always supported the concept of an "exact spawn". Individual world providers can still + change this behaviour of course, but for default maps it makes sense to support it as a config option. + +Build 1.7.10-10.13.2.1351-1.7.10: + cpw: + MinecraftForge/FML@12ccf9cf49b76140841cdc5a459422ae4781de1a Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse. + MinecraftForge/FML@e8cd368da30661ed2898fff232e2db787edcbdcc It's an IllegalState not an IllegalArgument *sigh* + MinecraftForge/FML@2be9c743424c92f8799a6af1d59d60edd65e6bf0 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it + MinecraftForge/FML@7d8804cf656081d1570068f52e9bfc7140b21a65 You can't setAction to BLOCKONLY + MinecraftForge/FML@c73861efe67594ee9995bc93744cab06bd6647d1 Cherry-pick 01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 + MinecraftForge/FML@94c45b48c1265e7c4f60f591d413fa545787d354 Fix json cache crash, handle the file much more cleanly. Probably an MC JIRA since it's a vanilla bug. Closes #619 + +Build 1.8-11.14.1.1350: + LexManos: + Updated FML: + MinecraftForge/FML@1de3bf733aef754f15de55006b1750376871feb0 Fix FML's package for net.miencraftforge on maven. Fixes uploading of new builds. Note: 1.7.10 builds are bug fixes only while FML/Forge for 1.8 stabelizes. + MinecraftForge/FML@05ecefb53857ecc1dc52d4a577ed593c26da9659 Update to ASM5 for Java 8 support + MinecraftForge/FML@1112c455b9758c38eab385f48578bad17c0180f9 Merge pull request #595 from Grinch/master + LexManos: Fixed potential NPEs in Structure code caused by componenets not being able to load. + cpw: + MinecraftForge/FML@6b0ae369eb9b8cf89eb9d53fe997a6e5ef222093 Try and improve performance of the registry by avoiding superType.cast. + MinecraftForge/FML@dfebcafd49550b8c3f90c6c028ef0d7f3a13e607 Something I meant to add a long time ago, but it got overlooked. My apologies. Presend the (int) dimension ID in the serverhello packet. This should be 100% backward compatible with existing servers but bumping a server to this version will allow clients with this version as well to now login in dimensions outside the byte range. Probably fixes a bunch of mods that add dimensions. + MinecraftForge/FML@6011419fa055c1375d05189f9bf0d86705c9c0ec Clean up my patch. Terrible person I am.. + MinecraftForge/FML@c6bbd0e82de3d8f7993d70aa7be3f883b3afbc47 Forgot that I need a noarg ctor. I'm so rusty. + MinecraftForge/FML@6edc1635de163c41b6b5dfe02bee13d6a9c5aa4d Need to load the dimension from disk - do it without filling out the player so that the normal player loading (including events) works properly + cpw: + MinecraftForge/FML@4ca6f6e19f3c3147fcf48c58669f55478a9a1345 What a dumb oversight. One needs to copy the active substitution set to the active gamedata. Doesn't work well otherwise. + MinecraftForge/FML@6f6cec96be73b4c94999cf60dc00741f3f3c2cc2 Substitutions need to be activated when they're registered, otherwise they won't appear in world, ever. + MinecraftForge/FML@13ac015f0c36b8e2091ae332c556be315429f4c8 Change iterator behaviour for the registry - include substitutions in the standard iterator, so that vanilla MC methods visit them (so they can get textures etc). The fml special one only visits the absolute set, used mostly for sanity checking and serialization. + LexManos: + MinecraftForge/FML@24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d Enhance output of common FML errors in crash reports and server GUI. + Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions. + cpw: Experimental "fix" for the weird rendering in the Acheivements screen. Thanks skyboy for spotting this. + cpw: + Comment on previous commit fix - it worked. Thanks to skyboy and tterrag for investigating and verifying. + A chest as an acheivement icon will recreate the original problem, for note. + cpw: + Update FML - merge the 1.7.10 changes in to forge @ 1.8. Wow git is (sorta) AWESOME! + + MinecraftForge/FML@6b0ae369eb9b8cf89eb9d53fe997a6e5ef222093 Try and improve performance of the registry by avoiding superType.cast. + MinecraftForge/FML@dfebcafd49550b8c3f90c6c028ef0d7f3a13e607 Something I meant to add a long time ago, but it got overlooked. My apologies. Presend the (int) dimension ID in the serverhello packet. This should be 100% backward compatible with existing servers but bumping a server to this version will allow clients with this version as well to now login in dimensions outside the byte range. Probably fixes a bunch of mods that add dimensions. + MinecraftForge/FML@6011419fa055c1375d05189f9bf0d86705c9c0ec Clean up my patch. Terrible person I am.. + MinecraftForge/FML@c6bbd0e82de3d8f7993d70aa7be3f883b3afbc47 Forgot that I need a noarg ctor. I'm so rusty. + MinecraftForge/FML@6edc1635de163c41b6b5dfe02bee13d6a9c5aa4d Need to load the dimension from disk - do it without filling out the player so that the normal player loading (including events) works properly + MinecraftForge/FML@4ca6f6e19f3c3147fcf48c58669f55478a9a1345 What a dumb oversight. One needs to copy the active substitution set to the active gamedata. Doesn't work well otherwise. + MinecraftForge/FML@6f6cec96be73b4c94999cf60dc00741f3f3c2cc2 Substitutions need to be activated when they're registered, otherwise they won't appear in world, ever. + MinecraftForge/FML@13ac015f0c36b8e2091ae332c556be315429f4c8 Change iterator behaviour for the registry - include substitutions in the standard iterator, so that vanilla MC methods visit them (so they can get textures etc). The fml special one only visits the absolute set, used mostly for sanity checking and serialization. + MinecraftForge/FML@24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d Enhance output of common FML errors in crash reports and server GUI. + MinecraftForge/FML@12ccf9cf49b76140841cdc5a459422ae4781de1a Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse. + MinecraftForge/FML@e8cd368da30661ed2898fff232e2db787edcbdcc It's an IllegalState not an IllegalArgument *sigh* + MinecraftForge/FML@2be9c743424c92f8799a6af1d59d60edd65e6bf0 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it + MinecraftForge/FML@7d8804cf656081d1570068f52e9bfc7140b21a65 You can't setAction to BLOCKONLY + MinecraftForge/FML@13df640d9d4516219b07778edd76efd2643019f6 Pull in a lot of the FML tweaks from 1.7 to 1.8 + MinecraftForge/FML@447beaa99ec828fb83796185d07c72ea28b056c9 Merge remote-tracking branch 'origin/1.7.10' + +Build 1.8-11.14.1.1349: + cpw: + MinecraftForge/FML@2afd55ab825fad3b07073c474cdb96b348701084 Fix scala mods, Closes #621 + MinecraftForge/FML@c541b08ef68161f437eeb7b22eabe27b20eebf55 Merge pull request #622 from diesieben07/scala-fix + MinecraftForge/FML@d5021417dd10f36dc3d1b68e4975eb91f7f46e68 Forgot the register handling bit. Registration should work now.. + MinecraftForge/FML@5a65c6568699acaade8243040d8552b1f2e2e28f OK, this is finally actually working, I think... + +Build 1.8-11.14.1.1348: + fry: Fixed mipmapping not being enabled by expanding 1x1 texture + +Build 1.7.10-10.13.2.1347-1.7.10: + cpw: + Comment on previous commit fix - it worked. Thanks to skyboy and tterrag for investigating and verifying. + A chest as an acheivement icon will recreate the original problem, for note. + +Build 1.7.10-10.13.2.1346-1.7.10: + cpw: Experimental "fix" for the weird rendering in the Acheivements screen. Thanks skyboy for spotting this. + +Build 1.8-11.14.1.1344: + LexManos: + Updated FML: + MinecraftForge/FML@2a268cd5664b6562a4bf2a953a6a93fd8e111bd2 Improve mod list GUI, add sort and search + MinecraftForge/FML@951fc2d9fd7e7970c86accb1be095a24f7bfaf18 First attempt at making FMLControlledRegistry something a bit more generic than just blocks/items. + MinecraftForge/FML@410582222d9ba15d42dc47db0d3d6a84aeac2d22 Merge pull request #614 from tterrag1098/betterModList + MinecraftForge/FML@ba0b176430cdbc3573643a6e21d47013cfd1f0e0 Fix ModDiscoverer ignoring inner classes. + MinecraftForge/FML@9cc313eab9939724786f833f511a87c9957dbc72 Merge pull request #617 from diesieben07/innerclass-disc + MinecraftForge/FML@01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 + MinecraftForge/FML@8cecc47b85db68e8e69f45641b1d843509dbe71d Merge pull request #620 from killjoy1221/extra-coremod-fix + MinecraftForge/FML@38d9a5f444815810dec3607f5b3b7ff1ac513d4c Enhance output of common FML errors in crash reports and server + + Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions.GUI. + +Build 1.7.10-10.13.2.1343-1.7.10: + LexManos: + MinecraftForge/FML@24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d Enhance output of common FML errors in crash reports and server GUI. + Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions. + +Build 1.7.10-10.13.2.1342-1.7.10: + cpw: + MinecraftForge/FML@4ca6f6e19f3c3147fcf48c58669f55478a9a1345 What a dumb oversight. One needs to copy the active substitution set to the active gamedata. Doesn't work well otherwise. + MinecraftForge/FML@6f6cec96be73b4c94999cf60dc00741f3f3c2cc2 Substitutions need to be activated when they're registered, otherwise they won't appear in world, ever. + MinecraftForge/FML@13ac015f0c36b8e2091ae332c556be315429f4c8 Change iterator behaviour for the registry - include substitutions in the standard iterator, so that vanilla MC methods visit them (so they can get textures etc). The fml special one only visits the absolute set, used mostly for sanity checking and serialization. + +Build 1.8-11.14.1.1341: + simonbarnes1: + Add getTileData() to TileEntity + + - The same idea as Entity.getEntityData() + +Build 1.7.10-10.13.2.1340-1.7.10: + cpw: + MinecraftForge/FML@6b0ae369eb9b8cf89eb9d53fe997a6e5ef222093 Try and improve performance of the registry by avoiding superType.cast. + MinecraftForge/FML@dfebcafd49550b8c3f90c6c028ef0d7f3a13e607 Something I meant to add a long time ago, but it got overlooked. My apologies. Presend the (int) dimension ID in the serverhello packet. This should be 100% backward compatible with existing servers but bumping a server to this version will allow clients with this version as well to now login in dimensions outside the byte range. Probably fixes a bunch of mods that add dimensions. + MinecraftForge/FML@6011419fa055c1375d05189f9bf0d86705c9c0ec Clean up my patch. Terrible person I am.. + MinecraftForge/FML@c6bbd0e82de3d8f7993d70aa7be3f883b3afbc47 Forgot that I need a noarg ctor. I'm so rusty. + MinecraftForge/FML@6edc1635de163c41b6b5dfe02bee13d6a9c5aa4d Need to load the dimension from disk - do it without filling out the player so that the normal player loading (including events) works properly + +Build 1.8-11.14.1.1339: + erlend: Added newVolume and newPitch to PlaySoundAtEntityEvent. Deprecated ForgeEventFactory.onPlaySoundAt, added replacement ForgeEventFactory.onPlaySoundAtEntity. + +Build 1.8-11.14.1.1338: + Geforce132: -Added EntityMountEvent. + +Build 1.8-11.14.1.1337: + diesieben07: Fix jukebox message being too low with forge + +Build 1.8-11.14.1.1336: + LexManos: + Updated FML: + MinecraftForge/FML@3e7ae47f8f5d642b256adbe8b3395bb40daf85da Fix Event Bus Access Issues + MinecraftForge/FML@c8e2a5f377ddf8a35cceda6a14697dbe8cad4ca8 Fixed WorldInfo properties not loaded + MinecraftForge/FML@7f96b2c69ab8a2ed07b5b786b3d679ea4c509121 Fix Debug packet logger on local memory connections. + +Build 1.8-11.14.1.1335: + robin: remove translation and add a note for contributors + +Build 1.8-11.14.1.1334: + erju01: Fixed enchanting table applying secondary enchs. + +Build 1.8-11.14.1.1333: + mnmiller1: Add NeighborNotiftyEvent. + +Build 1.8-11.14.1.1332: + tmtravlrsmail: + Added Nether Fortress chest to the ChestGenHooks + + I tried to follow the directions on + + https://github.com/MinecraftForge/MinecraftForge/wiki/If-you-want-to-contribute-to-Forge + + as best as I could. =) + + If anything is wrong, let me know and I'll change it! + clienthax: + Current spawner implementation checks the EntitySpawnPlacementRegistry hashmap to check where a entity should spawn + as there is no way to modify this without the use of reflection or a AT, you can not specify where you want your entity to spawn + adding this helper method will allow developers to specify where they want their entity to spawn. + + Signed-off-by: Clienthax + + Update EntitySpawnPlacementRegistry.java.patch + LexManos: Fix compile error in ClientHax's PR. + +Build 1.8-11.14.1.1329: + fry: Hopefully fix NPE during baking of empty vanilla item models + +Build 1.8-11.14.1.1328: + LexManos: Fire WorldEvent.Load for Client worlds. Closes #1719 + +Build 1.8-11.14.1.1327: + LexManos: Make Container.mergeItemStack respect Slot.isValidItem Closes #1630 + +Build 1.8-11.14.1.1326: + LexManos: Fix JukeBoxes not storing the inserted record. All TE's in minecraft are in net.minecraft.tileentity EXCEPT JukeBoxes. Closes #1633 Closes #1714 + +Build 1.8-11.14.1.1325: + LexManos: Fix NPEs in last commit. + +Build 1.8-11.14.1.1324: + LexManos: + Updated FML: + MinecraftForge/FML@c9cf3136c265b2e8e46eab102b2310a9312b8cfb New @Mod properties to define which environment to load the mod on. + clientSideOnly will only be loaded in the Client environment. + serverSideOnly will only be loaded in the Dedicated server environment. + Combine with acceptedMinecraftVersions to prevent users from loading the mod in the incorrect environment. + +Build 1.8-11.14.1.1323: + LexManos: + Updated FML: + MinecraftForge/FML@5eff40897545c9e6f597a202bc9e86c3b07761ad Filter more known libraries from potential mod canidates. + MinecraftForge/FML@feb4c436db27a249dd5190023edd38cb5884e90b Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. + MinecraftForge/FML@41e806fa950839bf901ebf9c18d0c632a7c5538c Fix double decoding of UTF8 characters in lang files. + +Build 1.8-11.14.1.1322: + LexManos: Fixed using items on the wrong block client side caused by iChuns eyeheight update. + +Build 1.8-11.14.1.1321: + ohai.iChun: Reimplement variable eyeHeight for players which was removed in the 1.7 to 1.8 port. + +Build 1.8-11.14.1.1320: + fry: Removed event bus call from the ModelLoader + +Build 1.8-11.14.1.1319: + matthewprenger: Add the ability to add prefixes and suffixes to the player's display name. + LexManos: Add safty to URL detection in chat. Closes #1712 + +Build 1.8-11.14.1.1318: + fry: Added a default white texture; Fixed B3DLoader crashing when the brush has empty texture specified + fry: RenderItem can now use baked quad color + +Build 1.8-11.14.1.1317: + Parker Young: + Added ATs for EnumFacing + + This publics the VALUES array and HORIZONTALS array in EnumFacing, thus giving modders access to these arrays, much like ForgeDirection had. + +Build 1.8-11.14.1.1316: + fry: Attributes.put (de)normalization now works as intended + +Build 1.8-11.14.1.1315: + LexManos: Hold a weak reference to the Minecraft fake player object. Closes #1705 + +Build 1.8-11.14.1.1314: + matthewprenger: Minor tweak to UsernameCache to also cache usernames of offline players. + +Build 1.8-11.14.1.1313: + fry: Updated FML + +Build 1.8-11.14.1.1312: + fry: ModelRotation.getMatrix() now returns the correct matrix; fixed the application of custom transformations to vanilla models; fixed application of transformations to B3D models; fixed the culling of rotated vanilla models + +Build 1.8-11.14.1.1311: + fry: Alternative models work once again + +Build 1.8-11.14.1.1310: + fry: Updated FML + +Build 1.8-11.14.1.1309: + fry: fix ModelLoader.setCustomModelResourceLocation not storing same item with different metadata values + +Build 1.8-11.14.1.1308: + LexManos: Fixed debugging Dedicated server in Forge Dev workspace. + LexManos: Fixed being kicked from the server while swimming. + fry: + fixed NPE during loading of B3D models without textures/brushes. + changed default B3D color to have full opacity. + fry: Reworked vanilla texture resolution, hopefully fixes NPE bug in FaceBakery + fry: made renderLayer ThreadLocal, now it should hold correct value for use inside custom baked models + LexManos: Try a maven mirrior to fix build issues. + +Build 1.7.10-10.13.2.1307-1.7.10: + LexManos: Fixed potential NPEs in Structure code caused by componenets not being able to load. + +Build 1.8-11.14.1.1306: + LexManos: Fixed potential NPEs in Structure code caused by componenets not being able to load. Closes #1686 + +Build 1.8-11.14.1.1305: + LexManos: Fixed InitMapGenEvent's fire order so values are used. And added OCEAN_MONUMENT type. Closes #1681 + LexManos: Fixed BlockBush and BlockCrops not respecting custom soils. Closes #1683 + +Build 1.8-11.14.1.1303: + fry: Restore binary backwards compatibility + +Build 1.8-11.14.1.1302: + fry: ModelBakeEvent now has ModelLoader as an argument instead of ModelBakery; Added various static hooks to ModelLoader to allow registering model-related information before it's needed (prevents file-not-found errors on first baking pass); ModelLoader waits until ModelBakeEvent is done before showing any missing model exceptions; It's now possible to define models completely in-code (as illustrated by ModelBakeEventDebug). + +Build 1.8-11.14.1.1301: + LexManos: Bump version to 11.14.1 for next development cycle. + +Build 1.8-11.14.0.1299: + fry: Fixed tracking of UV locking state. Closes #1679 + +Build 1.8-11.14.0.1298: + LexManos: Fixed ItemFrames not having a model. Closes #1678 + LexManos: Updated FML: MinecraftForge/FML@22c9656196dbbea8ed983663d536c3ca272d7282 Reset S->C CustomPayload data after Write, allowing the same packet to be written multiple times. + +Build 1.8-11.14.0.1297: + LexManos: Fixed domain support in ArmorMaterial texture name. Closes #1675 + LexManos: Fixed Buttons not dropping anything when broken. Closes #1676 + +Build 1.8-11.14.0.1296: + LexManos: + Initial update to 1.8, Super beta. Most rendering related hooks are out due to major changes in 1.8. + + Some notes: + Almost all int x, int y, int z parameters have been changed to BlockPos class + ForgeDirection has been removed, replaced by net.minecraft.util.EnumFacing. + All FML classes have moved from packet cpw.mods.fml to net.minecraftforge.fml + Fluid Rendering has been disabled for the time being, to be re-evaulated and a test mod created for it. + Minecraft now uses a Model based system for rendering blocks and Items. The intention is to expand the model format to better suit modder's needed once it is evaulated. + As such, The model loaders from Forge have been removed, to be replaced by expanding vanilla's model format. + Metadata has been extracted out in Minecraft to IBlockState, which holds a list of properties instead of magic number metadata. DO NOT listen to the fearmongering, you can do EVERYTHING with block states you could previously with metadata. + Stencil Bits are disabled entirely by for the main Display, Modders must enable and recreate the FrameBuffer if they wish to use Stencil Bits. + LexManos: Fix local variable conflict in Forge patch and latest MCP mappings. + LexManos: Fix fog colors, Closes #1524 + LexManos: Fix acedential inversion causing some tress to not have leaves. Closes #1522 + LexManos: Fix creative picking a CommandBlock minecart returning wrong item. Closes #1523 + LexManos: Fixed crash with caomparators due to wrong position. Closes #1512 + LexManos: Fix inverted logic preventing blocks from breaking. + LexManos: Fix Entityies not taking damage correctly. Closes #1511 + LexManos: Fix wrong state being passed to Block.getDrops + LexManos: Fix potential NPE in Block.isToolEffective + LexManos: Update RecipeSorter for new 1.8 recipies. + LexManos: Fix destroy particles not being added. Closes #1528 + LexManos: Fix debug screen not showing grey background. Closes #1529 + LexManos: Fix not being able to place blocks in liquids, and related issues. + LexManos: + Updated FML: + MinecraftForge/FML@36644e97714b46dbbb24416febdde1332a3e753c Finalize modded handshakes in the World tick thread. Prevents potential CMEs when login event takes to long to fire. + LexManos: Fix interacting with entities. + LexManos: Fixed Entity extended properties init order. Closes #1532 + LexManos: Fixed Entities not being able to climb ladders, Closes #1535 + LexManos: Fixed snow layers not being able to stack more then twice. Closes #1534 + LexManos: Fix BlockPane's connection detection. + LexManos: Fixed vanilla bug where top part of double plants would flicker a tifferent texture before dissapearing. + LexManos: Fix NPE with BlockSnapshots that caused items with TileEntities to be used up in creative mode. + LexManos: Fixed vanilla issue where exceptions in World tasks would not be logged. + LexManos: Fixed blocks not breaking properly when instantly destroied. + LexManos: Fix stickey pistons not retracting properly. + LexManos: + Updated FML: + MinecraftForge/FML@9c8ca4a4e3c4acc4980535e5c60da169b75a7810 Unlink banner block and item id. Mojang should of matched these up but they didn't -.- + MinecraftForge/FML@84a101f344b8fc21de1201fde717fbcbcba2aa79 Update Dev mcp mappings to 11-30 snapshot. + LexManos: Remove debug patch I left in. + LexManos: Fix finding of spawn location for mobs. Closes #1546 + LexManos: Only call blockBreak when block itself changes, not just meta. Fixes bottles poping out of brewing stands. + fry: Added model bake event (allows mods to insert custom baked models, much like TextureStitchEvent allows to load custom textures), ISmartBlock/ItemModel (ability form models to react to block/item states), Block.getExtendedState, support for unlisted properties in block states. Includes example implementation of http://imgur.com/a/FyyJX + LexManos: Added Explosion Start and Detonate events to control explosion. + LexManos: Fixed bug in ServerConfigurationManager.transferPlayerToDimension where it would send the old dimension's information. + LexManos: Add "sand" to the OreDictionary + LexManos: Cleanup deprecated code, and TODOs in OreDictionary. Down-typed things from ArrayList to List. Asking for the ores with a null stack will now throw an Exception. + LexManos: Added CreateSpawnPosition event. + LexManos: Add LivingHealEvent called from EntityLivingBase.heal() + LexManos: Added PotionBrewEvent.Pre/Post. To allow for modification and cancelation of Brewing. + LexManos: Add quartz_ore tool init, more mojang special casing -.- + LexManos: Changed ToolMaterial's repair material to ItemStack version to allow metadata sensitive versions. + LexManos: Improved Control of Enchantment.canApplyTogether() in Mod Enchantments, allowing both enchantments to determine if they can apply together. + LexManos: Expand PlayerWakupEvent to expose the three parameters passed into EntityPlayer.wakeUp. + LexManos: Unbind Shaped/Shapeless Ore Recipies from Array list to normal List. + LexManos: Fixed NPE thrown when brewing event is fired and not all slots are filled. Closes #1564 + LexManos: Make daylight sensor recipe use ore dictionary wooden slabs Closes #1565 + LexManos: Fix missed patch causing Dispensed Armor to go into the wrong slot. Closes #1560 + LexManos: Fixed log spam when breaking DoublePlants. Closes #1555 + LexManos: Fix texture stitcher not using all avalible spaces. + LexManos: Fix EnumHelper for new ArmorTexture argument. + LexManos: Untie ItemModelMesher from using Item Ids internally by implementing our own simple mechanics using Trove. + LexManos: Fix userdev for new BlockState change. + LexManos: MinecraftForge/FML@e3785c28930a218cf9374458c67c34e7fba17922 Ensure that EntitySpawn and OpenGUI packets are handled in the world thread. Also log all errors that are thrown in FutureTasks. + LexManos: Remove our changes to Stitcher slot allocation. + LexManos: Fix incorrect logic in world change clumping. + LexManos: MinecraftForge/FML@5a4d362293fe70e1421d1f22c4a195944731d6ba Finish removing marker in mapping entry names. FMLMissingMappingsEvent/FMLModIdMappingEvent should fire with correct names now. + jadran.kotnik: Fixed messages not being added to the chat history and ClientCommandHandler not being called when sleeping. + LexManos: Fix BlockSnapshots not firing correctly due to patch mixup in 1.8 update. Closes #1591 + palechip: Fix Scoreboard rendering for the sidebar. + LexManos: Removed exclusion of white stained glass recipes in ore dictionary. + LexManos: Added chests to the ore dictionary. + LexManos: Fix crafting of non-oak fences/gates. + LexManos: Fix MC-30864 (sending web links in chat) + LexManos: Fix recipies for stone variants. + Chicken-Bones: Allow blocks to render in multiple layers + lumien231: Fixes #1603: Moving the start of the update thread to the pre init of the forge mod container + LexManos: Fix potential NPE when loading a single player world where you were saved in a unloaded dimension. Closes #1575 + LexManos: Call World.init from DimensionManager.initDimension Closes #1551 + LexManos: Made Chunk.fillBlock respect TileEntity.shouldRefresh. + LexManos: Fix value passed for Item.getModel useRemaining argument. Closes #1623 + LexManos: Silently eat exceptions when getting a TE's rendering bounding box, this 'fixes' Bukkit servers screwing up world data and causing clients to crash. + jadran.kotnik: Fixed NPE when canceling ClientChatRecievedEvent. Fixes #1644 + Parker Young: Re-enabled Icon setting for Fluids + LexManos: + Updated FML: + MinecraftForge/FML@a55e4124531119f1c9c023cff74cfa09b49ef0e0 Save the mod list of players in their NetworkDispatcher (Make it accessable for mods) + MinecraftForge/FML@69d479d46ae658c5a5c2c00081be3df38e38c748 Fixed getEffectiveSide() for Netty Server threads + MinecraftForge/FML@0f9a33cf14165ddd424a7d82c2178cf5854bf32f Exclude only log4j2 queue from class loader + jadran.kotnik: Don't skip the first line when rendering (debug) text. + fry: + Added model loader registry + + Entry point: ModelLoaderRegistry + loader interface: ICustomModelLoader + custom model: IModel + + ModelLoader is responsible for splicing into vanilla model system. + (you probably don't need to use it directly) + + Interop with vanilla models isn't great yet + (vanilla models can't refer to custom ones as parents), will improve in + the future. + + Includes loader for B3D models, with animation support + (net.minecraftforge.client.model.b3d). + Blender export plugin with compatible coordinate system: + https://github.com/RainWarrior/B3DExport + + OBJ loader is being written, will be included at some point in the + future. For now you can convert OBJ to B3D via blender, or wait. + techStackLp: + Closes #1552 + + Set the destination block the to the fluid. + In the previous code the destination block was still Air and would would + cause a crash because air doesn't have a property for LEVEL + fry: Removed leftover debug messages + LexManos: + Updated FML: + MinecraftForge/FML@d00feb58c762b0bbc506d79faf1ce40bc96732e9 Remove debug code that was causing console spam in Forge. + MinecraftForge/FML@1de3bf733aef754f15de55006b1750376871feb0 Fix FML's package for net.miencraftforge on maven. Fixes uploading of new builds. Note: 1.7.10 builds are bug fixes only while FML/Forge for 1.8 stabelizes. + MinecraftForge/FML@05ecefb53857ecc1dc52d4a577ed593c26da9659 Update to ASM5 for Java 8 support + MinecraftForge/FML@1112c455b9758c38eab385f48578bad17c0180f9 Merge pull request #595 from Grinch/master + MinecraftForge/FML@9c3013e02af1bd2f724d34a30e0b880b6e131645 Merge remote-tracking branch 'origin/1.8' + +Build 1.8-11.14.0.1295-1.8: + fry: Removed leftover debug messages + +Build 1.8-11.14.0.1294-1.8: + techStackLp: + Closes #1552 + + Set the destination block the to the fluid. + In the previous code the destination block was still Air and would would + cause a crash because air doesn't have a property for LEVEL + +Build 1.8-11.14.0.1293-1.8: + jadran.kotnik: Don't skip the first line when rendering (debug) text. + +Build 1.8-11.14.0.1292-1.8: + fry: + Added model loader registry + + Entry point: ModelLoaderRegistry + loader interface: ICustomModelLoader + custom model: IModel + + ModelLoader is responsible for splicing into vanilla model system. + (you probably don't need to use it directly) + + Interop with vanilla models isn't great yet + (vanilla models can't refer to custom ones as parents), will improve in + the future. + + Includes loader for B3D models, with animation support + (net.minecraftforge.client.model.b3d). + Blender export plugin with compatible coordinate system: + https://github.com/RainWarrior/B3DExport + + OBJ loader is being written, will be included at some point in the + future. For now you can convert OBJ to B3D via blender, or wait. + +Build 1.7.10-10.13.2.1291: + lukastenbrink: + Fix fluid tanks incorrectly reading NBT when empty + + If the Empty flag was set, the tank would not correctly read the data, keeping the outdated FluidStack instead. This is especially relevant with updatable TileFluidHandler TEs. + +Build 1.8-11.14.0.1290-1.8: + LexManos: + Updated FML: + MinecraftForge/FML@a55e4124531119f1c9c023cff74cfa09b49ef0e0 Save the mod list of players in their NetworkDispatcher (Make it accessable for mods) + MinecraftForge/FML@69d479d46ae658c5a5c2c00081be3df38e38c748 Fixed getEffectiveSide() for Netty Server threads + MinecraftForge/FML@0f9a33cf14165ddd424a7d82c2178cf5854bf32f Exclude only log4j2 queue from class loader + +Build 1.8-11.14.0.1289-1.8: + Parker Young: Re-enabled Icon setting for Fluids + +Build 1.8-11.14.0.1288-1.8: + jadran.kotnik: Fixed NPE when canceling ClientChatRecievedEvent. Fixes #1644 + +Build 1.8-11.14.0.1287-1.8: + LexManos: Silently eat exceptions when getting a TE's rendering bounding box, this 'fixes' Bukkit servers screwing up world data and causing clients to crash. + +Build 1.7.10-10.13.2.1286: + asiekierka: fix shouldRefresh being too broad in tile entity update + +Build 1.8-11.14.0.1285-1.8: + Chicken-Bones: Allow blocks to render in multiple layers + +Build 1.7.10-10.13.2.1284: + lumien231: Fix versionCheck config option + +Build 1.7.10-10.13.2.1283: + CovertJaguar: Bulk Chunk Data packets should also check TileEntity.shouldRefresh(). + +Build 1.8-11.14.0.1282-1.8: + LexManos: Fix potential NPE when loading a single player world where you were saved in a unloaded dimension. Closes #1575 + LexManos: Call World.init from DimensionManager.initDimension Closes #1551 + LexManos: Made Chunk.fillBlock respect TileEntity.shouldRefresh. + LexManos: Fix value passed for Item.getModel useRemaining argument. Closes #1623 + +Build 1.8-11.14.0.1281-1.8: + lumien231: Fixes #1603: Moving the start of the update thread to the pre init of the forge mod container + +Build 1.8-11.14.0.1280-1.8: + LexManos: Fix recipies for stone variants. + +Build 1.8-11.14.0.1279-1.8: + palechip: Fix Scoreboard rendering for the sidebar. + +Build 1.8-11.14.0.1278-1.8: + LexManos: Removed exclusion of white stained glass recipes in ore dictionary. + LexManos: Added chests to the ore dictionary. + LexManos: Fix crafting of non-oak fences/gates. + LexManos: Fix MC-30864 (sending web links in chat) + +Build 1.7.10-10.13.2.1277: + mattmess1221: Fix MC-30864 (sending web links in chat) + +Build 1.7.10-10.13.2.1276: + clashsoft: Fix Stained Glass pane rendering issues + +Build 1.7.10-10.13.2.1275: + Kittychanley: Removed exclusion of white stained glass recipes in ore dictionary. Closes #1502 & #1481 + +Build 1.8-11.14.0.1274-1.8: + LexManos: Fix BlockSnapshots not firing correctly due to patch mixup in 1.8 update. Closes #1591 + +Build 1.8-11.14.0.1273-1.8: + jadran.kotnik: Fixed messages not being added to the chat history and ClientCommandHandler not being called when sleeping. + +Build 1.7.10-10.13.2.1272: + jadran.kotnik: Fixed messages not being added to the chat history and ClientCommandHandler not being called when sleeping. + +Build 1.8-11.14.0.1271-1.8: + LexManos: Fix incorrect logic in world change clumping. + LexManos: MinecraftForge/FML@5a4d362293fe70e1421d1f22c4a195944731d6ba Finish removing marker in mapping entry names. FMLMissingMappingsEvent/FMLModIdMappingEvent should fire with correct names now. + +Build 1.7.10-10.13.2.1270: + LexManos: Remove our changes to Stitcher slot allocation. + LexManos: Fix incorrect logic in world change clumping. + +Build 1.8-11.14.0.1269-1.8: + LexManos: MinecraftForge/FML@e3785c28930a218cf9374458c67c34e7fba17922 Ensure that EntitySpawn and OpenGUI packets are handled in the world thread. Also log all errors that are thrown in FutureTasks. + LexManos: Remove our changes to Stitcher slot allocation. + +Build 1.8-11.14.0.1268-1.8: + LexManos: Fix userdev for new BlockState change. + +Build 1.8-11.14.0.1267-1.8: + fry: Added model bake event (allows mods to insert custom baked models, much like TextureStitchEvent allows to load custom textures), ISmartBlock/ItemModel (ability form models to react to block/item states), Block.getExtendedState, support for unlisted properties in block states. Includes example implementation of http://imgur.com/a/FyyJX + +Build 1.8-11.14.0.1266-1.8: + LexManos: Untie ItemModelMesher from using Item Ids internally by implementing our own simple mechanics using Trove. + +Build 1.8-11.14.0.1265-1.8: + LexManos: Fix texture stitcher not using all avalible spaces. + LexManos: Fix EnumHelper for new ArmorTexture argument. + +Build 1.7.10-10.13.2.1264: + LexManos: Fix texture stitcher not using all avalible spaces. Closes #1557 + +Build 1.7.10-10.13.2.1263: + LexManos: Fixed NPE thrown when brewing event is fired and not all slots are filled. + +Build 1.8-11.14.0.1262-1.8: + LexManos: Fixed NPE thrown when brewing event is fired and not all slots are filled. Closes #1564 + LexManos: Make daylight sensor recipe use ore dictionary wooden slabs Closes #1565 + LexManos: Fix missed patch causing Dispensed Armor to go into the wrong slot. Closes #1560 + LexManos: Fixed log spam when breaking DoublePlants. Closes #1555 + +Build 1.8-11.14.0.1261-1.8: + LexManos: Unbind Shaped/Shapeless Ore Recipies from Array list to normal List. + +Build 1.8-11.14.0.1259-1.8: + LexManos: Add quartz_ore tool init, more mojang special casing -.- + LexManos: Changed ToolMaterial's repair material to ItemStack version to allow metadata sensitive versions. + LexManos: Improved Control of Enchantment.canApplyTogether() in Mod Enchantments, allowing both enchantments to determine if they can apply together. + LexManos: Expand PlayerWakupEvent to expose the three parameters passed into EntityPlayer.wakeUp. + +Build 1.7.10-10.13.2.1258: + LexManos: Add quartz_ore tool init, more mojang special casing -.- Closes #1333 and Closes #1335 + LexManos: Fix invalid argument being passed to Block.isNormalCube from World.updateNeighbors. Closes #1339 and Closes #1346 + LexManos: Changed ToolMaterial's repair material to ItemStack version to allow metadata sensitive versions. Closes #1355 + LexManos: Improved Control of Enchantment.canApplyTogether() in Mod Enchantments, allowing both enchantments to determine if they can apply together. Closes #1434 + LexManos: Expand PlayerWakupEvent to expose the three parameters passed into EntityPlayer.wakeUp. Closes #1486 + +Build 1.8-11.14.0.1257-1.8: + LexManos: Fixed bug in ServerConfigurationManager.transferPlayerToDimension where it would send the old dimension's information. + LexManos: Add "sand" to the OreDictionary + LexManos: Cleanup deprecated code, and TODOs in OreDictionary. Down-typed things from ArrayList to List. Asking for the ores with a null stack will now throw an Exception. + LexManos: Added CreateSpawnPosition event. + LexManos: Add LivingHealEvent called from EntityLivingBase.heal() + LexManos: Added PotionBrewEvent.Pre/Post. To allow for modification and cancelation of Brewing. + +Build 1.7.10-10.13.2.1256: + LexManos: Fixed bug in ServerConfigurationManager.transferPlayerToDimension where it would send the old dimension's information. Closes #1548 + LexManos: Add "sand" to the OreDictionary Closes #1487 + LexManos: Added CreateSpawnPosition event Closes #1053 + LexManos: Add LivingHealEvent called from EntityLivingBase.heal() Closes #1282 + LexManos: Added PotionBrewEvent.Pre/Post. To allow for modification and cancelation of Brewing. Closes #1248 + +Build 1.8-11.14.0.1255-1.8: + LexManos: Added Explosion Start and Detonate events to control explosion. + +Build 1.7.10-10.13.2.1254: + LexManos: Added Explosion Start and Detonate events to control explosion. Closes #1469 + +Build 1.7.10-10.13.2.1253: + draco18s: + Update RenderBlockFluid.java + + Added tessellator calls to render the block's back faces, so that the liquid properly renders when the player is immersed in the fluid. + +Build 1.8-11.14.0.1252-1.8: + LexManos: Fix finding of spawn location for mobs. Closes #1546 + LexManos: Only call blockBreak when block itself changes, not just meta. Fixes bottles poping out of brewing stands. + +Build 1.8-11.14.0.1251-1.8: + LexManos: + Updated FML: + MinecraftForge/FML@9c8ca4a4e3c4acc4980535e5c60da169b75a7810 Unlink banner block and item id. Mojang should of matched these up but they didn't -.- + MinecraftForge/FML@84a101f344b8fc21de1201fde717fbcbcba2aa79 Update Dev mcp mappings to 11-30 snapshot. + LexManos: Remove debug patch I left in. + +Build 1.8-11.14.0.1249-1.8: + LexManos: Fix stickey pistons not retracting properly. + +Build 1.8-11.14.0.1248-1.8: + LexManos: Fixed vanilla bug where top part of double plants would flicker a tifferent texture before dissapearing. + LexManos: Fix NPE with BlockSnapshots that caused items with TileEntities to be used up in creative mode. + LexManos: Fixed vanilla issue where exceptions in World tasks would not be logged. + LexManos: Fixed blocks not breaking properly when instantly destroied. + +Build 1.8-11.14.0.1247-1.8: + LexManos: Fix BlockPane's connection detection. + +Build 1.8-11.14.0.1246-1.8: + LexManos: Fixed Entity extended properties init order. Closes #1532 + LexManos: Fixed Entities not being able to climb ladders, Closes #1535 + LexManos: Fixed snow layers not being able to stack more then twice. Closes #1534 + +Build 1.8-11.14.0.1245-1.8: + LexManos: Fix interacting with entities. + +Build 1.8-11.14.0.1244-1.8: + LexManos: Fix debug screen not showing grey background. Closes #1529 + LexManos: Fix not being able to place blocks in liquids, and related issues. + LexManos: + Updated FML: + MinecraftForge/FML@36644e97714b46dbbb24416febdde1332a3e753c Finalize modded handshakes in the World tick thread. Prevents potential CMEs when login event takes to long to fire. + +Build 1.8-11.14.0.1243-1.8: + LexManos: Fix potential NPE in Block.isToolEffective + LexManos: Update RecipeSorter for new 1.8 recipies. + LexManos: Fix destroy particles not being added. Closes #1528 + +Build 1.8-11.14.0.1242-1.8: + LexManos: Fixed crash with caomparators due to wrong position. Closes #1512 + LexManos: Fix inverted logic preventing blocks from breaking. + LexManos: Fix Entityies not taking damage correctly. Closes #1511 + LexManos: Fix wrong state being passed to Block.getDrops + +Build 1.8-11.14.0.1241-1.8: + LexManos: Fix fog colors, Closes #1524 + LexManos: Fix acedential inversion causing some tress to not have leaves. Closes #1522 + LexManos: Fix creative picking a CommandBlock minecart returning wrong item. Closes #1523 + +Build 1.7.10-10.13.2.1240: + LexManos: Fix creative picking a CommandBlock minecart returning wrong item. Closes #1523 + +Build 1.8-11.14.0.1239-1.8: + LexManos: Fix local variable conflict in Forge patch and latest MCP mappings. + +Build 1.7.10-10.13.2.1236: + xcompwiz: + Fixes client-side fake rain + + Changes the updateWeather function in WorldServer to only send the + weather info to players in the correct dimension, rather than all + players on the server. This is what causes the client-side rain, as the + client believes that it has started raining locally, rather than in + another dimension. + +Build 1.7.10-10.13.2.1235: + oliver.kahrmann: + Modify WavefrontObject to allow '.' in group object names + + Blender names objects with .001 ir .002 when separating vertices or duplicating objects and the importer would crash on them. This fixes the regex to allow dots in the name. + +Build 1.7.10-10.13.2.1234: + LexManos: Player sensitive version of Block.getPickBlock Closes #1348 + +Build 1.7.10-10.13.2.1233: + LexManos: Fix slots being black due to vanilla blending leakage Forge fixes. Closes #1325 & #1242 + +Build 1.7.10-10.13.2.1232: + luacs1998: + Create CONTRIBUTING.md + + Simple file (which github will show for those making PRs) containing guidelines for making PRs. + Feel free to comment if you want/need anything added. I can pull the same thing to FML too if you'd like, Lex. + luacs1998: + Update CONTRIBUTING.md + + Add link to wiki page on contributing + +Build 1.7.10-10.13.2.1231: + Adubbz: Fixed desert list initialization. Fixes #1447 + +Build 1.7.10-10.13.2.1230: + LexManos: Fix logic error in Blodd's Snapshot capture that caused blocks to not be updated to the client. Closes #1451 + LexManos: Bump version for new RB. + +Build 1.7.10-10.13.1.1229: + Abrar Syed: implemented crowdin support + matthewprenger: Add username cache for determining a player's last known username + azanor1: + Fix for biome weights under 10 + + This solves the problem where custom mod biomes with weights under 10 + not being generated in the world. + + Cleaned up the code and made the patch smaller + +Build 1.7.10-10.13.1.1226: + LexManos: Compleetly disable stencil bits unless told not to by using the -Dforge.forceDisplayStencil=true flag. Should solve the 'menu in bottom corner' issue with Intel Integrated graphics cards. + +Build 1.7.10-10.13.1.1225: + Parker Young: Added PlayerWakeUpEvent + +Build 1.7.10-10.13.1.1224: + Adubbz: Fixed biome weights not working with non multiples of 10 + +Build 1.7.10-10.13.1.1223: + LexManos: Fix vanilla lighting issue and blending issues in achievements gui. Closes #1445 + +Build 1.7.10-10.13.1.1222: + LexManos: MinecraftForge/FML@d00feb58c762b0bbc506d79faf1ce40bc96732e9 Remove debug code that was causing console spam in Forge. + +Build 1.7.10-10.13.1.1221: + LexManos: Disable by default the Display Stencil bits. Keep FBO bits. Acording to Mumfery and ChickenBones, it should not be nessasary and should solve the 1/4 main menu issue. Use -Dforge.forceDisplayStencil=true to enable old behavior. + +Build 1.7.10-10.13.1.1220: + jadran.kotnik: Prevent client only commands from bleeding through to the server. + +Build 1.7.10-10.13.1.1219: + bloodshot: + Added PlaceEvent and MultiPlaceEvent which fires before placing a block. + + Before calling "ItemStack.tryPlaceItemInWorld", a recording flag is turned on for + setBlock to capture a blocksnapshot for each block that attempts to be placed. + + If 1 block is captured, a "BlockEvent.PlaceEvent" is fired to notify mods. + If 2 or more blocks are captured, a "BlockEvent.PlaceEvent" is fired first with the first block + captured followed by a "BlockEvent.MultiPlaceEvent" with all captured blocks. This extra event + is required for items that have the ability to place 2 or more blocks such as a BlockBed. + + If either event is cancelled, the recorded block snapshot(s), item stacksize, and item meta will + revert back to the captured snapshot(s). + If the events are not cancelled, a notification will be sent to clients and block physics will be updated. + + What this means for mods is Forge will be able to capture all player block placement automatically and fire + a PlaceEvent and/or MultiPlaceEvent. + If for whatever reason your mod does not use the standard placement methods then you will need to fire the + appropriate placement events in order to notify mods/servers. + + This commit also includes a new utility class called BlockSnapshot which is serializable. This new class is used in conjunction with + both PlaceEvent and MultiPlaceEvent in order to record a snapshot of block space before it is altered. This + allows us to restore the block(s) if an event is cancelled. The class also provides the ability to restore a snapshot + to any location using the restoreToLocation method. This should be helpful to many mods that are looking to be able + to capture block data then restore it to back to any location required. + +Build 1.7.10-10.13.1.1217: + cpw: + GIANT FML UPDATE! Bump forge revision number, and fix patches for ItemStack changes. More to come on this branch I expect. + + MinecraftForge/FML@7c5cf219042581545b6073de4e947448ffa10879 Implement STDOUT/STDERR redirection. + MinecraftForge/FML@bc78e31cb7ad4eda6e5faa173cd6b21e70a2c444 added support for \n in tooltip strings added \n test tooltip localization fixed int/double conversion error in slider entry added test slider scenario that highlighted conversion error + MinecraftForge/FML@a2908e5c596bb5502bf455d468d2b1ead0520f55 Clean up a bunch of compiler warnings. + MinecraftForge/FML@7f67523d870ae150071c67b002597542eb206725 Update realms to 1.3.2 + MinecraftForge/FML@73f23c24b85240458f352f248e885684aaff4743 Merge branch 'std-redir' of github.com:Emberwalker/FML + MinecraftForge/FML@1c6b25df740a64c94d9ba05dd7e4412515abf5bb If an IO exception comes from the datawatcher, spew it all over the console don't discard it silently. Should stop pixelmon blaming forge for their mistakes. + MinecraftForge/FML@e77da9eb2f5c58a494ed100dd4c1dd1a0c341dbf And fix the read side too, incase someone is trying to bitbang and failing. + MinecraftForge/FML@305d8950c9332c7a7f290db05e6f18ef328016e2 Make LogContext optional. This can be useful for debugging mod issues, but Apache's implementation in log4j2 is responsible for a very significant % of the overall runtime. Quite frankly this is shockingly bad performance from what is supposed to be a high performance logging framework. Anyway, until we can figure out if we can fix it, we're turning it off by default. + MinecraftForge/FML@bdfca1c8ed463a6053526c7a46a990007711e3d0 Make more noise when people screw up mod downloading and put .jar.zip in their mod folders. + MinecraftForge/FML@21084941127fc882d9968316a8f0669531e484df Add a custom version range factory method. Should hush skyboy's complaints. Closes #486 + MinecraftForge/FML@7c1e6aaa40704001231e602ceaedfa21a5df1edf Add a delegate to every item and block. this should help with renaming fun stuffs. Also, fix all the tabs from my previous commits. *sigh* + MinecraftForge/FML@61fcb4df06dc968fcc31d3e4e524e574acfdbb3b Tweak Itemstack patch to always delegate to the method call. Set the field, so it's in sync. + MinecraftForge/FML@eb8c5ab146f2eb3ad3833d40607da97831278ffb Fix nested directory for language resources. Closes MinecraftForge#1264 + MinecraftForge/FML@7c05e5f70d5387512d0bee33ef99510ee5aac739 Default collections, so that we don't crash if useDependencyInfo is true. Closes #485 + MinecraftForge/FML@9729fe23326a3d4f6b03e60b5cdaf78a484b3657 Kill net.minecraft.src warning. It hasn't served a purpose in a long time now. Closes #313 + MinecraftForge/FML@21e875ef22eef6068ccd6df1bd71cf58cba48eed AllowPlayerLogins only after the server has completed the core init tasks. Closes #372 + MinecraftForge/FML@46cfeade80ae60ad2d8cdb40c5fdfdaeeaf16d00 Add a constructor to CustomModLoadingDisplayException. Closes #387 + MinecraftForge/FML@a6eab2683a15a0cceca7a0ded6095b746cdd017b Update README.txt + MinecraftForge/FML@f75838461cf6d9c5010cbfd2d9ef5ceec03268d7 Last part is the itemstack transformer. Itemstacks should now only be loosely coupled with the items within. + MinecraftForge/FML@51f24e9e6d1bee371cf23cdfd0071de7c5175417 First draft of add alias. It is probably not properly persistent atm. + MinecraftForge/FML@2a4c6424709b20ce1e9bda0d85ce7fac47d157c2 Finally fix stupid NPE error caused by FML trying to parse the super of Object in IDEA envs. + MinecraftForge/FML@c1b1417ee168523154a0edae68c3180814eab1c7 FML now supports passing a json formatted modlist as an argument, as well as a comma separated argument list. These facilitate modpacks mostly, by meaning you don't need to duplicate mods. The modlist is arranged in the maven style, with mods referenced maven-like. + MinecraftForge/FML@3d42cda2a2cf5b24e7a25537d883260857b2107a Build.Gradle Patch + MinecraftForge/FML@20c7add8455cd16a4551ed13336a9ad4f9770cd1 Merge pull request #484 from bspkrs/master + MinecraftForge/FML@26ed4b992eb6341d52d12fb6735415ab8e3c501d Clear button list on FML fatal error screens. The hidden cancel button should not be there. Closes #497 + MinecraftForge/FML@ebe4f5c5e297d5d59ce57138810627a9c7a1b412 Merge pull request #494 from AntonBoch1244/patch-1 + MinecraftForge/FML@ad0da05f5c78d7f3c35a331e993dd6e679fc7ac9 Fix the ItemStack transformer to find the method and field so it works with srg and mcp naming. + MinecraftForge/FML@65d380181a84d35a78791e1bc3c7712cd90506f6 Extend timeout for client to 5 seconds. Should fix Forge #1322 + MinecraftForge/FML@45486a0b6dfca65c4d1dd23176d4c9d13d46b6f5 Fix almost invisible NPE in TerminalTransformer when loading a non-existant class + MinecraftForge/FML@13da3efce07653732971837709ccf4de7e4c5c8e Allow a clean way to exit the game without big ugly warnings, but with logging information available if needed. Closes #496 + MinecraftForge/FML@fda305edfea15ba2015cede72327703f273f74e3 Some more tidying up of the exit handling + MinecraftForge/FML@b087f60c3379d0767247e51cbc3f7c631fe97a08 More cleanup of exit handling, also add a couple more noise classes to the list of things ignored. + MinecraftForge/FML@d6358a466b4614cfc35b403d756fe3ef550ebf50 Cleanup override warnings + MinecraftForge/FML@af7a58b9e50dbacf63cf4b5009abc52301609e1f Update to legacylauncher 1.10 and asm 5.0.3 + MinecraftForge/FML@e6d00440a612c235013f3f92f1756811139a6de0 ItemStack swapping + MinecraftForge/FML@8597e45a0e417948db483006aa54e899f28b05ac Fix NPE from a boolean + MinecraftForge/FML@b9b9daa8a9d1cac8550561f31f118589abc0c30a Fix ups from feedback. + MinecraftForge/FML@d89165021f33fbffb4563d86b30bd261506c6ea6 Mark the promise a success in the outbound handler. + MinecraftForge/FML@2e5ccf7988385d38b964c615776f23a1718f5c27 Update for launchwrapper 1.11. Fixes java 6 compatibility. + MinecraftForge/FML@641250d8536bad3af5a036b70dae94097176b420 Fix java 8u20. Closes #501 and a bunch of other bugs too. + MinecraftForge/FML@292be72639feded03ced26d9a06a98159f7a95b7 Allow client handshake to be reset by server to support BungeeCord. + MinecraftForge/FML@092873fbe5baaee53bee67d26d2fc6d3d003f095 Merge branch 'bungeecord' of github.com:bloodmc/FML + MinecraftForge/FML@134f2f8e8865a91292386a3738bb45bad0477a4b Fix bug with entityspawn - if the entity doesn't extend livingbase, it fails to write a headyaw byte, and everything will be derped for that packet. + MinecraftForge/FML@4852de81e02e2b6c6d006abe20d8497499fdf51f Wrap the server description box a little bit shorter. Stops the overlapping. Closes #489 + cpw: + MinecraftForge/FML@4ce3e73bfe36c02b10f504f93eff1bc94d640e32 Add overloaded version of SimpleNetworkWrapper#registerMessage that takes the MessageHandler instance directly, allowing to specify the same handler for multiple messages. + MinecraftForge/FML@cbe2ccbda461ec0ecf4d776fcd19ab31930cc3f1 Add in ModType to the jar manifest. If it's present, and doesn't have value "FML" it will be skipped from the modloading cycle. This should let liteloader mods have a .jar extension. + MinecraftForge/FML@37cf0174fc62a842d132b2c2cc31e477acfba205 OK, lets make that a csv list. It'll let you be liteloader and fml in one jar file! + MinecraftForge/FML@0475b15eb1a7c35bf4959f1af40606e6ee8a9d03 Change the mods and modListFile argument handling a bit. Other tweakers will get a chance at looking at them now - they're only removed right before launch. + MinecraftForge/FML@abeac06a2e9bf8825b058fa35291165b4d1f1fb3 Two new features. ModLists can have a "parent" mod list. Circularity will result in a crash, so be careful. Mods specified in a child will override ones from a parent (using the maven group:name:classifier triple to identify - ignoring the version component) + MinecraftForge/FML@7fcfedcfef9b5fd85cd1c17aa2013fca1bacd871 Canonicalized file paths in modListFile handling with the minecraftDirectory. + MinecraftForge/FML@633fce19d4b367aed56d79e916f17296842f675c Make Keyevent also fire for key releases + MinecraftForge/FML@57ba2339b630afa22c0fdf060bf28edbf7b34d0f Merge branch 'keyup-event' of github.com:diesieben07/FML + MinecraftForge/FML@1ff048062c7f122731619258a9e5a68a6111d5dd Merge branch 'simple-netw-improve' of github.com:diesieben07/FML + cpw: MinecraftForge/FML@dc02d56195606d3ba2f1c5036fc8c0ddb67c843f Fix derp with ModType annotation. mods should load again now.. + diesieben07: Added Item#isBeaconpayment + cpw: + MinecraftForge/FML@7ab69aff2e19b349e457c1b5fcab8b3b01d22af2 Clean up import + MinecraftForge/FML@c5a90bd456230b201522c268dd9bc5e80a0b57be Is vanilla possible with this mod load, side tests. + MinecraftForge/FML@cad11f3165505e6d725411a9fc2c2ee8362f5827 Allow injecting alternative container types. This is the core support code for allowing sponge plugins! + michafla: + check for IFluidBlock (in addition to Material.liquid) when + determining render height so that non-liquids (gases) render correctly + kat.swales: Fixed Clientside GameProfile UUID being null on offline mode + cpw: + MinecraftForge/FML@63b64482e6dd4c3e2226ec002ceee549045c35ed Add jsr305 dev-time dependancy for Nullable/Nonnull annotations. Unneeded at runtime. + MinecraftForge/FML@5365f5ea3e90ec85552bdb7f1f1237c51b4ea493 Add IEventExceptionHandler for EventBus to allow special handeling exceptions that are fired while running an event. Events now track what 'phase' they are in during the execution process. Each EventPriority is a 'phase'. An exception is thrown if the event attempts to set its phase to a previous one. + +Build 1.7.10-10.13.1.1216-new: + kat.swales: Fixed Clientside GameProfile UUID being null on offline mode + +Build 1.7.10-10.13.1.1215-new: + michafla: + check for IFluidBlock (in addition to Material.liquid) when + determining render height so that non-liquids (gases) render correctly + +Build 1.7.10-10.13.1.1214-new: + cpw: + MinecraftForge/FML@7ab69aff2e19b349e457c1b5fcab8b3b01d22af2 Clean up import + MinecraftForge/FML@c5a90bd456230b201522c268dd9bc5e80a0b57be Is vanilla possible with this mod load, side tests. + MinecraftForge/FML@cad11f3165505e6d725411a9fc2c2ee8362f5827 Allow injecting alternative container types. This is the core support code for allowing sponge plugins! + +Build 1.7.10-10.13.1.1213-new: + diesieben07: Added Item#isBeaconpayment + +Build 1.7.10-10.13.1.1212-new: + cpw: MinecraftForge/FML@dc02d56195606d3ba2f1c5036fc8c0ddb67c843f Fix derp with ModType annotation. mods should load again now.. + +Build 1.7.10-10.13.1.1211-new: + cpw: + MinecraftForge/FML@4ce3e73bfe36c02b10f504f93eff1bc94d640e32 Add overloaded version of SimpleNetworkWrapper#registerMessage that takes the MessageHandler instance directly, allowing to specify the same handler for multiple messages. + MinecraftForge/FML@cbe2ccbda461ec0ecf4d776fcd19ab31930cc3f1 Add in ModType to the jar manifest. If it's present, and doesn't have value "FML" it will be skipped from the modloading cycle. This should let liteloader mods have a .jar extension. + MinecraftForge/FML@37cf0174fc62a842d132b2c2cc31e477acfba205 OK, lets make that a csv list. It'll let you be liteloader and fml in one jar file! + MinecraftForge/FML@0475b15eb1a7c35bf4959f1af40606e6ee8a9d03 Change the mods and modListFile argument handling a bit. Other tweakers will get a chance at looking at them now - they're only removed right before launch. + MinecraftForge/FML@abeac06a2e9bf8825b058fa35291165b4d1f1fb3 Two new features. ModLists can have a "parent" mod list. Circularity will result in a crash, so be careful. Mods specified in a child will override ones from a parent (using the maven group:name:classifier triple to identify - ignoring the version component) + MinecraftForge/FML@7fcfedcfef9b5fd85cd1c17aa2013fca1bacd871 Canonicalized file paths in modListFile handling with the minecraftDirectory. + MinecraftForge/FML@633fce19d4b367aed56d79e916f17296842f675c Make Keyevent also fire for key releases + MinecraftForge/FML@57ba2339b630afa22c0fdf060bf28edbf7b34d0f Merge branch 'keyup-event' of github.com:diesieben07/FML + MinecraftForge/FML@1ff048062c7f122731619258a9e5a68a6111d5dd Merge branch 'simple-netw-improve' of github.com:diesieben07/FML + +Build 1.7.10-10.13.0.1208: + zlyfire.martin: + Update README.txt + + Add in reference to running setupDecompWorkspace to get decompiled classes + +Build 1.7.10-10.13.0.1207: + bernhard.bonigl: Write the correct default value for StringList comments in the config + +Build 1.7.10-10.13.0.1206: + LexManos: Fix AIOOB in BiomeDictionary. Closes #1326 + +Build 1.7.10-10.13.0.1205: + cpw: + Attempt to properly resolve this daft metadata and TE nonsense. This might be mod impacting, if you maintain a reference to a TE via neighbour update calls - you + might see two TEs for a single setblock where previously you saw one. This is a phantom TE being created by badly written neighbour triggers - I'm looking at you + redstone. + + Anyway, with luck, this'll close a slew of bugs across Forge, IC2, MFR, TE, RC. Yeah, fun times. Thanks to LexManos, skyboy and KingLemming for helping figure this + issue out. Quite frankly, from now on, issues with phantom TEs will be mods behaving badly. Modders will need to adapt. + +Build 1.7.10-10.13.0.1204: + LexManos: Fix invalid math in GuiContainerCreative. + +Build 1.7.10-10.13.0.1203: + porcariadagata: Add ItemStack sensitive version of getItemEnchantability + +Build 1.7.10-10.13.0.1202: + LexManos: Add ability for creative tabs that have search bars to customize the text box's width, and prevent the default set of enchanted books from being displayed in those tabs. Closes #1303 Closes #1301 + +Build 1.7.10-10.13.0.1201: + abab9579: + Skylight Hooks for Minecraft Forge + + Mainly for solar/lunar eclipse. + +Build 1.7.10-10.13.0.1200: + JeanGlassmaker: Adds getLocalizedName and getUnlocalizedName to FluidStack + +Build 1.7.10-10.13.0.1199: + vazkii: Fixed items with more than 2 render passes rendering weird in first person + LexManos: Fix patch screwup in Skyboy's Fishing PR -.- + LexManos: Fix metadata for every permutation -.- Closes #1294 + t.tomkins: + Legacy Liquid Load Fix + + nbt.getString("FluidName") no longer returns null, it returns an empty string. + + This patch allows legacy liquids to be resolved once again. + +Build 1.7.10-10.13.0.1198: + DemoXin: + * Added AT for ContainerRepair.stackSizeToBeUsedInRepair (Now public) + * Added ability to AnvilUpdateEvent to alter stackSizeToBeUsedInRepair (vanilla behavior is now reproducable) + * Added AnvilRepairEvent, fired when the player removes an ItemStack from the output slot of ContainerRepair, and allows the chance to damage the anvil to be altered. + +Build 1.7.10-10.13.0.1197: + skyboy026: Add FishingHooks + skyboy026: Update FishingHooks + skyboy026: Add EntityFishHook AT + +Build 1.7.10-10.13.0.1195: + rwtema: Fixed ItemFluidContainer always draining the maximum amount, regardless of the amount remaining. + +Build 1.7.10-10.13.0.1194: + LexManos: Closes #1280 + +Build 1.7.10-10.13.0.1191: + LexManos: Fixed bug that allowed duplication of Fluids with redstone dust. Closes #1279 + +Build 1.7.10-10.13.0.1190: + idont: - Added drainFluidContainer() and getContainerCapacity() helper methods. + +Build 1.7.10-10.13.0.1189: + Adubbz: Added an event for fog rendering + +Build 1.7.10-10.13.0.1188: + cpw: + Revert old light amortization patch. It seems to be breaking chunk sending pretty badly when more + than a couple of people are online. Tests indicate it is not useful anymore. + cpw: MinecraftForge/FML@3231db9376766d619f942b6a526718daa3c68038 Sorta revert 908491d5e7ac26becdac938f38cc90d6b9d73ce1 but merge assets into the map, rather than force overwriting. Fixes skyboy's comment. + +Build 1.7.10-10.13.0.1187: + LexManos: + Updated FML: + MinecraftForge/FML@53887ac59cec8f747e21fd251f94d5a438a69114 Hacky interm solution to #1207 to buy me time to re-write FML's network protocol. + +Build 1.7.10-10.13.0.1186: + LexManos: Fixed NPE that happens sometimes when exiting the game witout fully loading a world {main a dev-time thing} + LexManos: Made skulls respect Block.isReplaceable when placing, also prevented them from deleting blocks when placed at certain angels. Closes #1233 + +Build 1.7.10-10.13.0.1185: + LexManos: + Updated FML: + MinecraftForge/FML@9d40b761974f10ec2b5868a992260792f8a98e5d Don't scan ObjectHolders if there was an error already, derpitude will ensure. + MinecraftForge/FML@76538c1781d6d6a1e4134fb317af99e6f13b46cc Add a terminal transformer and tweaker. + MinecraftForge/FML@aec9228845e50107112bd1f8693f9b4729694c8b Add ExitVisitor to the TerminalTransformer that finds and intercepts any calls to Runtime.exit or System.exit. + MinecraftForge/FML@908491d5e7ac26becdac938f38cc90d6b9d73ce1 Move LaunguageRegistry call above normal asset loading to allow resource packs to override mod's language systems. + MinecraftForge/FML@d13295e28113a1c310d5bbb90ebfe241fefabe02 Fix FMLAT manifest AccessTransformers, class loader fun! + +Build 1.7.10-10.13.0.1184: + Tyler Hancock: + Changed exception message for duplicate enchantment ids to contain the + class path for both enchantments along with the enchantmnet id that has + been duplicated. + +Build 1.7.10-10.13.0.1183: + bspkrs: + Fixed missing assignment of constructor arg (thanks @Lunatrius) + + I must have edited this out when I was cleaning up my formatting commit spam. + +Build 1.7.10-10.13.0.1182: + vincent_a_lee: + Fix comment derp (+1 squashed commits) + + Squashed commits: + + [52c40bc] Fix experience orbs spawning at 32x coordinates clientside + + Add // FORGE comment + + Add // FORGE comment to clarify the purpose of the change + +Build 1.7.10-10.13.0.1181: + vincent_a_lee: + Fix chat opacity + + Add // FORGE comment + + As per convention, add // FORGE comment to clarify the purpose of the change + +Build 1.7.10-10.13.0.1180: + LexManos: + Updated FML: + MinecraftForge/FML@ab52901b8b47a525e2719cf280327e97bad7f91e Force preferIPv4Stack to true early in the load chain to combat netty loopback issues. + MinecraftForge/FML@11893fbbb76569417a415ae794494b8c1150a716 Add system property to skip doing world backups when game registry changes. This is SEVERLY ill-advised, if you do this DO NOT ask for any support. + MinecraftForge/FML@fdb6b34b8fc3f1e0c6beb7bfb940a01a309f1603 Update authlib and realms to latest json data. + MinecraftForge/FML@b3a74882b4d0d704d7061b9d896febb59ab0c269 added slider controls for numerics. default control is textbox, but slider can be used as a custom list entry class. fixed constructor javadocs in GuiConfig + MinecraftForge/FML@7c6d1f7568885ff677e34692ff87b1f0826dfd48 Merge pull request #468 from bspkrs/master + MinecraftForge/FML@692d955c1a5b6d0b8601ae88632ef42136d37393 Update tweaker login to use authlib. + MinecraftForge/FML@c2119eb1c1246ba37304d9e565b4430ed7056db1 Update realms library to 1.3.1, and implement network latch when connecting to Realms. Tested and working. + +Build 1.7.10-10.13.0.1179: + cpw: Add a system property for the stencil, in case config is not available.. + +Build 1.7.10-10.13.0.1178: + the.country.gamer: + RenderBlockOverlayEvent patch + + Fixes skewed XYZ parameters + +Build 1.7.10-10.13.0.1177: + LexManos: Fixed Enchantment.addToBookList Closes #1160 + +Build 1.7.10-10.13.0.1176: + LexManos: Add ability for modders to designate custom biome types. And remove note about automatically registering. Closes #1167 + +Build 1.7.10-10.13.0.1175: + diesieben07: Added hook for custom PotionEffect rendering in the inventory + +Build 1.7.10-10.13.0.1174: + the.country.gamer: + Added RenderBlockOverlayEvent.java + + Adds a Forge event which controls whether an overlay is rendered. + Overlays include: First-person fire, Block (when inside a block) + and water when a player is inside a water block. + + Patched for easier manipulation of event + + Fixed for Lex + + To be squashed + + Removed Contructor + + Added block XYZ parameters + + TODO, the second block overlay event’s XYZ might not be correct + Adubbz: Enhanced the Biome Dictionary with tags based on temperature, vegetation, moisture, trees and others + +Build 1.7.10-10.13.0.1172: + LexManos: Made EmeraldOre respect isReplaceableOreGen. Closes #1157 + LexManos: Added World to ChunkProviderEvent.ReplaceBiomeBlocks, and exposed metadata to End and Nether generation events. Close #1201 + +Build 1.7.10-10.13.0.1171: + tterrag1098: + Add AchievementEvent + + Allows modders to react to players receiving achievements, and cancel + them. + + Fix indentation + + More shortening + + Down to one line... + + Remove newline + +Build 1.7.10-10.13.0.1170: + LexManos: STENCIL buffer and DEPTH buffer, attempt a fix for GL errors. + +Build 1.7.10-10.13.0.1169: + alex grabriel: Added Javadoc comments for Forge Event documentation. + +Build 1.7.10-10.13.0.1168: + LexManos: MinecraftForge/FML@ac994e178a3533aa3c2ad8359aef9e5852c27a72 Scala people test your shit. + +Build 1.7.10-10.13.0.1167: + LexManos: Remove the BLEND enable in rendering damage bars. And exclicitly fix blend states in some GUI elements. + +Build 1.7.10-10.13.0.1166: + cpw: + MinecraftForge/FML@3ee86d0f3e47249030ba2309386f9120025e95c1 updated gradle wrapper to gradle 2.0 + MinecraftForge/FML@627ae73ea655277617912df48b03288ecc79ffea Merge pull request #464 from AbrarSyed/upgradle + MinecraftForge/FML@ee38c1b3f4642c567612f88070d7f9d651994aab Fix unneeded cast causing crash in new Config GUI system. + MinecraftForge/FML@eb92c35a2fa49a0fbe35a33e31cfb58e0674f78e updated run configs for GradleStart/Server classes + MinecraftForge/FML@70dcf80410a6d12c00300c00522582ee49ac4cc8 Merge pull request #465 from AbrarSyed/upgradle + MinecraftForge/FML@0ebdbe77a2b3503db43d36aec50c98ffb8366e20 Updated Scala to latest stable + MinecraftForge/FML@ddba18e6e33a9d9c5b113b1bfc0bfc82803b2607 Merge branch 'patch-1' of github.com:Soaryn/FML into scalaupdate + MinecraftForge/FML@220a37660b2656136c634b435afee6a915fc88fe Update realms to 1.2.9 + MinecraftForge/FML@abd7d0969bed5ce3d766f52b921c2b44e8ba87d2 Merge branch 'scalaupdate' + +Build 1.7.10-10.13.0.1162: + foka_12: + Added FluidStack sensitive version for Fluid's localised name + + Would be helpful for determining names for more complex FluidStacks (with tag compounds for example) + +Build 1.7.2-10.12.2.1161-mc172: + bspkrs: dupe quotes fix for category names + +Build 1.7.10-10.13.0.1160: + Gerard Bruwn: Add RenderItemInFrameEvent + +Build 1.7.10-10.13.0.1159: + LexManos: Fixed issue where Fire's 'fizz' would not play for the person who extinguished the fire. + +Build 1.7.10-10.13.0.1158: + ohai.iChun: Fixed inverted params in FogDensity use + +Build 1.7.10-10.13.0.1157: + LexManos: Add config option to disable attempting to creat screen with Stencil Bits. + LexManos: Add config option to specify the default spawn fuzz factor for the overworld. Closes #1190 + +Build 1.7.10-10.13.0.1156: + LexManos: Fix creative inventory tabs not blending base don items rendered. Closes #1179 + +Build 1.7.10-10.13.0.1153: + bloodshot: + Fixed wrong method call in ChunkIOProvider. + + When a chunk fails to load async, we fallback to the original sync method. + In this case, it was calling the async method twice which ended up causing + a stackoverflow. + +Build 1.7.10-10.13.0.1152: + cpw: MinecraftForge/FML@db219fb287b14fea5148ecdbf07d8ff08704c66a API is now able to "provide" and "own" itself. Useful for libraries without a Mod in them. To go along with this, you can now require an API, with a version, in your mod dependency string + +Build 1.7.10-10.13.0.1151: + bspkrs: fixed compounding quotes issue with category names that require quotes when save is called more than once + +Build 1.7.10-10.13.0.1150: + LexManos: Update to 1.7.10-pre4. + LexManos: Fix flower pots not droping the items that are inside them. + cpw: MinecraftForge/FML@06ab104c9ab798af6d2726e02a238211ff8124e1 Force the descriptors to the right type for the field they're referencing. Fixes the sand issue + cpw: MinecraftForge/FML@e1529845384f4935b7c11d4d36d25db51c0b9a31 Add support for mod access transformers without a coremod requirement. Use the "FMLAT" manifest attribute, with a space separate list of files that live in the 'META-INF' directory. They should conform to standard AT formatting. + cpw: + MinecraftForge/FML@5d6dc5dce37e488188d6fc468c16e8a6183a3610 Fix up other exit points. Should stop process hangs for clean exits. + MinecraftForge/FML@8a240ec3c7e4cf4c57beabdfe9bd408e57de1bdc Merge branch 'master' into mc179 + MinecraftForge/FML@0cd5ef6bb71cda1ef6add892d1247148bf1ecc15 Fix NPE when no FMLAT is defined + cpw: + MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system + MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui + MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' + MinecraftForge/FML@96a7e14a45404449fb72af6d2d5e1efd30003318 Merge branch 'master' into mc179 + MinecraftForge/FML@f45f18b1d71e1c1d12582faa337a19e73ed5fb18 Fix accessing guava from transformers + MinecraftForge/FML@8f7adced471951c798cfa6844b0abc176c93d19b Fix library issue. mojang auth requests newer libs, so we get them at dev time. But the mojang json doesn't refer them at runtime. So there's a lib mismatch. Fortunately all are available at mojang, so we can update the json. + cpw: Fix new method with Side.CLIENT when it shouldn't have it. Closes a bunch of reports of problems. + cpw: Clean patch cruft. + cpw: Fix mcp release number + luacs1998: + Update mc version string + + Or was I not supposed to? + cpw: Fix API incompatibilities. Should mean mods will work with new config changes. + cpw: + Update to MC 1.7.10, bump to 10.13.0 + + MinecraftForge/FML@bc420dcb0b086899e2aaa218a6f5bd7e91091a90 Fix Eclipse launching attribute + MinecraftForge/FML@1e0134a1ca97a1107ebbe604e5318e6f350fe9c4 Merge pull request #455 from rumickon/feature + MinecraftForge/FML@1c5db211afc9962fedb7fd8450abc45d07807634 Update for release 1.7.10 + MinecraftForge/FML@79a0c5e55905f0f08471d026b744a563ea421236 Merge branch 'mc179' + +Build 1.7.10_pre4-10.12.2.1149-prerelease: + cpw: Fix API incompatibilities. Should mean mods will work with new config changes. + +Build 1.7.10_pre4-10.12.2.1148-prerelease: + luacs1998: + Update mc version string + + Or was I not supposed to? + +Build 1.7.2-10.12.2.1147: + cpw: Fix API incompatibilities. Should mean mods will work with new config changes. + +Build 1.7.10_pre4-10.12.2.1146-prerelease: + bspkrs: + Added support for new FML config GUI classes + refactored lots of stuff based on comments + + added Configuration.load() exception handling and logging + cpw: MinecraftForge/FML@5d6dc5dce37e488188d6fc468c16e8a6183a3610 Fix up other exit points. Should stop process hangs for clean exits. + cpw: + MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system + MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui + MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' + cpw: Fix mcp release number + +Build 1.7.2-10.12.2.1145: + bspkrs: + Added support for new FML config GUI classes + refactored lots of stuff based on comments + + added Configuration.load() exception handling and logging + cpw: + MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system + MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui + MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' + +Build 1.7.10_pre4-10.12.2.1144-prerelease: + cpw: Clean patch cruft. + +Build 1.7.10_pre4-10.12.2.1143-prerelease: + cpw: Fix new method with Side.CLIENT when it shouldn't have it. Closes a bunch of reports of problems. + +Build 1.7.10_pre4-10.12.2.1142-prerelease: + cpw: + MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system + MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui + MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' + MinecraftForge/FML@96a7e14a45404449fb72af6d2d5e1efd30003318 Merge branch 'master' into mc179 + MinecraftForge/FML@f45f18b1d71e1c1d12582faa337a19e73ed5fb18 Fix accessing guava from transformers + MinecraftForge/FML@8f7adced471951c798cfa6844b0abc176c93d19b Fix library issue. mojang auth requests newer libs, so we get them at dev time. But the mojang json doesn't refer them at runtime. So there's a lib mismatch. Fortunately all are available at mojang, so we can update the json. + +Build 1.7.10_pre4-10.12.2.1141-prerelease: + cpw: + MinecraftForge/FML@5d6dc5dce37e488188d6fc468c16e8a6183a3610 Fix up other exit points. Should stop process hangs for clean exits. + MinecraftForge/FML@8a240ec3c7e4cf4c57beabdfe9bd408e57de1bdc Merge branch 'master' into mc179 + MinecraftForge/FML@0cd5ef6bb71cda1ef6add892d1247148bf1ecc15 Fix NPE when no FMLAT is defined + +Build 1.7.10_pre4-10.12.2.1139-prerelease: + cpw: MinecraftForge/FML@e1529845384f4935b7c11d4d36d25db51c0b9a31 Add support for mod access transformers without a coremod requirement. Use the "FMLAT" manifest attribute, with a space separate list of files that live in the 'META-INF' directory. They should conform to standard AT formatting. + +Build 1.7.10_pre4-10.12.2.1138-prerelease: + cpw: MinecraftForge/FML@06ab104c9ab798af6d2726e02a238211ff8124e1 Force the descriptors to the right type for the field they're referencing. Fixes the sand issue + +Build 1.7.10-pre4-10.12.2.1135-prerelease: + LexManos: Fix flower pots not droping the items that are inside them. + +Build 1.7.2-10.12.2.1133: + Christian: Null check the Item in the supplied stack as well as the stack itself. + +Build 1.7.2-10.12.2.1132: + Christian: And fix firing for single player loading. + +Build 1.7.2-10.12.2.1131: + Christian: Fix derpity derp. + +Build 1.7.2-10.12.2.1130: + Christian: + Fire an event when a player loads or saves from disk. Mods that want to load an additional + player related file from the players dir can now do so in that event. + +Build 1.7.2-10.12.2.1129: + Christian: + Some patch offsets + MinecraftForge/FML@7219061b05db73d245405ef777b412d0787398b6 Also patch in warnings for Vec3Pool - similarly removed. + MinecraftForge/FML@dff22045587b37282adeb2167486a572f51f1f16 FML now sets a security manager (FINALLY!). It's primary purpose at this point is to catch rogue calls to System.exit so that they can cause a proper crash report, rather than silently abandoning the game. + +Build 1.7.2-10.12.2.1128: + lumien231: Fixes a server crash caused by a player joining that is in a non existent dimension + +Build 1.7.2-10.12.2.1127: + thog92: Add missing 1.7 biomes to BiomeDictionary + +Build 1.7.2-10.12.2.1126: + nemesis: + Fixed ArrayIndexOutOfBoundsException in getOreName + + Added sanity check to prevent ArrayIndexOutOfBoundsException in getOreName for negative ids. + +Build 1.7.2-10.12.2.1125: + LexManos: Fixed vines generation for hanging off of trees. + +Build 1.7.2-10.12.2.1124: + bloodshot: + Don't call ChunkDataEvent.Load async + + ChunkDataEvent.Load must be called after TE's are loaded since this is + what mods expect. The event is handled by ChunkIOProvider during + callStage2. + +Build 1.7.2-10.12.2.1123: + bloodshot: + Load chunks asynchronously for players. + + When a player triggers a chunk load via walking around or teleporting + there is no need to stop everything and get this chunk on the main thread. + The client is used to having to wait some time for this chunk and the + server doesn't immediately do anything with it except send it to the + player. At the same time chunk loading is the last major source of file IO + that still runs on the main thread. + + These two facts make it possible to offload chunks loaded for this reason + to another thread. However, not all parts of chunk loading can happen off + the main thread. For this we use the new AsynchronousExecutor system to + split chunk loading in to three pieces. The first is loading data from + disk, decompressing it, and parsing it in to an NBT structure. The second + piece is creating entities and tile entities in the chunk and adding them + to the world, this is still done on the main thread. The third piece is + informing everyone who requested a chunk load that the load is finished. + For this we register callbacks and then run them on the main thread once + the previous two stages are finished. + + There are still cases where a chunk is needed immediately and these will + still trigger chunk loading entirely on the main thread. The most obvious + case is plugins using the API to request a chunk load. We also must load + the chunk immediately when something in the world tries to access it. In + these cases we ignore any possibly pending or in progress chunk loading + that is happening asynchronously as we will have the chunk loaded by the + time they are finished. + + The hope is that overall this system will result in less CPU time and + pauses due to blocking file IO on the main thread thus giving more + consistent performance. Testing so far has shown that this also speeds up + chunk loading client side although some of this is likely to be because + we are sending less chunks at once for the client to process. + + Thanks for ammaraskar for help with the implementation of this feature. + + This commit is based off the following : + + Bukkit/CraftBukkit@b8fc6ab2c12e9b4c8d7b5370e44f23cc838014b2 + Bukkit/CraftBukkit@85f5776df2a9c827565e799f150ae8a197086a98 + Bukkit/CraftBukkit@0714971ca2a31bc729bdd78ded8c69ffb2284813 + Bukkit/CraftBukkit@7f49722f457dcc31f8cac8e011871ff1b7fd3306 + Bukkit/CraftBukkit@53ad0cf1abe9c060ef411a86e9a16352f3e5197e + +Build 1.7.2-10.12.2.1122: + antoine.lucas.33: Add missing onLivingJump calls + +Build 1.7.2-10.12.2.1121: + LexManos: Pop version for new Recomended build. + +Build 1.7.2-10.12.1.1120: + Christian: Warn when chunks are being self-recursively loaded. This can cause serious issues. Modders should watch out. + Christian: MinecraftForge/FML@1a99ec7db612f258983c6ac685da906bf7cde0a6 Deprecate getAABBPool so people can stop using it in mods. Failure to do so will result in 1.7.10 upgrade incompatibility. Use getBoundingBox instead. + +Build 1.7.2-10.12.1.1119: + LexManos: Changed dustLapis to gemLapis to make OM SHUT THE HELL UP. + +Build 1.7.2-10.12.1.1118: + LexManos: Fixed missed metadata offset, and now cache return values of getOres for speed. + +Build 1.7.2-10.12.1.1117: + cojomax99: World fog color and density can now be controlled through an event + +Build 1.7.2-10.12.1.1116: + diesieben07: Fix not being able to change target & attackDamage for EnderTeleportEvent. + +Build 1.7.2-10.12.1.1115: + LexManos: Fixed inverted player parameters in PlayerEvent.Clone, Closes #1142 Closes #1140 + +Build 1.7.2-10.12.1.1114: + LexManos: Changed EntityWolf to EntityTameable in EntityLivingBase.attackEntityFrom, to allow for more custom pets. Closes #1141 + +Build 1.7.2-10.12.1.1113: + LexManos: Rework OreDictionary's internals to be a bit more speedy to help combat modders using it inapropriatly. Closes #1022 Closes #1131 + +Build 1.7.2-10.12.1.1112: + Christian: + MinecraftForge/FML@e3ce211cc798f4d86ca6f974d9ba8b4e389b4dc9 Nullcheck the dispatchers on players. Should stop some crashes when spamming connectivity. + MinecraftForge/FML@480bf2c1d078038bb59c4254a01a5af685c7cb22 Fix REPLY handling in SimpleNetworkWrapper. Closes #440 + +Build 1.7.2-10.12.1.1111: + LexManos: + Fix inverted parameters in OreDictionary.getOreID Closes #1123 + -.- Closes #1120 + +Build 1.7.2-10.12.1.1110: + Adubbz: Greatly simplified the addition of new biomes to the default world + +Build 1.7.2-10.12.1.1109: + LexManos: Added Noteblock change and play events. Closes #1027 #1025 + +Build 1.7.2-10.12.1.1108: + LexManos: Add target world to PlayerInteractEvent for potential 'cross dimension' interaction such as LittleBlocks. Closes #1071 + +Build 1.7.2-10.12.1.1107: + LexManos: Add a couple of localizations to Forge added strings. Closes #1068 + +Build 1.7.2-10.12.1.1106: + rwtema: Fixed setBlock not using the location-specific version of getLightOpacity() + +Build 1.7.2-10.12.1.1105: + LexManos: Filter all vanilla blocks that we missed through Forge's getDrops and BlockDrops events. As well as implemented IShearable for DoublePlants and DeadBushes. Mojang really should generic out some of this stuff instead of repeating logic all over the place! + +Build 1.7.2-10.12.1.1104: + LexManos: Fix patch fuzz + LexManos: Fixed GuiContainer calling button.mouseReleased. Closes #1116 + LexManos: Add comment to RotationHelper telling modders where to actually look, closes #1115 + +Build 1.7.2-10.12.1.1101: + diesieben07: + Add PlayerEvent.StartTracking and .StopTracking & make trackedEntityIDs visible + & Update, as discussed on IRC (squash) + +Build 1.7.2-10.12.1.1100: + vilim.lendvaj: Make finite fluid blocks drainable + +Build 1.7.2-10.12.1.1099: + LexManos: Fix enum helpers for EnumRarity {moved to Commn and changed paramter} and EnumCreatureType {new parameter} and added junit test for them. Closes #1009 + +Build 1.7.2-10.12.1.1098: + Christian: MinecraftForge/FML@1d41aa978d41267e4040ec449e10f49a20edd4fa Fix the side for the compatibility check. Should result in green ticks finally! + +Build 1.7.2-10.12.1.1097: + LexManos: Change IShearable JavaDoc by one line so Anti would shut up. Closes #1054 + +Build 1.7.2-10.12.1.1096: + Christian: MinecraftForge/FML@4512f8e5e316ddaf6a4fe35470f1f88dcdddae1a Warn when the objectholder finds nothing in the registry. Helps debug mismatched names. Also, actually make the scoping thing work with objectholder + +Build 1.7.2-10.12.1.1095: + fry: Added world display list render events + +Build 1.7.2-10.12.1.1094: + foka_12: + Fix getOreIDs not using the wildcard value correctly + + You can see it's not working by requesting the ore IDs from lapis, and you'll see the name "dye" is missing (and that's the one registered using the wildcard). + + Fixed it by inverting the order of the item stack parameters. + +Build 1.7.2-10.12.1.1093: + LexManos: Prevent duplciates in registered Ores in the OreDictionary and clean up some of the code, add new function to return all ores the specified ItemStack satisfies. Closes #1102 + +Build 1.7.2-10.12.1.1092: + vilim.lendvaj: + Fix fluid blocks + For https://github.com/BuildCraft/BuildCraft/issues/1843 . + +Build 1.7.2-10.12.1.1091: + LexManos: + Updated FML: + MinecraftForge/FML@3aba56440aa7a95f6431efcdcb5c127ebafc8891 lastIndexOf, Note Don't code while sick. + +Build 1.7.2-10.12.1.1090: + LexManos: + Updated FML: + MinecraftForge/FML@c828bb63c57cb10c23d9b1c3a6934e9f9ddba37b Make AccessTransformer change INVOKESPECIAL to INVOKEVIRTUAL when making methods visible + MinecraftForge/FML@a9aa468457a1eeed3366505b93e36da654610f05 Merge pull request #431 from diesieben07/at-invokevirtual + MinecraftForge/FML@31d726abad0dec6d1b853e9adf6a01580aee2af4 Fix the null networkHandler in the MessageContext + MinecraftForge/FML@725d988e36a7b104b9f5d8ae2daf993ac12af5bd Add in the objectholder, autopopulated by FML based on simple rules. Allows for reference driven substitution of mod blocks and items based on their server running state. + MinecraftForge/FML@f07bf5cb30a20ca9f62337512e936cfefcfbf0c4 Fixed deobfusication of nested inner classes. And removed legacy ModLoader remaps. + LexManos: + Updated FML: + MinecraftForge/FML@3a687f48b9606b4f9179d63ef0b831a25821ff8f -.- Save File First. My Bad. + +Build 1.7.2-10.12.1.1088: + LexManos: Add Glass, Colored glass, ore storage blocks, alines, and a few others to ore dicitonary. Closes #1011 + +Build 1.7.2-10.12.1.1087: + clashsoft: Update GuiScreen.java.patch + LexManos: Add new PlayerEvent.Clone called when an EntityPlayer is cloned via dimension travil or respawn. + LexManos: Made WorldGenShrub respect Block.canSustainPlant, Closes #1096 + +Build 1.7.2-10.12.1.1085: + delma: + Fluid events now know how much fluid is moved + + Added amount that is being filled/drained to the FluidEvent + + Added constructors without amount to ensure backwards compability + + Added deprecation to amountless constructors + +Build 1.7.2-10.12.1.1084: + LexManos: Fixed Stems not droping a random number of seeds based on metadata, Closes #1087 + +Build 1.7.2-10.12.1.1083: + xcompwiz: + Bug Fixes to Biome Decoration and Chunk + Fixes issue with biome decoration crashing on worlds with exposed void + Fixes same issue in JungleBiome decoration + Fixes forge bug in getting lighting from a block in chunk + +Build 1.7.2-10.12.1.1082: + LexManos: In Flower Forest biome a Poppy should spawn instead of Blue Orchid Closes #1078 + LexManos: Added Farmland to PLAINS type plants as that has changed in 1.7. Also made BlockTallGrass call it's super.canBlockStay to better support custom soils. Closes #1077 + LexManos: Added accessible instance to RenderBlocks and RenderItem for modders to use who don't wish to create there own instance. Warning: Other modders may influance the transient state of the instance, BE WEARY MODDERS. + +Build 1.7.2-10.12.1.1081: + Christian: MinecraftForge/FML@43e3ee1af1cab54db238dab4994076fdbe68bc6a Swap Listenerlist constructor around. Should fix parent resizing issue? + +Build 1.7.2-10.12.1.1080: + Christian: MinecraftForge/FML@70570a863ffa6a3ba7e2dd30b471bb47615b8bf8 Fix up possible CME + +Build 1.7.2-10.12.1.1079: + Christian: MinecraftForge/FML@503da3a2577a069b7847c158a27e8316c85ed852 Don't consider null NetworkDispatchers. This should fix a bunch of fakeplayer issues. + +Build 1.7.2-10.12.1.1078: + LexManos: Fully clear DimensionManager's DimensionID bitset when world is loaded. Closes #1074 + LexManos: Fixed No Blue Orchids spawn in swamp when using bone meal Closes #1072 + +Build 1.7.2-10.12.1.1077: + Christian: Fix forge validating strict versions on remote connections. + +Build 1.7.2-10.12.1.1076: + Christian: + MinecraftForge/FML@a8cbef2321a8e1bdfac56476bdfb5b306f71d38b Finally hopefully fully kills the race condition causing a classcast on slow machines. + MinecraftForge/FML@8dbd1ae0a177a556d03630a059242a2ee7f45e55 Fix ObjectIntIdentityMap sporadically matching non-identical objects. + MinecraftForge/FML@42713c66e565a26e963099baa838800f250089c3 Merge pull request #426 from sfPlayer1/master + +Build 1.7.2-10.12.1.1075: + Christian: + MinecraftForge/FML@d8b6adb2598ce144568a0aaf26fa8b988c028b7c Add a helper for casting some common collection types into generic form + MinecraftForge/FML@5275cea844a6afacc0deb41d153f01c1c25bb924 Try and see if there is anything to the identityHashCode collision hypothesis. If you see this in your error messages, kindly let us know! + +Build 1.7.2-10.12.1.1074: + LexManos: + Updated FML: + MinecraftForge/FML@a70308ef41f1e24074ea718f64caf75b8d6acba7 Update mcmod.info + MinecraftForge/FML@8555344eb33e4f0cc676defdb7391a24ebd5677d updated wrapper to gradle 1.12 + MinecraftForge/FML@1d5fc60f82e911c1abfbebbe781316126c02c987 Merge pull request #411 from matthewprenger/master + MinecraftForge/FML@3612ad0c25d103ba9bc81b32e8ecfef2dfc1cadc Attempt to fix another race condition related to reading NetClientHandler. + MinecraftForge/FML@c73a2076e3dd5d1f60c2fe2f589109cefa2dc6ce Fix potential rance condition in connecting to vanilla servers as well. And move latch into client side only. + MinecraftForge/FML@1436ac2f14fbdb48777c90b1b93378108c9cbf36 Fine use FMLCommonHandler. + MinecraftForge/FML@542e9acec1016c950c6f80af0c9da3190691359b documented dependencies + MinecraftForge/FML@ddc2cfbe864bd377232dbd1aa65df6e710d4639d Merge pull request #402 from AbrarSyed/patch-1 + MinecraftForge/FML@362ec8dee7ed2c291a8ed287c52eacdd80582eff Merge pull request #419 from Thog92/master + MinecraftForge/FML@b9de9ebc960bbf26e7aee570701aa4c226252fee Revert "Fix refreshResources not happening if an error occurs." + MinecraftForge/FML@738ce1d7cd5575269375066586d0a37881c536e2 Re-add removed genericiterable to clean a warning + MinecraftForge/FML@b0eb1ef7c6f4a63689898bf28f28e84d2dbae6e7 Split loadmods into loadmods and preinitmods, to allow resource loading to occur *always* between the two phases. This should fix mods not being able to access resources during preinit. + MinecraftForge/FML@de546bdf6cbeadb612cd6385bac8d54480073496 Clean up some missing generic info + MinecraftForge/FML@cd43eacbb25bc9cc0e81138844fa3aa7fd133037 Ensure that the loadcontroller is ready to preinit. + MinecraftForge/FML@f2fe80dc36972fe9db57e700380b6869abbc1832 Fixed default network mod checking to allow client side mods without the server side. Mods wishing to REQUIRE server side components must specify a custom check handler using @NetworkCheckHandler + MinecraftForge/FML@0c36868f92a3516c83ae363e13e5cb1db81236d1 Fix network disconnect with message on the client side in NetworkDispatcher. + +Build 1.7.2-10.12.1.1073: + bspkrs: Fixed unforeseen NPE + +Build 1.7.2-10.12.1.1072: + LexManos: + Revert "Implemented hashCode and equals in ItemStack, Closes #986" + + This reverts commit 0b01545a03942abca7b7ea28030be81e2ebeaa59. + +Build 1.7.2-10.12.1.1071: + LexManos: Implemented hashCode and equals in ItemStack, Closes #986 + +Build 1.7.2-10.12.1.1070: + LexManos: Fix extended entity properties being lost when leaving the end, This introduces the concept of calling IExtendedEntityProperties.init when entites/worlds change. Lets see if mods explode. + +Build 1.7.2-10.12.1.1069: + bspkrs: New GuiScreen events and a new ElementType DEBUG for RenderGameOverlayEvent + +Build 1.7.2-10.12.1.1068: + LexManos: Added new hook to WeightedRandom.getItem that allows for use of custom rnadom generators, prevents redundant code in mods. + +Build 1.7.2-10.12.1.1067: + LexManos: + Updated FML: + MinecraftForge/FML@2c56c32c5aa8842cfadaf8c237396cdb75673909 Fix saving backups with the raw name. Fix air block not being assigned as the default. + MinecraftForge/FML@d0f8073fa51db7426d5ded373f3404fa60d722f0 Merge pull request #413 from sfPlayer1/master + MinecraftForge/FML@810b1f3075e6061ab189e1f6975bd77b20040d71 Clean some generic warnings up. Make a generic list handler. Helpful for others I think too. + MinecraftForge/FML@fff86ee9d35874bdf77a1eaabe77615441644064 Fix refreshResources not happening if an error occurs. + MinecraftForge/FML@76d8d0e870a4e389167634283984dc10abb08e84 Fix mod version checking + MinecraftForge/FML@b84d0760ae47832e5b1e4d50237b582b2d50d520 Fix display of mod status at the server + MinecraftForge/FML@251af1d09dfbf636e2fb3f323a5345c81cc07aea Fixed memory leak on the client caused by Netty holding references to the World. + LexManos: Fixed hard references in WorldGenBigTree and ForgeCommand that caused worlds to leak in the client. + +Build 1.7.2-10.12.1.1066: + lhb: + Fix for Block.getExplosionResistance getting passed the wrong parameters + + It is being sent the x, x, y coordinates instead of x, y, z + +Build 1.7.2-10.12.1.1065: + CovertJaguar: + Fix issue with flexible rail return value + + Between 1.6 and 1.7 the return value to BlockRailBase.isFlexibleRail() + was inverted. While this is not a huge deal and could be worked around + by simply inverting your return value, it does mean its no longer + consistent with the function name and javadocs. + bioxx2007: Adds a new ReplaceBiomeBlocks Event constructor that supplies the metadata array if applicable and updates the ChunkProviderGenerate class to pass in the metadata array. + +Build 1.7.2-10.12.1.1061: + bspkrs: get a spelling checker :P + +Build 1.7.2-10.12.1.1060: + LexManos: Bump Forge version in prep for release. + +Build 1.7.2-10.12.0.1059: + LexManos: Try and fix invalid framebuffer depth/stencil setup, Thanks Ivoforce. Closes #1032 + +Build 1.7.2-10.12.0.1058: + apricefrench2d: + Fix infinite loop in RecipeSorter + + If recipe is multiple levels of inheritance from Object and not categorized, cls=cls.getSuperclass(); needs to be repeated more than once. It must therefore be moved to inside the while loop. + +Build 1.7.2-10.12.0.1057: + ohai.iChun: Fixes stencil buffers on platforms not supporting OpenGL 3.0 or higher. + +Build 1.7.2-10.12.0.1056: + LexManos: + Small wording change in license to allow for specifc differnet licnense contributions. + + Updated FML: + MinecraftForge/FML@e58562d3edfd1cd37fdc0a9e54181aed7433fdff Fix remaining issue with autoassigned Block and Item IDs overlapping. + MinecraftForge/FML@a82195772e539437911c25508168cb607659bc71 Registry: Block IDs after failing to find a mapping for them + MinecraftForge/FML@fd9389015fd5c6150155531bf1fffb38cfe9d551 Fix FMLMissingMappingsEvent.get + MinecraftForge/FML@5eebd4df718d65ac8426deba61e1ebb6ae2fde18 Registry: Implement support for remapping blocks/items to a new name. + MinecraftForge/FML@7325aa5033e7a5b5db79340777dd7a1c763315a0 Registry: cleanup, fix missing id error GUI formatting + MinecraftForge/FML@eb29d651ebda7086fe6d1f716295b087e2c17e6f Fix old 1.7 worlds with broken ID mappings + MinecraftForge/FML@6fd3c12a4a15a5cf38c421a94576a5cacd3fb7c1 Registry: allow handling missing blocks/items regardless of the mod id + MinecraftForge/FML@038fa17ad33aeba276db84ab170504fce884c1e7 Merge branch 'master' of https://github.com/MinecraftForge/FML + MinecraftForge/FML@49c623f59c440ba177adf2d76332ecee25e12236 initial attempt at a better way to ask the user in case of startup issues + MinecraftForge/FML@9be92dcfcb1c737025397c92b18ed027a6c7f4fa Registry: Complain about bogus registrations + MinecraftForge/FML@fd6d55afcc4f4c650c143ad43e09fbdc2cb9d850 Registry: Allow ignoring missing mods from the GUI, with confirm+backup + Registry: Add confirm+backup for automated corrupted id table fixup Require the user to confirm loading from a backup level.dat + MinecraftForge/FML@c47fc3b382434d435050b4ee02a02550b81f5717 Enable custom gui rendering only as required + MinecraftForge/FML@f77632df35dbf53fb31420fa86e6792f13257020 Remove unneeded entity spawn debug logging. + MinecraftForge/FML@c7adb42199a0684d8748451d39deb8326c0a2194 Registry: Repair mismatched ItemBlocks as well Fix a few misc issues + MinecraftForge/FML@c8a245a985779fd2545ee4b58a93270973aeb435 Registry: Fix debug info + MinecraftForge/FML@c8a0b72eba9265be608670424e1bd835a9d2f1e2 Registry: Complain about missing mods when repairing broken worlds Registry: Reduce console spam + MinecraftForge/FML@8e44006f432f1b36b826ff0469d99986a6051e4b Registry: Protect against putObject misuse, handle duplicate registrations better + MinecraftForge/FML@294c93212cd9f30c50b9d1a3b048a6141c45cdea Registry: Add support for registering ItemBlocks before their Blocks + MinecraftForge/FML@3b42b33b6ec4020b5032cae06760053ed135fae8 Merge pull request #400 from sfPlayer1/master + +Build 1.7.2-10.12.0.1055: + traincrazyb: + Small Fix: Held Items & Multiple Render Passes + + Passes beyond 1 now have the correct icon. + +Build 1.7.2-10.12.0.1054: + LexManos: Fix line offset in Minecraft patch, and mix RenderPlayer looping once to many on multi-pass items. + +Build 1.7.2-10.12.0.1053: + t.tomkins: Update PlaySoundEvent17.java + +Build 1.7.2-10.12.0.1052: + LexManos: Update access transformer, Closes #951 and #1021 + LexManos: Add NPE protection to GuiingameMenu.actionPerformed, Closes #961 + LexManos: Finally do SoundSystem workup for 1.7, Closes #982 + +Build 1.7.2-10.12.0.1051: + LexManos: Use BiomeGenBase's array size instead of hardcoding it in BiomeDictionary. Closes #871 + LexManos: Fix potential threading issue if FluidRegistry.loopupFluidForBlock is called from two threads at the same time before being setup. Closes #936 + +Build 1.7.2-10.12.0.1050: + LexManos: New hook to truely seperate the display of the 'durability' bar from the current / max durability. Allowing modders to control that display easier. + LexManos: ItemStack sensitive version of Item.getAttributeModifiers, Closes #816 + LexManos: Add ANIMALS tpe to PopulateChunkEvent.Populate Custom providers should call this function if they spawn animals curing population. Closes #790 + LexManos: Add AnvilUpdateEvent which is fired when a user places a item in both input slots of a Anvil and allows modders to control the output. Closes #838 + +Build 1.7.2-10.12.0.1049: + LexManos: Add position to BreakSpeed event. Closes #621 + LexManos: Advanced Model Loader available server-side for data driven models. To be cleanuped and re-evaluated in 1.8. Closes #773 + +Build 1.7.2-10.12.0.1048: + Abrar Syed: COnverted patches to SRG names + Abrar Syed: updated for ForgeGradle 1.2 + Abrar Syed: added .exe file.. fixed a bunch of patches + Abrar Syed: updated FML to latest master + Abrar Syed: fixed remaining noop patches and exc derp + LexManos: Update patches for new Fixed FernFlower used in FG 1.2. + +Build 1.7.2-10.12.0.1047: + reflex_ion: + This correctly uses the world height less one block for placement of a + Door. + + Required for placing doors inside a littleblocks area. + +Build 1.7.2-10.12.0.1046: + LexManos: MinecraftForge/FML@ef07de4f65ea16e1db1467845e316cb4c7d01a1f Fix hard link to DedicatedSerever when opening a LAN connection causing stalls on connecting. + +Build 1.7.2-10.12.0.1045: + LexManos: -.- Both null combinations. + +Build 1.7.2-10.12.0.1044: + LexManos: properly implement equals, sod off Player. + +Build 1.7.2-10.12.0.1043: + LexManos: Implement simple hash based equals in Fluid ContainerKey. + +Build 1.7.2-10.12.0.1042: + LexManos: Make StructureVillagePieces.Village public. + +Build 1.7.2-10.12.0.1041: + ohai.iChun: Fixes stencil bits not existing in Minecraft's framebuffer causing stencil test to not work. + +Build 1.7.2-10.12.0.1040: + LexManos: + Updated FML: + MinecraftForge/FML@e8b60441ccca8cccdc130560b4c8bf400aebc605 Reload game settings after mod loading is finished to capture mod keybindings. Closes #378 + MinecraftForge/FML@399770e572c9177babfb65a27280253023db2d9e Kill the modEventTypes list, register anything that extends FMLEvent, Fixes MissingMappingEvent handler, and any futureevents added. + MinecraftForge/FML@b7ad532ab5eb3e00d77ffde946d25675c9f69cf7 Re-enable post initalize texture pack reloading to allow Icons to be registerd through any init phase. + +Build 1.7.2-10.12.0.1039: + t.tomkins: + Small Fix: Held Items & Multiple Render Passes + + Passes beyond 1 now have the correct icon. + DemoXin: * Added Ore Dictionary entries and recipe replacements for Diamond, Emerald, Crops, Redstone, and Glowstone + DemoXin: * Fixed Items.glowstone to Items.glowstone_dust + +Build 1.7.2-10.12.0.1034: + LexManos: Fixed hashcode in FluidContainerRegistry, still needs a redesign. Closes #967 + +Build 1.7.2-10.12.0.1033: + ohai.iChun: Add cancelable RenderHandEvent. + +Build 1.7.2-10.12.0.1032: + LexManos: Fix a typo in our tile entity fix causing it to be ineffective. + +Build 1.7.2-10.12.0.1031: + LexManos: Fix items with color rendering incorrectly. + +Build 1.7.2-10.12.0.1030: + Christian: + Update Forge for patch changes + + MinecraftForge/FML@064b66af3d6c92b19821b88ec26cbb59577d68b4 Prevent players from logging in until server has finished starting. + MinecraftForge/FML@2aa73afa15908dadb0a033c49deb0ffefad2f265 Fix ExampleMod.java for build #1024+ + MinecraftForge/FML@c890206268da3c594d97198f5426b52ff6b8460c Try and handle removal of mods a bit better. Currently no way to allow a world which has missing blocks to load - but i have the code in place to allow it i think. + MinecraftForge/FML@995c204338cd601e118396d4b4ef8feb6e759037 Fix failing to load a world with missing mod blocks and items. There will be a way to force worlds to load when stuff is missing, but for right now, it will fail as this is "world safe". + MinecraftForge/FML@fa5f4c884272f415933329a9e914e0b7d052e31a Some argumentation + MinecraftForge/FML@45409bfa0c136078823a1aef1358396d92a269ee Prevent player dat files getting reset during disconnects. + MinecraftForge/FML@33100d6bab654a4bd59701b1ec2bf91caa3399da Merge pull request #371 from bl4ckscor3/patch-1 + MinecraftForge/FML@572d32358ab11e5916d91c4c7b9c04a70cfed2f6 Merge pull request #373 from bloodmc/master + MinecraftForge/FML@d0dd05a15c2eca9eabd308319c2ed85cb632922b FML expands S3F to support payloads up to 2 megs in size. Should be transparent + +Build 1.7.2-10.12.0.1029: + LexManos: Fixeed a missed -1 in SpawnerAnimals patch. Thanks Blood. + +Build 1.7.2-10.12.0.1028: + LexManos: Cull FakePlayers when worlds are unloaded. + +Build 1.7.2-10.12.0.1027: + LexManos: Use correct tag types when reading Forced Chunk data. Fixes ticket loading. Closes #964 + +Build 1.7.2-10.12.0.1026: + LexManos: Fixed FluidContainerRegisry.contansFluid closes #845 + +Build 1.7.2-10.12.0.1025: + LexManos: Fix AIOOB error with Endermen and blocks >256. Also better support for ID remapping. More to come later. + +Build 1.7.2-10.12.0.1024: + LexManos: + Updated FML: + MinecraftForge/FML@03fb1879d72fbd347badc140fed6c2c3191d2990 Fix obf error when right clicking a Empty Map. + MinecraftForge/FML@6bb9b8b9532b276450d03a3419e0da016aecead8 Clean up FMLEventChannel. Closes #367. + MinecraftForge/FML@b7b3450dcd123ab5df6b3693c9c2123bc3846b88 Update MCP mapping snapshot to latest crowdsourced names. + MinecraftForge/FML@8c9e8b52708bd0630303f8b5dc184ab60e2553a1 Fix isRemote, this is integral to so many parts of the code, everyone knows it by this name, People should not change it. + LexManos: Add the beginnings of a Constants class, to document/clean some of the magic numbers that are in the MC code base. + +Build 1.7.2-10.12.0.1023: + Christian: + MinecraftForge/FML@d87822ad8519da1c808e48bcc0a1bf8eb15c0095 Bump gradle wrapper to 1.10 + MinecraftForge/FML@359ac3ca2a941d70709168fbbbc0725c861668dd Ensure we check both item and block registries when finding valid IDs. Should fix #365 + MinecraftForge/FML@cee0f0b81179d307059843f08401f8700fb3ddb2 Tweak so that writing to the context will automatically send a message back to the originator in handshakeestablished. + Christian: Add a discriminator for fluididspacket. remove extraneous channel handler. + Christian: Fix up the event handler so it knows it's owned by forge + +Build 1.7.2-10.12.0.1022: + LexManos: Uncomment aa few FluidRegistry entries. + LexManos: Fixed issue where enchantment effects caused slight rendeirng issue. + LexManos: Fixed missed parens causing trapdoors to fall off incorrectly. + +Build 1.7.2-10.12.0.1021: + LexManos: Inital Fluid system update, untested. Still in progress. + +Build 1.7.2-10.12.0.1020: + LexManos: Fix NPE when breaking ice. + LexManos: Attempt a AIOOB error fix in tesselator when there are alot of transparent blocks in the rendering range. + +Build 1.7.2-10.12.0.1019: + Christian: + MinecraftForge/FML@544320b8d239df4a5ee2b3a7ec331ce2ec0a2c09 Beginning of a saveinspectionhandler. + MinecraftForge/FML@ab199c5811fe2d831592601d4f77691fbf82d1b8 Try harder to find a mod container. + MinecraftForge/FML@8633d780c925ebb719c37ac52e2f3db5f9957895 And make a loud message if there isn't a modcontainer found, substitute Minecraft. In general, this can only happen for coremods not properly registering their code. Closes #363 + +Build 1.7.2-10.12.0.1018: + LexManos: Fix imporerly efficient tools breaking blocks to fast. + +Build 1.7.2-10.12.0.1017: + LexManos: Fixed potential NPE in SlotCrafting, and added ItemStack sensitive version fo hasContainerItem. Closes #854 + LexManos: Adds a WeatherRender in the style of SkyRender, Closes #844 + +Build 1.7.2-10.12.0.1016: + LexManos: Move change of metadata to immediatly after change of Block, should prevent any 'invalid' tile entities from breaking created. Reference: #897 + +Build 1.7.2-10.12.0.1015: + LexManos: New PlayerUseItemEvents, Start, Stop, Tick and Finish. See PlayerUseItemEvent.java for more details. Closes #924 + +Build 1.7.2-10.12.0.1014: + LexManos: Make ItemBlock.field_150939_a public, closes #945 + LexManos: Missing EntityAITasks.tasks and MapgGenStructreIO register ATs, Closes #949 + LexManos: Implement PlayerPickupXpEvent, fired when a player aquires XP from a EntityXPOrb. Closes #942 + LexManos: Exclude cobblestone slab recipe from ore dictification, closes #940 + LexManos: Add the ability for custom records to have finer control over there sound resource location. Closes #933 + LexManos: Don't short circuit item icons for multiple render passes while being used. Closes #929 + +Build 1.7.2-10.12.0.1013: + LexManos: Fix Furnace stopping on 63rd Item, Closes #947 + +Build 1.7.2-10.12.0.1012: + Christian: + MinecraftForge/FML@b6d95d704b65dd8232ec8ddd333de378db8fe161 Name the log files properly. fml-junk is an early startup annoyance I can't kill because log4j2. + MinecraftForge/FML@8692ca17d13eda036b5ef996ec8e8706e7707d80 Log4j2 logging context for things. This should help add context when things go wrong in mods. + MinecraftForge/FML@a7ca131a337b5f0d4fc6f438626ac2d5b7771b3c And don't spam NONE everywhere + MinecraftForge/FML@741e172ffe163f0dd3018e1474af46ef0696396a Log4j2 doesn't need debug level logging for itself anymore + +Build 1.7.2-10.12.0.1011: + Christian: MinecraftForge/FML@458b0620b43116c943549a0f060c7e8830c2d77a Log the bad packet in a prettier way. Also, don't show the authlib debug data in the log file. + +Build 1.7.2-10.12.0.1010: + LexManos: Add BookCloning to the recipe sorter. + +Build 1.7.2-10.12.0.1009: + Christian: + MinecraftForge/FML@9a8d16b66e67691a4c83a9e1e236304e9f6d5139 Fix log4j2 config. Fix server gui to *show* logging. Fix log spamminess in the console. Fix bug in servergui that can cause deadlock. + MinecraftForge/FML@a355eecb2c14123964c6ae2402a0933d57ae9736 Add in error logging for outbound messages. Fix bug with indexedcodec NPE + MinecraftForge/FML@1c793abe0eef6846f681c9673019b0ebc49caaaf Fix derp with networkcheck + MinecraftForge/FML@675b5a07788ada17bc26a9c4f26598e77d2098cf And turn down some more logging, now we have useful logging back again.. + +Build 1.7.2-10.12.0.1008: + Christian: + MinecraftForge/FML@4aa2416ce5dcd8e77761703c018d1e7d08464025 Propagate Optional method removal to trait implementation classes + MinecraftForge/FML@fc025a7b73d9b3f46ecf2257227657592f5506b5 Logging Changes + MinecraftForge/FML@f0132a6f3b47e746a1a7df3ef84f4be989f140dd changed fml log level to all + MinecraftForge/FML@f23eba4352c38fd21e04e81f3db72c6cafe65a36 put max number of FML log files to 3 + MinecraftForge/FML@449ac98b77025eba38a75d0242113fffe26a8cf9 SSP Worlds updating from 1.6 will now pop a warning message before loading, and will capture a timestamped zip file in the minecraft dir before starting to load. Allows for people to test updates. + MinecraftForge/FML@3557fe31c92ea8d76c90052f9b8b6da963300c4f Throw an exception when discriminator is not found + MinecraftForge/FML@25240457283ba40c32022c97fc982c2ff4408e46 Make NetworkEventFiringHandler sharable + MinecraftForge/FML@dfc0899ec66f87502b5727939ac2f0ad0fabf89f Merge pull request #357 from jk-5/sharable + MinecraftForge/FML@79d42fca8d6b9d73204890ef0edb9d73cf075d87 Merge pull request #355 from jk-5/errorhandling + MinecraftForge/FML@7907e16e96de21e8ba536906ae71adcf02bfa535 Add a type adapter for artifact version. Should fix #354 + MinecraftForge/FML@7ac5bddbc3c227e0ed9385904a2bd9621078e2de Allow indexed messages to validate themselves. Also, catch exceptions from an embedded channel, and cause them to close the connection. It's ugly, but it means that the client doesn't crash if it connects to a screwy bungycord that's trying a 1.6 handshake for some reason. + MinecraftForge/FML@5adacc3b336bacbe30aa06175ef80c3aac08a62a Check the mod, not it's container, in the check handler. Closes #358 + MinecraftForge/FML@3d26f28bcf3e79e1f5fe20fcf056c604487dc35b Allow connection when server is apparently offline. Might allow :NOFML circumvention though. Hmmm. Closes #359 + MinecraftForge/FML@a62374d4aceac1c4ab39b3c0bae624ccbca65b6b findBlock should now return null, not the default block, if the thing being looked for is not found. Closes #352 + MinecraftForge/FML@6a695c4348d062af50b8cf5208530fc5036eba17 Try and stop the epic channel closed spam at close time. Closes #353 + MinecraftForge/FML@35a38d7840a5d0cd842005822c4ec6a9d3b65b6a Make sidedproxy support non-public fields. Closes #344 + MinecraftForge/FML@9d2e089df692655df04315a3822f43140015f3af Merge branch 'logging' of github.com:AbrarSyed/FML into abrar-borked + MinecraftForge/FML@79b04898d43d354714e09ce7e66efb5357ebcf61 And restore suppressions. ABRAR, DON'T TIDY CODE!!!! + MinecraftForge/FML@3dfb54e066ab91e44405706233f2dfffee9add72 Merge branch 'trait-optional' of github.com:RainWarrior/FML + MinecraftForge/FML@32bb7315cc6beff84f186a33e73219cc5280821a Add in example assets dir. Closes #308 + MinecraftForge/FML@16d33d298953b41dbbe3e3b504e800f4f46a3e1b Clean up and document outbound handler a bit better. Add in dispatcher target. Closes #361 + MinecraftForge/FML@5719b9ec533b3e43213dbafcb448221884efd9e8 Fix reply handling. Make the proxy message available for subclasses of indexedcodec. Fire user events into the network event firing. + +Build 1.7.2-10.12.0.1007: + LexManos: Add support in Techne models for the TextureSize tag. Closes #856 + +Build 1.7.2-10.12.0.1006: + LexManos: Updated FML: MinecraftForge/FML@444a7d7fa1cf7fad7dda67f581fa0e3be36069b7 Move placement of single player world load hook to fix NPEs. + LexManos: Fixed RenderWorldLastEvent never being called, was missed in 1.7 update. Closes #932 + +Build 1.7.2-10.12.0.1005: + LexManos: Fix flexible rails, Closes #944 + +Build 1.7.2-10.12.0.1004: + LexManos: Fix warnings in Forge codebase. + LexManos: + Updated FML: + MinecraftForge/FML@7c5d62704ac1d3e586f3bfe26265a534e5362c73 Make UniqueIdentifier final and add a hashCode. Closes #348 + MinecraftForge/FML@ff7b5845e7f6b300d413b917f57adc472a4ebcff Clean up some warnings about @Override + MinecraftForge/FML@275ccac6f14bc66b88c76b1040aa7167f995967c Fix NPE at startup + MinecraftForge/FML@2a5a8d0cd062d3feac9c4de234e3dab1ff4462e5 Fix memory leak?! + +Build 1.7.2-10.12.0.1003: + Christian: + Add exception logging to forge channel handlers as well + + MinecraftForge/FML@53557dcd0582e09f7f35eb3bc2fd130fba3be4a0 Put logging exception handlers on all channel inbounds. Fix problem with failure to login. Closes #350 + +Build 1.7.2-10.12.0.1002: + Christian: MinecraftForge/FML@9c96ca4402e4c231285f170281dd543bfffa191a Fire a custom packet channel registration/deregistration event, for any mods that care about that kind of thing + +Build 1.7.2-10.12.0.1001: + Christian: + MinecraftForge/FML@e14efe786f6255a18e148c4137f560f5e2d2a38f Some fixes and tweaks + MinecraftForge/FML@c013870b1df5e63bd84d92545ebdd434db74b5d1 Merge branch 'simplenet' + MinecraftForge/FML@30882b0c1d2743afebbebc288d73f25696e0815c Clean up some warnings. Add in simple network impl + MinecraftForge/FML@9cab2ab36e7981c847e3e9ae8c3fbbb36531ba6d Add in some tests and examples for the "simple" network stuff + MinecraftForge/FML@a429e106dd00b34302ec5893e0a8fc97c8fc8019 Fix bug with SSP, and hook so we can do confirmation of world loading, as well as other things + +Build 1.7.2-10.12.0.1000: + Christian: + MinecraftForge/FML@b362e8a2733eb3082975edfdf83c996f048b65d3 At the request of AbrarSyed. + MinecraftForge/FML@e344303ec7a5ed27c4378ff072a036df7a350902 Merge pull request #346 from Jezzadabomb338/master + MinecraftForge/FML@a4686b1261a9bad523b4efa8a36a4433a58897cc Added basic Mojang account authentication support for development time login. + MinecraftForge/FML@dd17979a2f6f02ac4a9dda09b52c96365cc5fec9 Fix bukkit connectivity issue. + +Build 1.7.2-10.12.0.999: + Christian: + Updated FML: + MinecraftForge/FML@1db3daa0e82e67fc27ca3d535a09c806c1a54d67 added override toString method for getting full name. + MinecraftForge/FML@acf74a34032224a73c4c03280cafa0042c35cf5a changed the readme to reflect new setup task. + MinecraftForge/FML@96c19b35807fa078cb18b4ae50567d0360bcdb03 undid readme change + MinecraftForge/FML@a89939e57e9ff061df3d53cf1cb075b31de5de1b Merge pull request #336 from jadar/master + MinecraftForge/FML@717a8d694532bd9438eed8d9cf4b57318b2b4cfd Fix csv string vs list of strings. Thanks immibis. Closes #334 + MinecraftForge/FML@584c0f368bca1d5b0223b5b3611b366b9a00f7d7 Fix potential ordering issue, clean up some imports + MinecraftForge/FML@28293b29ea65c30fe80c49e85e2ae15a4db68933 Add in a simple(ish) event driven network handling system. Register using newEventDrivenChannel and you'll get a simple network handler that will fire events at the subscriber(s) of your choice, whenever a packet is received. You'll also get some convenience methods for sending to things. + MinecraftForge/FML@80b00dc7966d96111e2ce8643db8e0f544c2bc89 Fix openGui. Closes #342 + MinecraftForge/FML@fc69bcf2807dc2b85eb52681ba9531cb3e2f1945 Fix up privacy derp in TickEvent. Closes #343 + MinecraftForge/FML@10d056a494aac22137b644cff341a5958e8168fc Fix possible NPE derp + MinecraftForge/FML@5da6dcc7e3607e5f107f6a7d39a4b4e1eb7fb306 Divert connection through FML, so we can deny connections to servers that don't want us + +Build 1.7.2-10.12.0.998: + ohai.iChun: Squash commits so Lex would stop whining. Fix erroneous position when getting player position with changed eye height. + +Build 1.7.2-10.12.0.997: + Christian: + Updated FML: + MinecraftForge/FML@d5bfd69e35b21f701390a8c4c4c58d7ec1fff1fc Fix problem with connecting to vanilla. SHOW what's modded and what's vanilla in the list. Hooks that make the blocking work to come + MinecraftForge/FML@dd098854b0b65b8509b8788422e02d989a991b87 Fix the keybinding array to the right one + MinecraftForge/FML@43068eb9862f280611f26f4107ff5ac2b42b08e4 Fix TargetPoint to be static + +Build 1.7.2-10.12.0.996: + LexManos: Attempt to prevent a NPE when MC renders a lot of things at once. + +Build 1.7.2-10.12.0.995: + minalien: Fixed MinecraftForgeClient for custom Item Renderer implementations. Removed check for forward-slashes (/) in texture asset locations (but left check for backslash in place). + +Build 1.7.2-10.12.0.994: + LexManos: MinecraftForge/FML@0d810c01fab99ac491c2277097a4198518fe6c75 Mark jopt needed on the server, herp derp, blame Abrar! + +Build 1.7.2-10.12.0.993: + LexManos: Deprecate BlockFire.func_149842_a, and throw exception if someone tries to set the burn properties for air. Should prevent 'The Air is on fire!' reports. + LexManos: Fix DoublePlant placement, closes #921 + +Build 1.7.2-10.12.0.991: + verybigbro: Create ru_RU.lang + +Build 1.7.2-10.12.0.990: + Christian: + Updated FML: + MinecraftForge/FML@5317672631f30e1c9655f0bb28dd8b158deea2fb Add a utility method for finding the channel handler name based on type. Should fix naming weirdnesses. + MinecraftForge/FML@9de9a1553086ebeeb5d5fc0f6d96da8680e52df0 Fix stupid hardcoding derp + +Build 1.7.2-10.12.0.989: + Vexatos: Create de_DE.lang + Vexatos: Update de_DE.lang + LexManos: Fixed pipeline naming issue in the ForgeNetworkHandler. + +Build 1.7.2-10.12.0.987: + LexManos: Fixing an infinite recursion case, Closes #916 + LexManos: + Models now load from resource packs + Models must now be loaded from resource packs using the standard resource pack reference. For example, to load a model named "assets/mymod/models/mymodel.obj", you would call AdvancedModelLoader.loadModel("mymod:models/mymodel.obj"); + Closes #670 + LexManos: Fix panes/iron bars not connecting correctly. Closes #904 + LexManos: Fixed the run config for dev time server, Cloases #913 + +Build 1.7.2-10.12.0.986: + Adubbz: Made canBeReplacedByLeaves default to whether a block isn't opaque rather than if it is, also uninverted the checks for canBeReplacedByLeaves in WorldGenBigMushroom, WorldGenSwamp, WorldGenTaiga1 and WorldGenTaiga2 + +Build 1.7.2-10.12.0.985: + Christian: Fix inversion + +Build 1.7.2-10.12.0.984: + Christian: + Updated FML: + MinecraftForge/FML@21b13d63512ce399c82cbb6b9042eefa6dcdaacd Lots of network cleanup. Gui packets now work too! + MinecraftForge/FML@b3f98d1ee0416aa452f8611d458968afdf50775a Fix derpiness with Mods button when Realms is available + MinecraftForge/FML@cdd9d92a4f8cd199e2d8a34bb398ef32e5f1e275 Starting work on the actual GUI. Still work to do. Needs an API. + MinecraftForge/FML@ab5eb3ccfff7f9ccfd8720b23fcef3131e54d57d Fix button size for GuiModList + MinecraftForge/FML@3113138bd1377d71afe3b8290e18511bfb6e5e97 Tweak button positions. + MinecraftForge/FML@c5e29b574a315d48668ebc9189bcc497a0eae13e Avoiding redundant calls to LogManager + MinecraftForge/FML@fbc1f8f6f9effa4a538880f9fec0ce5010226d09 Config GUIs in the modlist now work. + MinecraftForge/FML@fa4f3015a0d7147cbde3edec7664e78e5bcacbb9 Added transparent background for GuiIngameModOptions as per cpw's request. May not compile due to manual de-mcp-fication. + MinecraftForge/FML@7bf119e1e54cadff690ec31a4bab93c0d1d0aad1 Fix up readmes and credits. We no longer support modloader. + MinecraftForge/FML@779cd05aa1ced720a63cc508b82e68cc6fc8daa9 Tweaks + MinecraftForge/FML@b51fb913551a5116cc3b9bb7583b1666f280c650 Merge branch 'patch-1' of github.com:airbreather/FML + Christian: + Updated FML: + MinecraftForge/FML@6f1da6550e10164bd6c678829f111bb5de9383b6 Fix up mcpname derp in GuiScrollingList. + +Build 1.7.2-10.12.0.982: + Adubbz: Fixed sky colour transitions on a render distance of 16, fixed the WorldGen of various things + +Build 1.7.2-10.12.0.981: + jk-5: Update ForgeMessage.java + jk-5: Added a constructor and made the fields package-private + jk-5: Added default constructor for reflection + +Build 1.7.2-10.12.0.980: + LexManos: Update patches for AT changes. + LexManos: Fix inverted login in BlockPistonBase causing blocks to break incorrectly. Closes #910 #909 + +Build 1.7.2-10.12.0.979: + Christian: + Updated FML: + MinecraftForge/FML@22ba6fda5ee2dbf29dc03ba93ff9c7707edeaeee Expose the nethandler in a few places, and pull out FMLEmbeddedChannel, exposing a utility method on it. More to come. + LexManos: Update for the FMLEmbeddedChannel change. + +Build 1.7.2-10.12.0.977: + Christian: + Fix build.gradle for tweakClass property + + Updated FML: + MinecraftForge/FML@f36152398d1d287e7a55a31c77a2614cfb63e1b6 Add in the tweakclass, fix the json for lzma @ the server. + +Build 1.7.2-10.12.0.976: + Christian: + Updated FML: + MinecraftForge/FML@5d069629cf47cd04f2002b3b9a2c32b0ea73c26e Allow itemstacks for furnace recipe inputs. Allow passing extra arguments through registerblock into the itemblock constructor. + +Build 1.7.2-10.12.0.975: + Christian: + Updated FML: + MinecraftForge/FML@061288909de0f0452adf51a5a9935fd09992c801 Fire simple network connect/disconnect gameevents. + +Build 1.7.2-10.12.0.974: + Adubbz: Made BlockCrops.getDrops call its super method + +Build 1.7.2-10.12.0.973: + Christian: Fix the network handler for forge + +Build 1.7.2-10.12.0.972: + Christian: + Updated FML: + MinecraftForge/FML@34819c9303870f560232464a2d16eb46d152515c Make gradlew executable on linux + MinecraftForge/FML@53a1f9841421b41d543d7d1d51319b44c86a527e Attempt to load old pre-1.7 worlds. ENSURE YOU HAVE A BACKUP! + MinecraftForge/FML@6a5f9e135f88b662e4e01e8882f861448910ca90 Fix example mod code for 1.7 + +Build 1.7.2-10.12.0.971: + Christian: Allow tools to override their material harvest levels. + +Build 1.7.2-10.12.0.970: + Christian: Tidier implementation of previous commit. Should fix for subclasses of individual tools too + +Build 1.7.2-10.12.0.969: + Christian: Add in harvesting abilities of the items, should fix effectiveness + +Build 1.7.2-10.12.0.968: + Christian: + Updated FML: + MinecraftForge/FML@f8d6213829d570501166d64d7c8bb4977567131f Update render registry + MinecraftForge/FML@ec316f113fefef12f6defed9eb68de368d7f4420 AT for renderblocks + +Build 1.7.2-10.12.0.967: + LexManos: + MinecraftForge/FML@3714426e19f8f0edaaeda8c787993f8f3615a44d fix derp in example builscript + MinecraftForge/FML@01fb451b6918599de5e732d7ff30c761438ab930 Merge pull request #311 from AbrarSyed/patch-3 + MinecraftForge/FML@30d532f4fc6fc65ea7e79707a75ff4d6ea0ea031 Pass 1: Most patches are restored. + MinecraftForge/FML@53127eec308d3929d68d3d9fafabcfef37e95c37 Merge branch 'master' of github.com:MinecraftForge/FML + MinecraftForge/FML@7ab3c3a37ceb8ab945208206aec86739a2138329 Update gitignore + MinecraftForge/FML@38cec7a11fae7cf12bda3a8d16a50bb6136d8886 The basic network handshaking for FML is done. All scenarios seem to work. + MinecraftForge/FML@9f928963f20bc9bbfbe1391fb16c6f5ca5fd4344 A network design I like. It uses the netty embedded channel to allow mods to build channel pipelines on top of custom payload packets. + MinecraftForge/FML@58f7487cfaf4a25a8349021b9cca5ef4ba0b541c Check in patches. Add in some network timeout tweaking values so you can debug the network. + MinecraftForge/FML@e544adba5c7e9286f917342af2669e5888fa0a17 More cleanup. Bidirectional server <-> client network works for mods as well as FML|HS now. + MinecraftForge/FML@f5c38e2359c2e6eca13cd6606465ee36086a7113 OK, network channels appear to be working well for both dedi and integrated servers. The beginnings of the new mod structure too. + MinecraftForge/FML@9c96a0a10a5cbe34786be8fd41f9818b5ac929bc More network stuff, partially done id syncing. + MinecraftForge/FML@2aaaeba15eabdec189daa8662e9ffdf0b5a09dbe ID loading from the server save now works. + LexManos: Kill liquids finally. + LexManos: Bump data for 1.7 start. + LexManos: Some work on 1.7, waiting for Abrar to fix a few things. + LexManos: + Updated FML: + MinecraftForge/FML@a30f17362764f3e4e594386e193f9e4368e6836e Add sonatype snapshots repo for SpecialSource snapshots. + MinecraftForge/FML@b2550b8a693315ccc205f5315eac67c5283d7af9 Add mappings for Items/Blocks fields. + MinecraftForge/FML@57f7f1d7abd304d3e9f42567f1d66c10122e4ec6 Update for fixed Enum cleaning and names. + MinecraftForge/FML@99c681ad8736e4976053718c3d453b2fb30eefe0 Did it manually, forgot it needed the end comma + LexManos: + Updated FML: + MinecraftForge/FML@1d71c017f45aa7ed9d7d7c5ed5250a8d22477980 ID syncing. + MinecraftForge/FML@fd36f50d8210342f65cb0272bac56a3bcc42dd18 Cleanups + MinecraftForge/FML@89e4e483c204c11b6fdfed34893fc223a7d6a899 Add in a remapping event for mods to consume. + MinecraftForge/FML@cd417c6786256fa23f181ff0b76696bc6dfb0291 Fixed remote and local connections work with mods now. + MinecraftForge/FML@ef492407ef812bb6bbc7f0bd8efbd16d07efcafb Entity spawning works. + MinecraftForge/FML@d0d31d9575403eb2ec058898b86ffd99a9220f75 SpawnAdjustment packet. Clean up stuffs. No more compile errors. + MinecraftForge/FML@3e278acb71e4e3d0406e80f0fad5071c9215ed33 Fix stupid possible compiler error. + MinecraftForge/FML@009d4dee2328cc8d97b74177a2c5a3c359e6564a Fix the exc file. Fix the deobfremapper for handling inner classes. + MinecraftForge/FML@49cb893d12bd4f82b5d1b50d1e6517a256525d32 Fix exc this time *sigh* + MinecraftForge/FML@31efcfc3b2085f5d4e070ddab34a0be1481b4c6f Clean up patches for latest exc. + MinecraftForge/FML@7a4ceebf5efe5b3650080cf912e371d92fc70a55 Kill old patches and add rejects to ignore file. + MinecraftForge/FML@7ea571f593464ad4226ba845da27ff66161621b1 Fix AT, Fix exc. Almost works now! + MinecraftForge/FML@b852e302851cfaf77e1db6f86408e8d049703656 First functional release under reobfuscation. + MinecraftForge/FML@df870c1a3341d8e2e88d7fc3e2f3d9ed2507989f Update shiped ForgeGradle for 1.7 + MinecraftForge/FML@55aa337f952bc72c5a001a6ed661978b11822c63 Rename synthetic bridge methods, these methods are not decompiled, but need to reobf correctly cross the recompile boundary. + MinecraftForge/FML@0098c57f94808751062ee45f2ee267324bb42089 Merge pull request #316 from AbrarSyed/patch-4 + LexManos: Comment out fluids until King gets his hands on it + LexManos: Killed a few hundred compile errors. + Christian: + Moved the core event handler parts to FML. Implemented the Forge network handler based on the new + netty strategy. + + Updated FML: + MinecraftForge/FML@3b2994a3def35a2d3058960b71dc59dc48b802f9 Some patching touchups + MinecraftForge/FML@557357fe179529e0b44aab2f3fcef0c5adf981d5 Update for log4j2 + MinecraftForge/FML@a2b324beb2ef6ec73000678c9305fd70d4ec1643 Copy eventhandler from Forge into FML. It is going to replace a lot of the runtime event systems. + MinecraftForge/FML@4071ff38afe15fddf5db0be882f5627f503a37c6 Patch some GUIs. We're gonna add some basic mod gui config support. + MinecraftForge/FML@0b419ac79c307579f162d47e0388a9d75bcd0a6e Fire a user event down the channels when a handshake has occured. + Christian: + Updated FML: + MinecraftForge/FML@32561265fc935cd6639d5b2e086e879f375676fa Ticks, Player events, keybindings, all migrated to the new event driven system. + LexManos: Inital patch update for 1.7.2, Doesn't compile, not done yet. + LexManos: + Updated FML: + MinecraftForge/FML@a17489172cd54ca955548b15fa0669c9f95d7f45 Code to disable mods at runtime, or other times. + MinecraftForge/FML@85516d9588ebfadbba25f21b2f973e4e81abbaa6 ICraftingHandler, IPickupHandler are now both events. + MinecraftForge/FML@e4b63a1801b453797f5e820eb3f5bd42e6d43948 IWorldGenerator now has an ordering at registration time. This means the order of worldgen should be much more stable. + MinecraftForge/FML@ef3856f9a34e82a05cb2b7715e3611f8fb1a9a6b Update patches for Gradle's rename rewrite: MinecraftForge/ForgeGradle@19e7acf2a27a6c6ae60f6e8ab38337defddc16d3 + MinecraftForge/FML@31ea100b29dfdb4fc907e212c3d49a5240ca72a9 Working on id missing handling + MinecraftForge/FML@3e76dfba34aaba4397fc3fb2bd28e0d1f0abe3e4 More tweaking on id stuffs at worldload + MinecraftForge/FML@f860c8ad3bc7537f885b27c7f045b5b1140c05f4 bump to legacy launcher 1.9 with logging unification stuffs. + bloodshot: + Refactored BiomeManager stronghold add/remove methods to support new + + MapGenStronghold dynamic biome changes. + Changed InitNoiseGensEvent to pass a NoiseGenerator array instead of + NoiseGeneratorOctaves due to new NoiseGeneratorPerlin in + ChunkProviderGenerate. + Fixed worldgen crash caused by wrong metadata in Chunk patch. + LexManos: Get object based on identity not name. + LexManos: Forge uses the FORGE channel for packets. + LexManos: Fix MethodNotFound crash when shutting down internal server. + LexManos: + Fix: + Block placement/interaction + Tesselator crash due to wrong mapping + Missing isreplaceable check in world.canPlaceAt + Small foratting/logging cleanup + Temporarly commented out efficancy changes till I implement it. + LexManos: + Updated FML: + MinecraftForge/FML@58132ccda3a575f10fc209c421fd5d80e01164cc Add new required --accessToken to launch specs. + LexManos: Bump version to 10.12.0 to mark 1.7. + LexManos: Fix debug HUD rendering semi-transparently. + LexManos: Temporary fix for items rendering with effects on one layer. Restores default vanilla rendering, which is considered a bug in modded community. + LexManos: Move Grass {Flower} registry to BiomeGenBase as 1.7 made flowers Biome specifc, this means modders who wish to add global base flowers need to add them to all the biomes indavidually. + LexManos: Fixed accedential inverted logic that caused Potions to render incorrectly. Thanks iChun. + LexManos: Fix items rendering on the GUI with invalid state due to glint rendering changing it. Thanks iChun. + Christian: + Updated FML: + MinecraftForge/FML@156a9ae03a3c80bd1499a8e692c44a322ad9df62 Fix build script + MinecraftForge/FML@7d3b1250e8368886bed0e0da350a94abaa4b6247 Fix handshaking properly. Also, fix ID syncup. It now will completely freeze the idmap after preinit. This frozen map is used to inject "new" stuff into existing serverside worlds. Interesting sideeffect: remote servers lacking things will change the client, to also LACK ids for those things. watch for -1 ids in your remap events. Note: idmaps should be considered temporary per server instance. SERVERSTOPPED will restore "startup" state, as will client logout. + LexManos: + MinecraftForge/FML@c180d9b15735ce89a38c497acd65fa3fab595f77 Add 1.7.2 base json, Gradle will automatically download updated versions of this. Keeping it in the repo allows us to se + e what base json we have built our jsons off of. And if it changes update accordingly. + LexManos: Added constructor to WorldType, and delegated the BiomeLayer management to it. Also updated the access transformer for Item/Block classes. + LexManos: Forgot to regen patches... + LexManos: Resize pending tile updates when it goes over the curent length. Fixed AIOOB error. + LexManos: Add a version check mechanic to startup, it is done in a seperate thread and has a config option to compleetly disable it. This allows us to notify users of new recomended builds. Hopefully stemming the flow of outdated help request. Also adds a warning to the main screen if you are running a 'Beta' Forge. Which means a Forge for a new version of Minecraft that we have not promoted a recomended build for yet. + LexManos: Fix dig speed on redstone ore and obsidian. + ohai.iChun: Add render offset to event. + Christian: + Updated FML: + MinecraftForge/FML@268bbabee6ae3fa1d596bd18e172298e26dc9ce4 Fix handling world reloads when new stuffs are added + +Build 1.6.4-9.11.1.964: + LexManos: + Bump build for gradle fixes: + Now Builds for java 1.6 + Include version,json in universal + Fixed classpath issues in eclipse task. + +Build 1.6.4-9.11.1.963: + luacs1998: + Update readme for ForgeGradle + + Let me know if there's anything else to add or change. + luacs1998: Updated + luacs1998: Another update for eclipse users + luacs1998: Update README.txt + +Build 1.6.4-9.11.1.961: + LexManos: Updated FML: MinecraftForge/FML@c2b919d339e5f63271cfb67a77235c21c5c3b80e Don't validate signatures in dev env. + +Build 960: + Abrar Syed: Step 1: The Purge + Abrar Syed: update FML for gradle changes + Abrar Syed: Step 2: The Reformation + Abrar Syed: Step 3: The Rebirth + Abrar Syed: fixed versioning and stuff + Abrar Syed: added buildSrc to the gitIgnore + LexManos: Fix for new FML, and publish to maven local + LexManos: Update run configs. + LexManos: + Updated FML: + MinecraftForge/FML@e9a7660cb8961660186c7c23e61ab35f9c2dfb81 updated samples + MinecraftForge/FML@30894f7afadf5d3f3c3d5a54c3f904413d5f2309 Merge pull request #307 from AbrarSyed/master + MinecraftForge/FML@c4b8a393f90b00ad7ee4992ea4341ffb6d676abb Make the working directory the root of the eclipse workspace. + LexManos: Regenerate all patches, No functional change as added this is a formatting change only. + Abrar Syed: update build.gradle + porcariadagata: Make the gradle wrapper executable. + LexManos: Proper configuratuion name for jenkins. + LexManos: Fix build file pom closures. + +Build 1.6.4-9.11.1.953: + LexManos: Fix NPE on specific tile entities when the block break event is canceled. Closes #863 + LexManos: Fix NPE in FakePlayers when they are created in a purely client side environment. To remove in 1.7 as FakePlayers should be used for server side interaction with the world on a player's behalf, not for client rendering. + +Build 1.6.4-9.11.1.952: + Christian: + Updated FML: + MinecraftForge/FML@23baf3a8ce58cb8306189401a60647957ccbb4c2 Actually fix the nethandler code + + Update patches + +Build 1.6.4-9.11.1.951: + Christian: + Updated FML: + MinecraftForge/FML@b7f34629c3c47b92ee89d72b0dc935b4997cb009 Don't try and open GUIs on the server. + Christian: + Updated FML: + MinecraftForge/FML@da72640c7ef1f44c49f7f592fbdd193622a30b40 Way to go, missing import. *sigh* + +Build 1.6.4-9.11.1.949: + Christian: + Updated FML: + MinecraftForge/FML@6af42bc656dfb98972d034363352affc9e777805 Add in null protection for client/server sides of handleChat + Christian: Don't send openGui commands from the fakeplayer. Fixes thaumcraft and probably others. + +Build 1.6.4-9.11.1.948: + CovertJaguar: Fix Water/Lava Fluid Localization + +Build 1.6.4-9.11.1.947: + LexManos: Noop out FakePlayer.addStat. + +Build 1.6.4-9.11.1.946: + Christian: + Updated FML: + MinecraftForge/FML@3d25b4e793c59a9131a441d6c7a2d80cac9cd701 Add in the ability to strip interface references for specific interfaces - this is probably mostly useful for scala scenarios where sythetic methods are generated and is not a substitute for using Optional.Method where appropriate. Closes #300 + +Build 1.6.4-9.11.1.945: + onibait: Add block break events based on @bloodmc's initial 1.5.2 Pull Request + onibait: Add block break events based on @bloodmc's initial 1.5.2 Pull Request + onibait: Fixed formatting + onibait: + Cleaned up patches to BlockOre and BlockRedstoneOre + Fixed trailing whitespace (it bugs me too) + +Build 1.6.4-9.11.1.944: + Christian: + Updated FML: + MinecraftForge/FML@f4532410ec1dbf43ce15dfa78d07e5f7be408b08 Change a couple of warnings, as a prelude to 1.7- preinit is now required for all GameRegistry activity, and every item and block REQUIRES registration. + +Build 1.6.4-9.11.1.943: + Christian: + Updated FML: + MinecraftForge/FML@8f87021b0f1ae5b277ad4d1891761b7a7ae1ab71 Fix derp with custom properties. They work now! + +Build 1.6.4-9.11.1.942: + Christian: + Updated FML: + MinecraftForge/FML@bc57ff9e83803d804e9d5374d76273fcd68611f4 Fix recursive API dependency resolution. Allows nested APIs, such as BuildCraft's + +Build 1.6.4-9.11.1.941: + Christian: + Updated FML: + MinecraftForge/FML@de8ab934d8ae960ebc0dede16218ca1e9e488ebc Fix up duplicate entries + +Build 1.6.4-9.11.1.940: + Christian: + Updated FML: + MinecraftForge/FML@81fe1c9682234297443402a54e4b852ef49d0ba8 Add in an API marker for API type packages. This does several things: 1. Packages marked as API will generate a new "modid" (the provides) that can be depended on. 2. Packages marked as API will be searched systemwide, and anything declaring that package (even without the API marker) will get an implicit dependency on the API package. 3. The API package itself will get a soft dependency on the "owner" package. + +Build 1.6.4-9.11.1.939: + LexManos: Add new recipe sorter that is called after all mods are initalized. This is disabled by default in 1.6 to not break current worlds as it may change machine's recipy outputs. Will enable by default in 1.7. Players may enable it in the forge config. + +Build 1.6.4-9.11.1.938: + xcompwiz: + Adds a Check to prevent Biome Replacement + + Splits the BiomeGenBase constructor to create one which takes a flag + that indicates whether to insert the biome object into the biomeList + array. The standard constructor calls the new one with the default of + true. This allows biome wrapper-objects to exist. + +Build 1.6.4-9.11.1.937: + Christian: + Updated FML: + MinecraftForge/FML@dac7f590eabb326c4467dbc829b4aae1e4be2779 Modify ordering of networkmod registration and mod instantiation. This fixes VersionCheckHandler logging an incorrect failure message due to NPE. + MinecraftForge/FML@f0dc530b2833a1c89673208fe296dba5520671c1 Fix up documentation of VersionCheckHandler - it only ever accepted a String and only works on the NetworkMod annotated class + MinecraftForge/FML@243a21a353e6b7717f64008776928c7132110ddf Wrapping coremods as tweakers. Part 1. + MinecraftForge/FML@58a299aabcfadb4139f126a2d46b5247bede4185 Attempt to inject coremods as tweakers, so both can share a dependency ordering + LexManos: Format strings properly in MC's internal logger. Fixes resource pack case warnings. + +Build 1.6.4-9.11.1.935: + LexManos: Updated FML: MinecraftForge/FML@bf54d4d66799f2e58944095826d0722ed0120b1f Make each mod's EventBus log a child of it's main logger. + LexManos: Fix null pointer exception in BiomeDictionary causing the ChunkManager's config to not load/save. + +Build 1.6.4-9.11.1.934: + LexManos: Add wildcard versions of OreDict replacements, Closes #827 + +Build 1.6.4-9.11.1.933: + Christian: + Updated FML: + MinecraftForge/FML@da4337efbfa07b35f5883107768f9ba2f1b24b9b Fix up handling the new method signature data for NetworkCheckHandlers + +Build 1.6.4-9.11.1.931: + Christian: + Updated FML: + MinecraftForge/FML@f92962bbbbb90c19788a5dc2eafdc2eeefdd77ce Use null to empty, so missing values work. *sigh* + +Build 1.6.4-9.11.1.930: + Christian: Add in an event for zombie summoning. Allows for mods to control summoning behaviour, as well as custom summoned mob. + Christian: And remember to make the event class static *sigh* + +Build 1.6.4-9.11.1.928: + Christian: And allow for tweaking baby chance as well. + Christian: And set the RIGHT variable *sigh* + +Build 1.6.4-9.11.1.926: + Christian: Allow configuration of the zombie additional summoning mechanic. The vanilla mechanic is a little borked at times. + +Build 1.6.4-9.11.1.925: + Christian: + Updated FML: + MinecraftForge/FML@58577775d277a4408bda510534eb36841b08ced4 Very minor style fixes + MinecraftForge/FML@96be82343c25b83dd842ada8d6e8b66eb4e4ee00 Merge pull request #280 from mc10/patch-1 + MinecraftForge/FML@2714da10228020a6f2321f6c9a703f0d24fe1370 Primitive capability for tweakers to order. Add a "TweakOrder" integer property to your manifest, or accept the default of zero. + +Build 1.6.4-9.11.1.924: + LexManos: Prevent session from being printed to the console, also make sure the username is not empty. Causes a lot of bugs further down the line. + +Build 1.6.4-9.11.1.923: + Christian: + Updated FML: + MinecraftForge/FML@fc3e7647d2aff01146b1f5bd2ab6b57ef8e833e5 Support, and fix up, interface lists for Optional + +Build 1.6.4-9.11.1.922: + LexManos: Added some missing air checks to world gen features. + +Build 1.6.4-9.11.1.921: + LexManos: Fix repeated argument in CleintCommands. + +Build 1.6.4-9.11.1.920: + LexManos: MinecraftForge/FML@a381874bb9c3bdeeb508bb81719b4d210eb29696 Delay sound system backend initalization to speed up startup and prevent race condition on some computers. + +Build 1.6.4-9.11.1.919: + reflex_ion: + Added PlayerOpenContainerEvent and added ForgeHooks.canInteractWith + + - Used to override the canInteractWith during player tick + - setResult to ALLOW/DENY as required + - Defaults to Vanilla behaviour in any other instance. + + Required for LittleBlocks Mod and to Assist Gullivers Mod + +Build 1.6.4-9.11.1.918: + Christian: + Updated FML: + MinecraftForge/FML@bc64ceabef76b1f4667b22ca8241b72351b44338 Optional shouldn't be constructable itself. It's purely a wrapper thing. + MinecraftForge/FML@55525f6d2eb24f42c26a291b8ce98feb4d4498c9 ModLoader is officially deprecated. It will all cease to be with 1.7. + +Build 1.6.4-9.11.1.917: + Christian: + Updated FML: + MinecraftForge/FML@63ba3aa0099f43183315fb4e16f9e8e8007362f8 Add in support for Optional interfaces and methods. Be gone coremods! + +Build 1.6.4-9.11.1.916: + LexManos: Fix missing patch which caused per-world storage to not be saved. + +Build 1.6.4-9.11.1.915: + rhilenova: Added pre/post to player list rendering in GuiIngameForge. + rhilenova: Moved PLAYER_LIST event inside display check. + +Build 1.6.4-9.11.1.914: + LexManos: + Make isItemStackDamageable() pass the stack to getMaxDamage() to use the Forge version of getMaxDamage(). + Fixes display issues with mods using getMaxDamage(ItemStack) instead of the vanilla one. Closes #805 + LexManos: Bump version number for todays changes. + +Build 1.6.4-9.11.0.913: + ben.blank: allow blocks to choose how they handle indirect power + ben.blank: move `shouldCheckWeakPower` to Forge section + +Build 1.6.4-9.11.0.912: + jrtc27: Pass arguments to install.sh and install.cmd to install.py + +Build 1.6.4-9.11.0.911: + LexManos: Add cancelable EntityStructByLightningEvent, Closes #789 + +Build 1.6.4-9.11.0.910: + LexManos: Stack sensitive version of Item.getItemStackLimit. Closes #771 + +Build 1.6.4-9.11.0.909: + Anthony Lomeli: Villager Trading GUI will not open if Player is sneaking. + +Build 1.6.4-9.11.0.908: + LexManos: Added all the vanilla records to the ore dictionary. Closes #731 + +Build 1.6.4-9.11.0.907: + LexManos: Direct canApplyAtEnchantingTable through canApply Closes #740 + +Build 1.6.4-9.11.0.906: + LexManos: Add pre and post event to rendering Chat, allowing for placement of the chat box. Closes #733 + +Build 1.6.4-9.11.0.905: + LexManos: Set densityDir in BlockFluidBase's constructor, closes #737 + +Build 1.6.4-9.11.0.904: + LexManos: Fix placement of snow cover over metadata 6. Closes #724 + +Build 1.6.4-9.11.0.903: + LexManos: + Add the ability to register chat commands that only execute on the client. Works with autocomplete. + Client commands are gray when shown in the autocomplete list (when you press tab) + Closes #640 + +Build 1.6.4-9.11.0.902: + LexManos: Update workspace to point at launchwrapper 1.8 + LexManos: Vanilla hopper should obey the IInventory contract, TileEntityHopper now takes into account IInventory.getInventoryStackLimit() when inserting items Closes #597. + +Build 1.6.4-9.11.0.901: + hobos_taco: + Added ItemTooltipEvent + + This event is fired at the end of ItemStack.getTooltip(EntityPlayer, boolean), which in turn is called from it's respective GUIContainer. It allows an itemstack's tooltip to be changed depending on the player, itemstack or whether the advanced information on item tooltips is being shown, toggled by F3+H. + +Build 1.6.4-9.11.0.900: + Christian: + Updated FML: + MinecraftForge/FML@5265e34a350adbb762264379f0134bfa40d33eaa Fix null killing the server + +Build 1.6.4-9.11.0.899: + LexManos: MinecraftForge/FML@35ab9f52b02d84592e4c7607feb6009710b2f7d9 Fix md5s for new checksums.sha1 in scala libraries. + +Build 1.6.4-9.11.0.898: + Christian: + Updated FML: + MinecraftForge/FML@e356f4d713b1269825839954fe86f5312ede0fc6 Cross-modsystem compatibility fix with thanks to Mumfrey @ liteloader + MinecraftForge/FML@9b55f1f48f89a5348ac1d58622b71946f310316a Attempt at a shared modlist implementation - should allow visibility between liteloader and fml for "mod list display" + +Build 1.6.4-9.11.0.897: + Christian: + Updated FML: + MinecraftForge/FML@bfc25bc5da1ff0f6fd0faf817b32a8f6d35dedc2 Add to both the classloader and the parent + +Build 1.6.4-9.11.0.896: + Christian: + Updated FML: + MinecraftForge/FML@9f0f9e7288afc6cce9a425ad770a208af9e28648 Fix deobf tweaker + +Build 1.6.4-9.11.0.895: + Christian: + Updated FML: + MinecraftForge/FML@ce6404fd5bb5e8e425af3bcafeaa285575bf39a3 TYPOS!!! + +Build 1.6.4-9.11.0.894: + Christian: + Updated FML: + MinecraftForge/FML@8f18a3de9a02b003762dace891829ef64dfedf49 Separate deobf tweaker so it runs last. Should fix problems with cascaded tweakers expecting an obf environment. + +Build 1.6.4-9.11.0.893: + Christian: + Updated FML: + MinecraftForge/FML@8e26c99de3b44d272d2fdc398e0687db17bce3b7 Add debugging for deobfuscation + MinecraftForge/FML@1d902df5814b815959165e4aa69272003f002d25 Use the negative cache in latest legacylauncher. + MinecraftForge/FML@9815d8c3793182a08fcdbd29376a3f70bff464d0 Update for launchwrapper 1.8 + +Build 1.6.4-9.11.0.892: + LexManos: Add wrapper exception to the new Structure ID system to point to the correct Structure. + +Build 1.6.4-9.11.0.891: + LexManos: Update dev workspace for 1.6.4 .. + LexManos: Remove some side onlys on BiomeEvents that don't need them. + LexManos: Fixed typo in bounding box based ladder checks that caused potential infinite loops with entities in certian positions. Thanks Overmind for reporting it. + LexManos: + Updated FML: + MinecraftForge/FML@fc8c3bef0380d59c0842a252e4f0bd29127ee78b Update to new installer that uses xz compression and better support for non-standard jvms + +Build 1.6.4-9.11.0.886: + Christian: + Updated FML: + MinecraftForge/FML@a4de22c1addf0a6b95d38e467a96f2af417c86d5 And use the parent that's actually going to be valid. *sigh* + +Build 1.6.4-9.11.0.885: + CovertJaguar: + Fluid Rarity should have a default + + Oops. + Christian: + Updated FML: + MinecraftForge/FML@70cffe6982b27df0ea7d8d4d8851a0c0043bb2cb Herpaderp. Make addURL accessible. *sigh* + +Build 1.6.4-9.11.0.884: + Christian: + Updated FML: + MinecraftForge/FML@4a94c2c71bb4cc9644caeb06011a189989b22f87 Fix NPE when loading second single-player world + MinecraftForge/FML@0e80fcb8f716cfef5b016a73ca32ff0e2f3c3c05 Merge pull request #284 from smcv/uninit + MinecraftForge/FML@39620f1e41464f53482277dc3bcb0b9eed8ca25c Fix injection of tweaker into system + +Build 1.6.4-9.11.0.883: + Christian: + Updated FML: + MinecraftForge/FML@79c39f8b7c711377f7919abd1ee6a56a339d1062 Fix classpath for launchwrapper 1.7 + +Build 1.6.4-9.11.0.882: + traincrazyb: Correcting SoundManager Transformer + +Build 1.6.4-9.11.0.881: + Christian: Clean patch fuzz + +Build 1.6.4-9.11.0.880: + Christian: + Updated FML: + MinecraftForge/FML@f6190e8752013c0d6857090ffd42559cf83809ae Update workspaces for 1.6.4 + +Build 1.6.4-9.11.0.879: + Christian: + Updated FML: + MinecraftForge/FML@25981706ef12654b6c2baccc80fa2298bb5afb4a Update for MC 1.6.4 + MinecraftForge/FML@0950b9fc8441a2d3b022ed876f17ee5ac0c47b9c Fix up a deep crash in the early server init hanging the client + +Build 1.6.3-9.11.0.878: + LexManos: Remove duplicate access transformer + LexManos: Move have handler creation up, to prevent NPE. + +Build 1.6.3-9.11.0.877: + LexManos: + Updated FML: + MinecraftForge/FML@e7dd728f955aa4713fef45fea770b1f91246d712 Format the log messages through MessageFormat. Thanks CovertJaguar for the pointer. + MinecraftForge/FML@82d896a35e08be5712bdc15bdb93e5d4fc0ddd46 Make final transformers actually work on methods as well. + +Build 1.6.3-9.11.0.876: + LexManos: Move the Structure data save files to per-world data folders. Vanilla saves them to the global folder which will potentially cause conflicts if two worlds generate 'Villages'. Which in the modded world is highly likely. Refer back to the long standing vanilla issue where nether 'villages' would override the overworlds villages, it's the same situation. + +Build 1.6.3-9.11.0.875: + LexManos: Make MapGenStructureIO name registration functions public, Any mod that has anything extending StructureStart or StructureComponent must register there classes and create a default (no parameter) constructor. + +Build 1.6.3-9.11.0.874: + LexManos: Unfinalized Item.getIconIndex(ItemStack) + +Build 1.6.3-9.11.0.873: + LexManos: + Updated FML: + MinecraftForge/FML@da70cdd35a378d02db47d2aa31fb9aac87beaedc Update tweaker for new Launcher API + MinecraftForge/FML@352117fd78eec745da6c80b8d354947c4dbbbb48 Update for new installer and thank you. + MinecraftForge/FML@40a34af43105ebcb5a63ce2351ca119da5a8158e Merge branch 'master' into newtweak + MinecraftForge/FML@e77d2547ad447025729ae7f3cccaaf343c4c86f9 Update for pre-ninja 1.6.3 update + MinecraftForge/FML@34493b0d99e2cf2bdca080ff226f2dfeedb1cf51 Update for real 1.6.3 update + MinecraftForge/FML@95afc95b248ecc69bc6ffcc5a95912820d8f4066 Update mcp mod info + MinecraftForge/FML@ff75416a325717770a5cf457c859bfb0abcbe281 Update mc_versions data and commands patch and eclipse workspace + MinecraftForge/FML@8f2e67558127f16d92399ea97cbcb0df46d52e19 Update the src distro's eclipse workspace. + LexManos: Bump version for new MC version. + LexManos: Actually push the submodule update -.- + +Build 1.6.2-9.10.1.871: + Christian: + Updated FML: + MinecraftForge/FML@81328b6684c5127427153807b5e498c2efefb96b Add in support for using a mirror list and provide checksums for packed download of libs + +Build 1.6.2-9.10.1.870: + Christian: + Revert "Added a RenderType that allows Map-style rendering w/o inheriting from" + + This reverts commit eb4688bf5ea132cd8ddc802a7dad6d423ad50543. + + Conflicts: + patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch + +Build 1.6.2-9.10.1.869: + vilim.lendvaj: Prevent NPE in fluid lookup for block + Christian: Fix broken PR from vilml. TEST! + +Build 1.6.2-9.10.1.867: + CovertJaguar: + Allow Fluids to have Rarities + + Used for tool tips. + +Build 1.6.2-9.10.1.866: + Christian: Fix the divider + +Build 1.6.2-9.10.1.865: + Adubbz: + Sky colours now smoothly transition + + Made transitions even smoother + + Sky colours now smoothly transition + Christian: Move stuff around a bit- also tie range and enabled to options. + +Build 1.6.2-9.10.1.864: + ml: + Added a RenderType that allows Map-style rendering w/o inheriting from + ItemMap. + Christian: Tweak patch comment + +Build 1.6.2-9.10.1.863: + mitchpetrie29: Check if block is air instead of just ID zero when growing from stem block. + +Build 1.6.2-9.10.1.862: + Christian: Allows proper raytracing from actual player eye position rather than hardcoded eye heights. + +Build 1.6.2-9.10.1.861: + claire.alexandria: Added fov hook + claire.alexandria: fixed merge + claire.alexandria: Small formatting changes (opening braces on new line) + +Build 1.6.2-9.10.1.860: + Christian: + Updated FML: + MinecraftForge/FML@b5af446d7111730c7973c9f0d6b76e62b78b9131 Fix sidedness derp in LanguageRegistry. + +Build 1.6.2-9.10.1.859: + Christian: The partial tick should be available for all render player events. Weird it wasn't. + +Build 1.6.2-9.10.1.858: + Christian: Reverting HarvestEvent, for new implementation + Christian: Redo harvest event. This time with simpler logic, that should be less liable to weird "missing" stuff. + +Build 1.6.2-9.10.1.857: + LexManos: Fix bug where guis were not closed properly, resulting in signs not having there text set. + +Build 1.6.2-9.10.1.856: + Christian: Change trigger calculation so entities get some time to age before refiring the event. + +Build 1.6.2-9.10.1.855: + LexManos: Create helper apply_patches script and add paramter to change patch output folder. + +Build 1.6.2-9.10.1.854: + Christian: + Change from Cancelable to using a Result. This means you can force despawn mobs you + don't want around anymore. Also, deferred check to once every 20 ticks. May tune it + down further or make it a config if this event is a lag issue. + +Build 1.6.2-9.10.1.853: + Christian: + Add a cancellable despawn event- allows mods to decide to prevent the despawning + of certain otherwise normally despawnable mobs. + Christian: + Added fov hook + + Small formatting changes (opening braces on new line) + Christian: Create es_ES.lang + +Build 1.6.2-9.10.1.852: + Christian: Add some javadoc to the HarvestBlock event. + +Build 1.6.2-9.10.1.851: + Christian: Use the dropchance from the event. + Christian: Clean up some formatting. + +Build 1.6.2-9.10.1.850: + claire.alexandria: Added tessellation methods to obj model, for ISBRH-friendliness + claire.alexandria: Fixed both RenderAllExcept behaviours + claire.alexandria: Added more render methods to IModelCustom interface. + jk-5: + Added GuiOpenEvent + + You can use this for a clean way to override guis, without needing an + TickHandler to check if the gui you want to override is open and show + your own gui + + Proper close check + mhahn: + capacity was not respected + + Updated to properly calculate the amount of free space in the tank + before checking that against the amount of the resource. + robin: create french localization + claire.alexandria: Added display name hook + claire.alexandria: Memoization of display name result + claire.alexandria: Added mouse event + claire.alexandria: inserted hook into Minecraft.java + claire.alexandria: fixed logic error + ohai.iChun: + Fix player push out of blocks clientside being hardcoded and not based on entity size. + Added player eyeHeight field to allow changeable eye heights of players rather than being hardcoded per player class as well as add a getDefaultEyeHeight function. + Christian: Reduce patch size significantly + Christian: Fix patch for new MCP naming. + Christian: Add a bit of javadoc + Christian: MachineMuse, remember, there's TWO model formats supported! + Christian: Defer firing CreateDecorator until it's likely mods have had a chance to register their listener. Should close #759 + Christian: + Add a harvestblock event, to allow mods to intercept and change the drops for blocks. Don't abuse this, or we'll have to take safety measures. + Fires for both silktouch and non-silktouch harvesting, and provides the player. Note, you may need to + change your break overrides to pass on the player for best results. + Christian: Add in a block reverse lookup for fluids. Closes #749 + +Build 1.6.2-9.10.1.849: + Christian: + Update forge for MCP naming updates + + Updated FML: + MinecraftForge/FML@d0c6e92900590f578b80d9a6c00fa28fd333d3bf Update MCP data + Christian: Update version to 9.10.1 for mcp naming changes. + +Build 1.6.2-9.10.0.848: + Christian: Fix possible NPE in searching code. + +Build 1.6.2-9.10.0.847: + Christian: + Updated FML: + MinecraftForge/FML@2a9c485edc4cf3382154d5b3b9b600386f2ab8ae Remove @SideOnly from 70318 (getDistance) it makes no sense that it's not on the server. + +Build 1.6.2-9.10.0.846: + Christian: + Updated FML: + MinecraftForge/FML@a13598b17ea9637c054d867a76298d6c080c5e32 Use java 1.6 compatible method of closing the zip file. Stops stupid compile error. + +Build 1.6.2-9.10.0.845: + Christian: Small fix to container registry. emptyContainer is not null, it's "NULL_EMPTYCONTAINER" now and won't match any valid container. + +Build 1.6.2-9.10.0.844: + Christian: Tweak the release to add in assets to the distributable. *sigh* + +Build 1.6.2-9.10.0.843: + Christian: + Updated FML: + MinecraftForge/FML@1c9a853868f7df0daa5f67b99401dfab44ae18e6 Allow coremods to properly inject asset readers. + MinecraftForge/FML@40b54013b4c9b01686411cd47a7866eeb650ea2b Allow server side lang file injection, hopefully + Christian: Add some starting work for a forge tps command. Also update coremod for new FML behaviour + +Build 1.6.2-9.10.0.842: + Christian: + Updated FML: + MinecraftForge/FML@b993cf4a9825865b3a8a0c7b083c23d56dbd1d6f More exception handling for less derpiness. + +Build 1.6.2-9.10.0.841: + Christian: + In the time honoured tradition of trying to fix vanilla, we today attempt to patch the pathfinding AI so that it doesn't lag when + there's a lot of entities. Basically, if the zombie can't reach the villager, backoff subsequent pathfinding attempts. Hopefully + should really help with lag caused by zombie swarms. + +Build 1.6.2-9.10.0.840: + Christian: Allow multipass RenderItem rendering for terrain icons too. Should fix sengir's saplings. + +Build 1.6.2-9.10.0.839: + Christian: + Updated FML: + MinecraftForge/FML@913f6f6d36bd179db7c147db0485e99dee693933 Try and use the relaunch log, which should be classloaded.. + MinecraftForge/FML@ac065ff5f76b6c512b346366107efde66e9e1c88 Reset the IWorldGenerator seed for each mod, before calling. That should mean worldgen is consistent and not dependent on mod ordering, or mod sideeffects. + +Build 1.6.2-9.10.0.838: + LexManos: Cache world on all render passes in case some mod disables the first pass. + LexManos: Skipp toss event for null entity items. Closes #732 + +Build 1.6.2-9.10.0.837: + LexManos: Fix bug with custom Fluids. You can now drown in them! + +Build 1.6.2-9.10.0.836: + Christian: + Updated FML: + MinecraftForge/FML@9468e41bbf3ea425c50daa710cf3ada11c82b238 Fix up scala refs, for better results + +Build 1.6.2-9.10.0.835: + Nick: + Adds Temperature to Lava + + Missing lava temperature. Feel free to change it to any value. + 1300K is the typical max for Magma so wasn't sure what was desired. Regardless, better than the same temp as water at 295K :smile: + +Build 1.6.2-9.10.0.834: + Christian: + Updated FML: + MinecraftForge/FML@4a9d0f9bd522e543b76daaf9c49b6214443c595f Add in some log information + Christian: + Updated FML: + MinecraftForge/FML@f157e7a6ecdeac2758fc0eaf547d3e8a763fb15b And more coremod logging + Christian: + Updated FML: + MinecraftForge/FML@ffdd056a18eddb8f28b74435d40e69c956b9dd48 Check keys, not values *sigh* + +Build 1.6.2-9.10.0.833: + Christian: + Updated FML: + MinecraftForge/FML@03989166665956df03aa85472eb13dca2d74a38d And actually instantiate the collection *sigh* + +Build 1.6.2-9.10.0.832: + Christian: + Updated FML: + MinecraftForge/FML@dec9a3924d361bc016cb7f6b3e95764158cf5ae1 Add in "FMLCorePluginContainsMod" in the manifest. If this value is present, FML will attempt to parse your mod jar file as a normal mod file as well, instantiating mod containers there. + +Build 1.6.2-9.10.0.831: + Christian: + Updated FML: + MinecraftForge/FML@24701206808a43b9c7b10d7130c47b5d1e841bb6 Clean up a couple of resources. Also, don't parse jars just because they're in the mods dir + +Build 1.6.2-9.10.0.830: + Christian: + Updated FML: + MinecraftForge/FML@9a5e24e338c6172531efb086a4b584c26d4f1435 Fix stupid derp is stupid. Closes #275 and means sp614x can do his thing + MinecraftForge/FML@ba90b616070ce15793eb05e5afaed62a6f07c6e7 Make sure we only add args to the argument list if a tweaker hasn't already. Should fix LiteLoader compatibility issue. + +Build 1.6.2-9.10.0.829: + LexManos: Fix NPE in enchangint books. + +Build 1.6.2-9.10.0.828: + LexManos: Fix inverted case, search works now. + +Build 1.6.2-9.10.0.826: + ross.swartz: Add stone and cobblestone to Ore Dictionary + ross.swartz: Update OreDictionary.java + LexManos: Addition: Added isAllowedOnBooks hook to Enchantments Closes #589 + +Build 1.6.2-9.10.0.825: + LexManos: Deprecate Block.addCreativeItems, Kill in 1.6.3+ Closes #655 + +Build 1.6.2-9.10.0.824: + mehvids: Add onNeighborTileChange callback to block by generalizing func_96440_m to all blocks rather than just comparators. + +Build 1.6.2-9.10.0.822: + malc.geddes: Added a new function to allow control over whether an entity is dismounted when the entity it is riding goes under water + LexManos: Allow creative tabs to have a search box if they want to Closes #592 + +Build 1.6.2-9.10.0.821: + tommy.stanley96: Fixed Fluid Non-Solid Block Duplication + tommy.stanley96: Fixed Double Item Drop + tommy.stanley96: Fixed Classic Checking + +Build 1.6.2-9.10.0.820: + LexManos: Add optional feature to check entire bounding box for ladders. Closes #709 + +Build 1.6.2-9.10.0.819: + LexManos: Only refresh vanilla tile entities when IDs change. + +Build 1.6.2-9.10.0.818: + LexManos: + Updated FML: + MinecraftForge/FML@f275a24b43559cfdced243ff77e9848c9d458362 Add in some reverse lookup methods for game registry data + MinecraftForge/FML@cb05c8c4aa60a131de92f0a21c06697c8f8896a8 Add missing SideOnly in BaseMod + MinecraftForge/FML@1857064afa9ace796440c19f3275637a6e659375 Merge pull request #266 from grompe/patch-1 + MinecraftForge/FML@182aa9c0cbe61ac69b0d428ead1dc817dd2a2e71 Fixed install.sh not passing arguments to install.py + MinecraftForge/FML@f46a538b41157081c840f647f123513ac4c5a071 Merge pull request #268 from Bo98/sh-args-fix + MinecraftForge/FML@29ef3d5ab412dcabbd67695558880c45011ace82 Update installer. + +Build 1.6.2-9.10.0.817: + tommy.stanley96: + Fluid Render Fix + + Formatting + ohai.iChun: Add Pre and Post events for RenderLivingEvent + ohai.iChun: Add Pre and Post events firing for RendererLivingEntity + ohai.iChun: if statement added + ohai.iChun: Update RendererLivingEntity.java.patch + tommy.stanley96: + Fixed fluids eating each other + + Fluids check for other fluids density before flowing, if their density + is higher they can flow into the other fluid, if not they can't. + CovertJaguar: Add SneakClick bypass to client + cpw: Fix names for water/lava fluids. Closes #689 + cpw: + Add support for loading legacy liquid stacks as new fluid stacks. + Requires having been written with the "liquidname" code from forge 1.5.x + cpw: + Add a translation map for looking up legacy liquid names to convert + to new fluid names. + tommy.stanley96: Fluid Rendering Fixes + cpw: Fix formatting error in PR + cpw: + Tweak setBlock in update tick - it should only send serverside updates for + source blocks. Experimental attempt to fix worldgen issues for fluid blocks + cpw: + Updated FML: + MinecraftForge/FML@57befa89bbbf2bc2fcc4a97b78e07b3f9e23ef9d Fix keybindings being derped + MinecraftForge/FML@1d84e8063e9d0dc73928dba006e6001201285cad Temporarily add a version of 'reobfuscate.py' that will resolve complex reobfuscation graph issues with specialsource. Copy it over 'reobfuscate.py' in the mcp runtime dir. Hopefully will have an MCP/specialsource fix in the coming days. + ohai.iChun: Fix RenderLivingEvent.Pre/Post not being fired by most Renders. + tonkamatt98: + added temperature to fluids + + it could be useful for blocks that are affected by temperature + mitchel.pyl: Fix render colour on bottom of fluids + mitchel.pyl: Fix small derp + +Build 1.6.2-9.10.0.816: + purpleposeidon: + Add an InputStream constructor to WavefrontObject + + It is said that Resource Packs will return InputStreams. And I like putting my models into texture packs which, obviously, give InputStreams rather than URLs. + 7of9: Add cloud height to WorldType + +Build 1.6.2-9.10.0.815-miscchanges: + mitchel.pyl: Fix render colour on bottom of fluids + mitchel.pyl: Fix small derp + +Build 1.6.2-9.10.0.812-miscchanges: + tonkamatt98: + added temperature to fluids + + it could be useful for blocks that are affected by temperature + +Build 1.6.2-9.10.0.811-miscchanges: + ohai.iChun: Fix RenderLivingEvent.Pre/Post not being fired by most Renders. + +Build 1.6.2-9.10.0.810-miscchanges: + cpw: + Updated FML: + MinecraftForge/FML@57befa89bbbf2bc2fcc4a97b78e07b3f9e23ef9d Fix keybindings being derped + MinecraftForge/FML@1d84e8063e9d0dc73928dba006e6001201285cad Temporarily add a version of 'reobfuscate.py' that will resolve complex reobfuscation graph issues with specialsource. Copy it over 'reobfuscate.py' in the mcp runtime dir. Hopefully will have an MCP/specialsource fix in the coming days. + +Build 1.6.2-9.10.0.809-miscchanges: + cpw: Fix formatting error in PR + cpw: + Tweak setBlock in update tick - it should only send serverside updates for + source blocks. Experimental attempt to fix worldgen issues for fluid blocks + +Build 1.6.2-9.10.0.808-miscchanges: + tommy.stanley96: Fluid Rendering Fixes + +Build 1.6.2-9.10.0.807-miscchanges: + cpw: + Add a translation map for looking up legacy liquid names to convert + to new fluid names. + +Build 1.6.2-9.10.0.806-miscchanges: + cpw: + Add support for loading legacy liquid stacks as new fluid stacks. + Requires having been written with the "liquidname" code from forge 1.5.x + +Build 1.6.2-9.10.0.804: + copyboy: Fix getArmorTexture by passing it the subtype + +Build 1.6.2-9.10.0.802: + LexManos: + Re-added deprecated liquids system. To be removed next major MC versions after issues with Fluids are fixed. (reverse-merged from commit 9b5208fa308f22c24e295ce3be38dcafea2857ea) + This WILL be removed and should not be developed against aside for a temporary 1.6 release. + +Build 1.6.2-9.10.0.801: + LexManos: Remove SideOnly(Client) in IBlockAccess.isAirBlock + +Build 1.6.2-9.10.0.800: + LexManos: MinecraftForge/FML@10b16d32da4b7c32b15e69cf1c636505ebbe2540 Use json 2.9.1 nightly for OSX in release json like vanilla does. + +Build 1.6.2-9.10.0.799: + LexManos: General code cleanup of Fluid system. Made Fluid icons and associated functions non-sided. + +Build 1.6.2-9.10.0.798: + LexManos: MinecraftForge/FML@3f21a2c1b413e591f61f2906c3adbadd9c5b09e3 Stupid spaces and windows escaping -.- + +Build 1.6.2-9.10.0.797: + LexManos: MinecraftForge/FML@b2958c9066db8c95bb4260893fbfe00103fc4ba1 Add quotes for paths with spaces -.- + LexManos: Package 'version.json' with universal jar for maunchers to use. It's the json used by the vanilla Minecraft launcher for Forge. + +Build 1.6.2-9.10.0.796: + LexManos: MinecraftForge/FML@9520978b81d4cba5d8b0af0d5f155bd115023795 Use a temporary file for recompile's command line to combat command length to long issues. + +Build 1.6.2-9.10.0.795: + LexManos: Updated FML: MinecraftForge/FML@4981aa3421262c3c1c4705468fe202df8198b9f0 Fix potential NPE in villager skin registry. Closes #678 + +Build 1.6.2-9.10.0.794: + Nick: + Fixes Vanilla Fluid Still Icon Setters + + Fixes null icons from being set for both the still water/lava icons, and sets the correct Icon. + +Build 1.6.2-9.10.0.793: + LexManos: Updated FML: MinecraftForge/FML@c48b48ee15f38d3e794b6eb3499c536226ca5a79 Fix server launching. + +Build 1.6.2-9.10.0.792: + Christian: Fix for new location of mcp logo. + +Build 1.6.2-9.10.0.791: + Christian: + Updated FML: + MinecraftForge/FML@0378355c3720d587652b7792665a8b70bf104eb3 The server.classpath generates the runtime manifest, so it needs the non-debug asm jars. + MinecraftForge/FML@a3f48734ffbbb2eccffdafcd3cbe73824bd1afd6 Fix up jar sanity check code. FML validation of the jar works now and doesn't derp classloading. + MinecraftForge/FML@9947ba85036542a3231e25328d3300f2a5337370 Fix logo handling. no more NPE if the logo can't be found. Also, fix location of mcp logo now. + +Build 1.6.2-9.10.0.790: + Adubbz: + Made eating particles compatible with metadata + + Removed extra spaces + + Made eating particles compatible with metadata + Christian: + Updated FML: + MinecraftForge/FML@e44e8b3112bd56c716a00c19d0be2f15d9128b70 Force a global asset scan prior to mod construction : you should be able to reference assets anywhere in your mod now. + MinecraftForge/FML@20e93a412ee13498babef02d404f57bf5e0fd919 Fix up logos in the mod screen. Clean up some unnecessary casts and suppressions, use the -debug asm library at dev time, since it contains full symbols and code in compiled form. + LexManos: MinecraftForge/FML@b9f4b02cb0b041594656f05de70225df702a8ddd Kill mcp's truncate method, for more useful logs. + LexManos: + Updated FML: + MinecraftForge/FML@7348929819b0ae8ad35419ef5dbf66e66b442858 Kill release time scala libraries, to be re-evaluated after all movement is done and shit is fixed. May require manual instalation for mods that use scala. + MinecraftForge/FML@6de36d78f57f6f08ec586b67b684d0e5406cd436 Coremods now have a primitive dependency capability. Also, we search mods dir for special "TweakClass" manifests. These are using the vanilla tweak mechanism to inject into Minecraft. Helpful for other "platform" systems, when you don't want to have to deal with json changes! + MinecraftForge/FML@d4b30422b64a62a2f8a8c2cccd94cb0fd06154e0 Update build and eclipse workspaces for debug asm. + LexManos: MinecraftForge/FML@c625ef30093abb0755985c74d1f31e2c4cf6cfdd Update Forge signature for new private key + LexManos: Update changelog generator to point to new jenkins. + LexManos: Monkey patch to try and make print flush properly. + +Build 1.6.2-9.10.0.789: + LexManos: Re-add reverted patch AGAIN cpw check your commits -.- + +Build 1.6.2-9.10.0.787: + Christian: + Updated FML: + MinecraftForge/FML@bab4d87ce76baa40200939cc46780b1d3b2ff466 Update FML for new stealth update for 1.6.2 + +Build 1.6.2-9.10.0.786: + Christian: Remove forge ISidedInventory, deprecated since 1.5. + +Build 1.6.2-9.10.0.785: + Christian: + Allow optional rider interaction for entities, thanks for the suggestion Vswe. + + Updated FML: + MinecraftForge/FML@7af5c21d74679d1a53550f9719bba22b2f28dd13 @InstanceFactory was set to look for Fields instead of methods + MinecraftForge/FML@bc9d1fe657c7a0953adc7d4c5ed81c575bdfb0f1 Merge pull request #254 from CaptainShadows/patch-1 + +Build 1.6.2-9.10.0.784: + LexManos: MinecraftForge/FML@c913258ca38e662264bdf4aafbfbef86881c9290 Disable signature check of client for now, it's broken. + Christian: + Updated FML: + MinecraftForge/FML@97269a5e3dc0a0e2e1a79183f9f5f2ee120e90bd Decode the file URL. Hopefully will make things work more.. + MinecraftForge/FML@d4d522c5978ecd7a9195977b3327b441901bb5b4 And don't forget to remove the test code + +Build 1.6.2-9.10.0.781: + LexManos: + Updated FML: + MinecraftForge/FML@dfa3a2665d6782b87713cea26dda558ac990a72a Add MC Version to installed version name. + MinecraftForge/FML@e91431fb707ce3e7e4296ccb8f3b2e5208b4dfac Don't validate signatures on servers, they are not signed. + MinecraftForge/FML@c7ab872c85dd057a4e44e12e34089dfd1a1184b6 Temporarily disable GuiModList's Mod logos. + +Build 1.6.2-9.10.0.780: + LexManos: + Updated FML: + MinecraftForge/FML@c997f2adbc4c11cd8c2abe5f82ccd00b0e954b68 FML now verifies that the minecraft jar is correct and intact. This is intended to discourage those who think that modifying the minecraft jar is still acceptable. + MinecraftForge/FML@0db4624b27a5ecf59ed506ccfc26459ca26ee408 Don't initialize the server. + MinecraftForge/FML@4fa375683fdb7edff67c951fb371ab4a23435308 Fix NPE in new debug line when patch targets don't exist. + +Build 1.6.2-9.10.0.779: + LexManos: Fix accedential reverted patch. + LexManos: Proper return for getRegisteredFluidContainerData thanks Soaryn. Ref issue #634 + +Build 1.6.2-9.10.0.778: + Christian: Make resourcelocation the class available on the server. + +Build 1.6.2-9.10.0.777: + Christian: + Drop two domain related fixes that have been applied in vanilla. + + Updated FML: + MinecraftForge/FML@c47d08c89dfcacb96e36c427593174e08dcb4224 Tweak debug data on patched classes + MinecraftForge/FML@dbf5fe38cee04288e92d57f8782114b452245bce We now generate an adler32 checksum for each patched file and verify at load time that they match. Mismatch won't crash, but will emit a big warning.. + MinecraftForge/FML@e88a0cd13f63904f7317e1a73880611f58820389 Update for stealth update. Thanks mojang! + MinecraftForge/FML@2336002f20e9412a7663781b23c51de0eff6a692 The game is going to exit in face of patch mismatch, unless you force it to run with fml.ignorePatchDiscrepancies in the system properties. + +Build 1.6.2-9.10.0.776: + LexManos: + Updated FML: + MinecraftForge/FML@1d0384f8f664d7002019b865675a5fddf2963b3d Update for 1.6.2 and MCP 8.04 + MinecraftForge/FML@111b0216fdc55f56a8361a584141bca7c9c3f070 Add the jsons for 1.6.2 + MinecraftForge/FML@6f96d89e2bf9313b26eeb4c334a208bf3e1c9ad4 Update eclipse workspaces for 1.6.2 + LexManos: Remove deprecated Liquids API, Use new Fluids system as replacement. + LexManos: Bump version to 9.10 for new MC version and removal of Fluids. + +Build 1.6.1-8.9.0.775: + Christian: + Updated FML: + MinecraftForge/FML@c97ac284a5e7dbdbccbad2f7ccc95252c4aef239 Update ModLoaderFuelHelper.java + MinecraftForge/FML@3a200e901e34ade679e4485307f57bee725bbe94 Fix coremod injection into main system. Should stop double-dipping coremods. + MinecraftForge/FML@2676c8999cbede05b5475ba68bfc25467a67d4fc Update mcp data. fixes #248 + MinecraftForge/FML@5990e29af7b70e343dfd9cf38bb3e033e71a4489 Merge pull request #247 from jk-5/patch-1 + MinecraftForge/FML@adc89722770b7319884619cadc6f10cc9050df24 Add cascadedTweaks. This will allow simple coexistence for any other mod framework using the tweaker system as well. Hi Voxel and LiteLoader! + +Build 1.6.1-8.9.0.774: + xcompwiz: + Makes player-specific spawnpoints dimension aware + + Makes ServerConfigurationManager correctly get player-specific spawn + point for the target dimension + Changes EntityPlayer to store and save a (bed) spawn point for every + dimension, as well as transfer them to respawn "clones" + +Build 1.6.1-8.9.0.773: + LexManos: Re-gather list of Icons when atlas textures are stitched, allows for addition/removal of blocks/items after the atlas's inital constrction. + +Build 1.6.1-8.9.0.772: + LexManos: Fix enchantment effect on single pass items. Closes #644 + +Build 1.6.1-8.9.0.771: + kinglemming: + Forge Fluid System! + + Signed-off-by: King Lemming + LexManos: Mark old liquid system as deperated to be removed next Minecraft release. + +Build 1.6.1-8.9.0.770-newliquid: + LexManos: Mark old liquid system as deperated to be removed next Minecraft release. + +Build 1.6.1-8.9.0.769-newliquid: + richard: Techne model loader (incomplete for debugging) + richard: Complete it, got the bug figured out + Christian: + Updated FML: + MinecraftForge/FML@24c405665105a789a0708a7e30c8bcb96899da6b Add in an optional modid identifier for @SidedProxy. It's main use is when both scala and java @Mods reside in the same package, and you want the @SidedProxy behaviour for a specific @Mod language type. In general it should not be needed otherwise. + MinecraftForge/FML@cd0466395a8f1af3ec44f124bf4088df2d318603 Fix sysout with trailing messages after a newline + LexManos: Disable ImageIO's File based cache, should speed up texturepack loading/stitching. + jadran.kotnik: Added rotation support for all vanilla blocks that can be rotated. + LexManos: + Add NPE protection to ItemStack delegates. Closes #601 + Also cleaned up the names of said delegates, we do not have to follow MCP's crowdsourced names as they are very bad. + Redirected damage through setItemDamage to allow items to have finder control of breaking. + LexManos: Fix Air block check in BlockPortal. + LexManos: Fix hoes being able to till dirt under other blocks, and made it look for air type blocks. + LexManos: Add NPE protection to refernce to MinecraftServer.worldServer + LexManos: Fix AIOOB exception in crash reporting if exception does not have a stack. Possible, but odd. + LexManos: Fixed changelog generation. + LexManos: Forgot most important side, release script. + Christian: Make glass panes and iron fences connect to block sides based on solidity. This does change IBlockAccess, so anything with a custom IBlockAccess may need to implement the new method. + Christian: + Fix server patch FML update + + Updated FML: + MinecraftForge/FML@22738de028a9ba51d43d73857dfb8969985566f0 Attempt to properly fix deadlock if the internal server derps. It should never hang now. Damn you fast computer.. + MinecraftForge/FML@05a854cd2af53ca822ee8b249b0b3bbe44f94675 Small tweaks to the mcp data. Nothing major.. + mitchel.pyl: Fix tripwire patches for solid sides + LexManos: Added EntityLiving to Block.isLadder arguments, deperacating older version. New parameter has the possibility of being null, so modders must take care. Closes #608 + LexManos: Add air checks to BlockSand falling and Piston pushing. Please report any other issues with custom 'Air' blocks in issue #602 + LexManos: Bump Forge revision and mark recomended. + LexManos: Fic Chest content gneeration delegate call. Cloases #609 + LexManos: Add air check to Flint and Steel Ref: #602 + LexManos: Update workspace for new library structure. + LexManos: Update FML to 16launch branch + LexManos: Initial patch update to 1.6, Does not compile, need to update references to the old TexturePack system. + LexManos: Small fixup, need to Update GuiIngameForge for new HUD changes. + LexManos: + Updated FML: + MinecraftForge/FML@6a318ddb784ca8b2bef0f6718089f7beb4d404e0 Fix typo in new packages. + MinecraftForge/FML@3711da9c456d20865a965734cc5aeaf7f5cb5e5d Another typo + MinecraftForge/FML@e35e4b16ff3d6dea547c41f02f2ca31ebe1f74aa More fixups + MinecraftForge/FML@18371bd8c9bd107f774289da35519f593ccc8ee7 Some fixes for updated mcp code + MinecraftForge/FML@ef646d3146e1f285d2cb8e79a74373beffa84774 Merge branch '16launch' + MinecraftForge/FML@7406b38d8ad1bc5c2c641c74f1614b946f246588 1.6.1 + MinecraftForge/FML@12c928c538c1c04d3a21255c747d15468328ace9 Tweak commands patch + MinecraftForge/FML@3f15cd54c2d776ea161aaedbecad9e188d66578f Functional client @ 1.6.1 + MinecraftForge/FML@71a92de5d95fccc4fe17cc39d0836891c6622f4d Client launch for eclipse + LexManos: + Updated FML: + MinecraftForge/FML@8960f6869fbe30d358a40997c47999025c3eae68 Add windows lzma executable http://tukaani.org/xz/ He states that most things are under public domai + n, But I couldn't find an exact reference to this executable. I'm going to assume it under public domain and distribuiting it here is fine. If not someone pleas + e direct me to the apropriate license and I will act accordingly. + MinecraftForge/FML@70cfe24e67adf6872ef1501599e2115e420c2539 Fix wrong project name in distro eclipse launch. + MinecraftForge/FML@7a004087f79b94bc92f29d50eb71288b6c1c968c Add deobf data to src dist. Dont create deobf jar as we ship the lzma Added *.lzma to .gitignore + LexManos: + Updated FML: + MinecraftForge/FML@110cf372eb5aa85df20b248976f1acdefa85e102 Add deobf data to merge-common, workspace is now actually runnable! + LexManos: Support dirty submodules in changelog script. + LexManos: 1.6.1 Update + LexManos: Add new launch configs to dev workspace. + LexManos: Update GuiIngameForge to reflect Mojang changes in 1.6.1 + LexManos: + Updated FML: + MinecraftForge/FML@c418da353f6a8420b095fa737e8b0eae270d31ae Cleanup coremod code, server side working now. + LexManos: Update release script to generate binary patches and include deobf data. + LexManos: Deprecation sweep and update version to 8.9 to reflect 1.6.1 update. + LexManos: MinecraftForge/FML@7fecf2ad6bdd918149a3c43453f6a78bd11e5404 Update mcp URL. + LexManos: Try absolute path, to not confuse jenkins. + LexManos: + Updated FML: + MinecraftForge/FML@1229c4c4ea888f4f69272eed94ef5a53ce79ccda Fix src distrabution, and got rid of pesky common folder in eclipse workspace. src is now installable. + MinecraftForge/FML@902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016 Revert common folder fix, Common folder does nothing, feel free to delete it after first load. + LexManos: Update src distro installer script. Source distro works now! + LexManos: Update ToolMaterial enum helper. + LexManos: Release will now build a installer jar and use the standard 'target' output folder. + LexManos: + Updated FML: + MinecraftForge/FML@29d6c875d0675ffa14428c511bd6ebe9232a486c Add FML Installer logo crated by @ZaverSLO https://twitter.com/ZaverSLO/status/349947190300508162 + MinecraftForge/FML@3d17434510e890574b68c8a181b80c830b5d043a Build installer package for the new client launcher. + MinecraftForge/FML@bf38d947569911dab03319a8b0f1964f36b195b2 Update json samples + MinecraftForge/FML@7037184a4e724300001dfc1f8df2e76a0ec30368 Fix up release JSON + MinecraftForge/FML@dc7d02ebf6c9fc5965344a9aeca79f230a40afb4 Fix json syntax error. + LexManos: + Fix installer unintended replace. + + Updated FML: + MinecraftForge/FML@9b6525e80504ff72a1798cf5797bf148295db776 Point scala downloads to our servers, Launcher doesn't like standard maven repos. + LexManos: + Updated FML: + MinecraftForge/FML@91ecf711092e1610dd10e77cdd517c3324e62d8d Fix -rel json + MinecraftForge/FML@efc369ee83a7b62f605c13e16efad66b63b4bd8c Fix EventHandler annotation. + MinecraftForge/FML@fbd57b32641b540d609314d91fd64350d50b9013 Mods are now loaded as resource packs. Vanilla will scan for valid prefixes based on subdirs of 'ass + ets' which can then be referenced as ResourceLocations with the ":path" notation. + LexManos: + Updated FML: + MinecraftForge/FML@5a97d183dfb13b0f831172a1afef7407347ea7bc Remember to update your patches!!!! + MinecraftForge/FML@f1b533ad87ea08d6e62259c59779bcec1636e2fe Keep these on our servers until the launcher is actually fixed -.- + LexManos: Fix bound texture in Controls screen, Closes #631 and #629 + LexManos: Make Block.setIconName public + LexManos: Update filler block to prevent useless console warning. + LexManos: Fix resource domain when loading icon. Textures should be located in /assets/{domain}/textures/{block|item}/{name}.png Same strcutre as before except 'assets' instead of 'mods'. + LexManos: Update ChestGenHooks for new Dungeon chest strcture. + Christian: + Start: f1b533ad87ea08d6e62259c59779bcec1636e2fe + End: f21cd286ca8e974b75536224a38cc0dacaca8454 + Updated FML: + MinecraftForge/FML@f21cd286ca8e974b75536224a38cc0dacaca8454 Resource packs, part two. FML mods are now resource packs. Vanilla will scan anything under 'assets' and turn it into a resource prefix. Use resourcelocations to look stuff up. + LexManos: Move resource location resolution down to TextureAtlasSprite and allow for sprites that are not stitched. + LexManos: Attempt to gather lastBuild information to fix ChangeLog's off-by-one issue. + LexManos: + Updated FML: + MinecraftForge/FML@6f0eedc9a64e4e246c40335e91b4868ad7f5a9e2 Fixed ClassCastException when loading ModLoader mods + MinecraftForge/FML@8844554da6d5d15756d7b0a9da2f5924006b3190 Merge pull request #243 from jrtc27/modclassloader + MinecraftForge/FML@7aa7221756d62ea1fbc750d7cf7acfdb28d75f2e Fix transformer search + MinecraftForge/FML@5f7df5e742cbc21565cee0d25709b5cb5462127c Revert "Keep these on our servers until the launcher is actually fixed -.-" + MinecraftForge/FML@ad79b9ed86eaf8c2702d79505d78a931c1774560 Fix up some deprecation warnings, and clean up coremod code that's going away. + MinecraftForge/FML@ba3707af22376f8f18103f63db56e4614a9c37db More javadoc cleanup + LexManos: Update dev worksapce: Proper natives location and new server launch profile. + LexManos: TEMPORARY fix for MCP mapping issue. + LexManos: Include MANIFEST file from FML's universal.jar, makes the jar runnable now! + LexManos: + Updated FML: + MinecraftForge/FML@155e8468180c93f1886a64028628764b1b22dd58 Add in support for mods/ as a mod location. Also drop coremods as a location. They go in mods too now. + MinecraftForge/FML@3f4bf61ae6757605b27078c7321de9f640876836 Update key + MinecraftForge/FML@4545beb49d5348d8632e42965627b9837115525b Add deobf-data to setup env. + MinecraftForge/FML@e24f94951741709329208f738000b72933302a24 Fix eclipse workspaces and launch configurations. + MinecraftForge/FML@532bee7ce1c4392ee11f0389d98f0c2be6240aa0 Update to new MCP bugfix version, Fixes: Missing Armor/Item rendering, and Boss health mapping issues. + LexManos: + Updated FML: + MinecraftForge/FML@7ce84491d1d4eada442944e02fc0e50c51f8045c Fix missing argument and startclient/startserver support. + LexManos: Fix domain issue with SoundPool entries. + LexManos: Add hook for EntityWither trying to destroy a block. + LexManos: Fix lether item rendering colors. + LexManos: Render pass sensitive version of Item.hasEffect, Closes #517 + LexManos: Fix compile errors temporarily, dont use till updated to new system. + LexManos: Add missing air checks to WorldGenTrees and ChunkCache Closes #593 + LexManos: Updated FML: MinecraftForge/FML@54e06e841d1c8df24fc30e1ec3a51def67f58858 Move Resource refreshing until affter postInit. + +Build 1.6.1-8.9.0.768: + LexManos: Add missing air checks to WorldGenTrees and ChunkCache Closes #593 + LexManos: Updated FML: MinecraftForge/FML@54e06e841d1c8df24fc30e1ec3a51def67f58858 Move Resource refreshing until affter postInit. + +Build 1.6.1-8.9.0.767: + richard: Techne model loader (incomplete for debugging) + richard: Complete it, got the bug figured out + LexManos: Fix compile errors temporarily, dont use till updated to new system. + +Build 1.6.1-8.9.0.766: + LexManos: Add hook for EntityWither trying to destroy a block. + LexManos: Fix lether item rendering colors. + LexManos: Render pass sensitive version of Item.hasEffect, Closes #517 + +Build 1.6.1-8.9.0.765: + jadran.kotnik: Added rotation support for all vanilla blocks that can be rotated. + +Build 1.6.1-8.9.0.764: + LexManos: + Updated FML: + MinecraftForge/FML@7ce84491d1d4eada442944e02fc0e50c51f8045c Fix missing argument and startclient/startserver support. + LexManos: Fix domain issue with SoundPool entries. + +Build 1.6.1-8.9.0.763: + LexManos: + Updated FML: + MinecraftForge/FML@155e8468180c93f1886a64028628764b1b22dd58 Add in support for mods/ as a mod location. Also drop coremods as a location. They go in mods too now. + MinecraftForge/FML@3f4bf61ae6757605b27078c7321de9f640876836 Update key + MinecraftForge/FML@4545beb49d5348d8632e42965627b9837115525b Add deobf-data to setup env. + MinecraftForge/FML@e24f94951741709329208f738000b72933302a24 Fix eclipse workspaces and launch configurations. + MinecraftForge/FML@532bee7ce1c4392ee11f0389d98f0c2be6240aa0 Update to new MCP bugfix version, Fixes: Missing Armor/Item rendering, and Boss health mapping issues. + +Build 1.6.1-8.9.0.762: + LexManos: Update dev worksapce: Proper natives location and new server launch profile. + LexManos: TEMPORARY fix for MCP mapping issue. + LexManos: Include MANIFEST file from FML's universal.jar, makes the jar runnable now! + +Build 1.6.1-8.9.0.761: + LexManos: + Updated FML: + MinecraftForge/FML@6f0eedc9a64e4e246c40335e91b4868ad7f5a9e2 Fixed ClassCastException when loading ModLoader mods + MinecraftForge/FML@8844554da6d5d15756d7b0a9da2f5924006b3190 Merge pull request #243 from jrtc27/modclassloader + MinecraftForge/FML@7aa7221756d62ea1fbc750d7cf7acfdb28d75f2e Fix transformer search + MinecraftForge/FML@5f7df5e742cbc21565cee0d25709b5cb5462127c Revert "Keep these on our servers until the launcher is actually fixed -.-" + MinecraftForge/FML@ad79b9ed86eaf8c2702d79505d78a931c1774560 Fix up some deprecation warnings, and clean up coremod code that's going away. + MinecraftForge/FML@ba3707af22376f8f18103f63db56e4614a9c37db More javadoc cleanup + +Build 1.6.1-8.9.0.760: + LexManos: Attempt to gather lastBuild information to fix ChangeLog's off-by-one issue. + +Build 1.6.1-8.9.0.759: + LexManos: Move resource location resolution down to TextureAtlasSprite and allow for sprites that are not stitched. + +Build 1.6.1-8.9.0.758: + Christian: + Start: f1b533ad87ea08d6e62259c59779bcec1636e2fe + End: f21cd286ca8e974b75536224a38cc0dacaca8454 + Updated FML: + MinecraftForge/FML@f21cd286ca8e974b75536224a38cc0dacaca8454 Resource packs, part two. FML mods are now resource packs. Vanilla will scan anything under 'assets' and turn it into a resource prefix. Use resourcelocations to look stuff up. + +Build 1.6.1-8.9.0.757: + LexManos: Update ChestGenHooks for new Dungeon chest strcture. + +Build 1.6.1-8.9.0.756: + LexManos: Make Block.setIconName public + LexManos: Update filler block to prevent useless console warning. + LexManos: Fix resource domain when loading icon. Textures should be located in /assets/{domain}/textures/{block|item}/{name}.png Same strcutre as before except 'assets' instead of 'mods'. + +Build 1.6.1-8.9.0.755: + LexManos: Update ToolMaterial enum helper. + LexManos: Release will now build a installer jar and use the standard 'target' output folder. + LexManos: + Updated FML: + MinecraftForge/FML@29d6c875d0675ffa14428c511bd6ebe9232a486c Add FML Installer logo crated by @ZaverSLO https://twitter.com/ZaverSLO/status/349947190300508162 + MinecraftForge/FML@3d17434510e890574b68c8a181b80c830b5d043a Build installer package for the new client launcher. + MinecraftForge/FML@bf38d947569911dab03319a8b0f1964f36b195b2 Update json samples + MinecraftForge/FML@7037184a4e724300001dfc1f8df2e76a0ec30368 Fix up release JSON + MinecraftForge/FML@dc7d02ebf6c9fc5965344a9aeca79f230a40afb4 Fix json syntax error. + LexManos: + Fix installer unintended replace. + + Updated FML: + MinecraftForge/FML@9b6525e80504ff72a1798cf5797bf148295db776 Point scala downloads to our servers, Launcher doesn't like standard maven repos. + LexManos: + Updated FML: + MinecraftForge/FML@91ecf711092e1610dd10e77cdd517c3324e62d8d Fix -rel json + MinecraftForge/FML@efc369ee83a7b62f605c13e16efad66b63b4bd8c Fix EventHandler annotation. + MinecraftForge/FML@fbd57b32641b540d609314d91fd64350d50b9013 Mods are now loaded as resource packs. Vanilla will scan for valid prefixes based on subdirs of 'ass + ets' which can then be referenced as ResourceLocations with the ":path" notation. + LexManos: + Updated FML: + MinecraftForge/FML@5a97d183dfb13b0f831172a1afef7407347ea7bc Remember to update your patches!!!! + MinecraftForge/FML@f1b533ad87ea08d6e62259c59779bcec1636e2fe Keep these on our servers until the launcher is actually fixed -.- + LexManos: Fix bound texture in Controls screen, Closes #631 and #629 + +Build 1.6.1-8.9.0.751: + LexManos: + Updated FML: + MinecraftForge/FML@1229c4c4ea888f4f69272eed94ef5a53ce79ccda Fix src distrabution, and got rid of pesky common folder in eclipse workspace. src is now installable. + MinecraftForge/FML@902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016 Revert common folder fix, Common folder does nothing, feel free to delete it after first load. + LexManos: Update src distro installer script. Source distro works now! + +Build 1.6.1-8.9.0.750-1.6: + LexManos: + Updated FML: + MinecraftForge/FML@1229c4c4ea888f4f69272eed94ef5a53ce79ccda Fix src distrabution, and got rid of pesky common folder in eclipse workspace. src is now installable. + MinecraftForge/FML@902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016 Revert common folder fix, Common folder does nothing, feel free to delete it after first load. + LexManos: Update src distro installer script. Source distro works now! + +Build 1.6.1-8.9.0.749: + LexManos: Update workspace for new library structure. + LexManos: Update FML to 16launch branch + LexManos: Initial patch update to 1.6, Does not compile, need to update references to the old TexturePack system. + LexManos: Small fixup, need to Update GuiIngameForge for new HUD changes. + LexManos: + Updated FML: + MinecraftForge/FML@6a318ddb784ca8b2bef0f6718089f7beb4d404e0 Fix typo in new packages. + MinecraftForge/FML@3711da9c456d20865a965734cc5aeaf7f5cb5e5d Another typo + MinecraftForge/FML@e35e4b16ff3d6dea547c41f02f2ca31ebe1f74aa More fixups + MinecraftForge/FML@18371bd8c9bd107f774289da35519f593ccc8ee7 Some fixes for updated mcp code + MinecraftForge/FML@ef646d3146e1f285d2cb8e79a74373beffa84774 Merge branch '16launch' + MinecraftForge/FML@7406b38d8ad1bc5c2c641c74f1614b946f246588 1.6.1 + MinecraftForge/FML@12c928c538c1c04d3a21255c747d15468328ace9 Tweak commands patch + MinecraftForge/FML@3f15cd54c2d776ea161aaedbecad9e188d66578f Functional client @ 1.6.1 + MinecraftForge/FML@71a92de5d95fccc4fe17cc39d0836891c6622f4d Client launch for eclipse + LexManos: + Updated FML: + MinecraftForge/FML@8960f6869fbe30d358a40997c47999025c3eae68 Add windows lzma executable http://tukaani.org/xz/ He states that most things are under public domai + n, But I couldn't find an exact reference to this executable. I'm going to assume it under public domain and distribuiting it here is fine. If not someone pleas + e direct me to the apropriate license and I will act accordingly. + MinecraftForge/FML@70cfe24e67adf6872ef1501599e2115e420c2539 Fix wrong project name in distro eclipse launch. + MinecraftForge/FML@7a004087f79b94bc92f29d50eb71288b6c1c968c Add deobf data to src dist. Dont create deobf jar as we ship the lzma Added *.lzma to .gitignore + LexManos: + Updated FML: + MinecraftForge/FML@110cf372eb5aa85df20b248976f1acdefa85e102 Add deobf data to merge-common, workspace is now actually runnable! + LexManos: Support dirty submodules in changelog script. + LexManos: 1.6.1 Update + LexManos: Add new launch configs to dev workspace. + LexManos: Update GuiIngameForge to reflect Mojang changes in 1.6.1 + LexManos: + Updated FML: + MinecraftForge/FML@c418da353f6a8420b095fa737e8b0eae270d31ae Cleanup coremod code, server side working now. + LexManos: Update release script to generate binary patches and include deobf data. + LexManos: Deprecation sweep and update version to 8.9 to reflect 1.6.1 update. + LexManos: MinecraftForge/FML@7fecf2ad6bdd918149a3c43453f6a78bd11e5404 Update mcp URL. + LexManos: Try absolute path, to not confuse jenkins. + +Build 1.6.1-8.9.0.748-1.6: + LexManos: Try absolute path, to not confuse jenkins. + +Build 1.5.2-7.8.1.738: + LexManos: Fic Chest content gneeration delegate call. Cloases #609 + LexManos: Add air check to Flint and Steel Ref: #602 + +Build 1.5.2-7.8.1.737: + LexManos: Bump Forge revision and mark recomended. + +Build 1.5.2-7.8.0.736: + LexManos: Added EntityLiving to Block.isLadder arguments, deperacating older version. New parameter has the possibility of being null, so modders must take care. Closes #608 + LexManos: Add air checks to BlockSand falling and Piston pushing. Please report any other issues with custom 'Air' blocks in issue #602 + +Build 1.5.2-7.8.0.735: + mitchel.pyl: Fix tripwire patches for solid sides + +Build 1.5.2-7.8.0.734: + Christian: + Fix server patch FML update + + Updated FML: + MinecraftForge/FML@22738de028a9ba51d43d73857dfb8969985566f0 Attempt to properly fix deadlock if the internal server derps. It should never hang now. Damn you fast computer.. + MinecraftForge/FML@05a854cd2af53ca822ee8b249b0b3bbe44f94675 Small tweaks to the mcp data. Nothing major.. + +Build 1.5.2-7.8.0.733: + Christian: Make glass panes and iron fences connect to block sides based on solidity. This does change IBlockAccess, so anything with a custom IBlockAccess may need to implement the new method. + +Build 1.5.2-7.8.0.732: + LexManos: Forgot most important side, release script. + +Build 1.5.2-7.8.0.731: + LexManos: Fixed changelog generation. + +Build 1.5.2-7.8.0.730: + LexManos: Fix AIOOB exception in crash reporting if exception does not have a stack. Possible, but odd. + +Build 1.5.2-7.8.0.729: + LexManos: Fix hoes being able to till dirt under other blocks, and made it look for air type blocks. + LexManos: Add NPE protection to refernce to MinecraftServer.worldServer + +Build 1.5.2-7.8.0.728: + LexManos: Fix Air block check in BlockPortal. + +Build 1.5.2-7.8.0.727: + LexManos: + Add NPE protection to ItemStack delegates. Closes #601 + Also cleaned up the names of said delegates, we do not have to follow MCP's crowdsourced names as they are very bad. + Redirected damage through setItemDamage to allow items to have finder control of breaking. + +Build 1.5.2-7.8.0.726: + LexManos: Disable ImageIO's File based cache, should speed up texturepack loading/stitching. + +Build 1.5.2-7.8.0.725: + Christian: + Updated FML: + MinecraftForge/FML@24c405665105a789a0708a7e30c8bcb96899da6b Add in an optional modid identifier for @SidedProxy. It's main use is when both scala and java @Mods reside in the same package, and you want the @SidedProxy behaviour for a specific @Mod language type. In general it should not be needed otherwise. + MinecraftForge/FML@cd0466395a8f1af3ec44f124bf4088df2d318603 Fix sysout with trailing messages after a newline + +Build 1.5.2-7.8.0.724-newliquid: + jeffreykog: RenderGameOverlayEvent.Post(ALL) is now called in GuiIngameForge + LexManos: Fix arbitrary GUIContainer text coloring by forcing lighting to be disabled. Closes #594 + Christian: Patch village distance checking to use floats instead of ints, to avoid int wrapping + Christian: Fix isAir check to see if a portal can light. Should fix w/Railcraft and others + LexManos: Make changelog generation non-fatal untill we get jenkins issue figured out. + LexManos: Add cache for ASM Event Handler bridge classes, should not need to redefine a class to invoke the same method on different instances. + LexManos: Ignore registration of a object that is already registered. Preventing duplicate callback invocations. Thanks King_Lemming for pointing this out. + Christian: + Updated FML: + MinecraftForge/FML@6f3da9736531153629fb4213e3b2cae776bfb50a Don't throw an exception if the scala adapter find a java proxy. I may add some distinguishers to @SidedProxy so you know which mod it's for. + MinecraftForge/FML@59fe905695421a5be9370b0009ef794abaaf75bb Don't continue trying to send events to mods that depend on errored mods. + +Build 1.5.2-7.8.0.723: + Christian: + Updated FML: + MinecraftForge/FML@6f3da9736531153629fb4213e3b2cae776bfb50a Don't throw an exception if the scala adapter find a java proxy. I may add some distinguishers to @SidedProxy so you know which mod it's for. + MinecraftForge/FML@59fe905695421a5be9370b0009ef794abaaf75bb Don't continue trying to send events to mods that depend on errored mods. + +Build 1.5.2-7.8.0.722: + jeffreykog: RenderGameOverlayEvent.Post(ALL) is now called in GuiIngameForge + +Build 1.5.2-7.8.0.721: + LexManos: Ignore registration of a object that is already registered. Preventing duplicate callback invocations. Thanks King_Lemming for pointing this out. + +Build 1.5.2-7.8.0.720: + LexManos: Add cache for ASM Event Handler bridge classes, should not need to redefine a class to invoke the same method on different instances. + +Build 1.5.2-7.8.0.719: + Christian: Fix isAir check to see if a portal can light. Should fix w/Railcraft and others + LexManos: Make changelog generation non-fatal untill we get jenkins issue figured out. + +Build 1.5.2-7.8.0.716: + Christian: Patch village distance checking to use floats instead of ints, to avoid int wrapping + +Build 1.5.2-7.8.0.715: + LexManos: Fix arbitrary GUIContainer text coloring by forcing lighting to be disabled. Closes #594 + +Build 1.5.2-7.8.0.713: + Christian: + Updated FML: + MinecraftForge/FML@843a13c1ab1e3901160082fa63c557243fb64675 Try and clean up cycle detection output a bit + MinecraftForge/FML@82e9de8641c6a559eec711ea6d1e940d99cbc98f More tweaks to the mod sorting code + MinecraftForge/FML@ac97370f94d10beee5f021795cddda827c4411d4 Add in a pretty sorting error screen + MinecraftForge/FML@f1d68ed4c82cd28e50ec6a0befc55ff0165bfe08 Throw the sorting exception + MinecraftForge/FML@edc1fb24e2cad9badd2dd18ccccd590d77156e18 Send the "suspect list", and print the suspect versions + +Build 1.5.2-7.8.0.711: + bloodshot: + Add support for servers to register dimensions on client. + + In order to support multi-worlds such as MultiVerse, the server needs the + ability to register dimensions on client or many forge mods such as IC2 + will not function correctly. This has been an issue for MCPC which + provides both Forge and Bukkit support to players. By adding the + DimensionRegisterPacket class, MCPC now has the ability to send the + required packet to client to register a dimension with DimensionManager. + LexManos: Cleanup Dimension Registration packet, generate takes no arguments, and added fix to world to prevent providers from overwriting the dimension ID. + LexManos: Fix potential GL issue when atlas animations bind textures without informating RenderEngine. + +Build 1.5.2-7.8.0.710: + LexManos: + Introduced the framework for Forge's packet handler system. Heavily based off FMLPacket. + Packet splitting and reconstruction is handled. + +Build 1.5.2-7.8.0.708: + Christian: + Updated FML: + MinecraftForge/FML@3bf50c4bbe82f0cc317dafcf2a569cb5210bc738 Fix server side derp with Forge network packet handler + +Build 1.5.2-7.8.0.707: + LexManos: Fix type in biome list. + LexManos: Fixed creative tab rendering with invalid color closes #588 + +Build 1.5.2-7.8.0.706: + Christian: + Add forge network handling support + + Updated FML: + MinecraftForge/FML@4922e90d81d8b8b9374c4d04858a06c5bf03965c Separate network mod config from setup. Allows for Forge Packet Handler nicety + +Build 1.5.2-7.8.0.705: + mehvids: Add hitInfo field to MovingObjectPosition for when an int doesn't suffice + +Build 1.5.2-7.8.0.704: + LexManos: Fix another NPE when Items are in Block range with custom renderers, Modders keep your items out of the block range! Closes #581 + LexManos: Fixed render count for stacks of blocks 40+ and distrabution of items based on scale. Closes #579 + +Build 1.5.2-7.8.0.703: + Christian: Remember x & z passed to getTopSolidOrLiquidBlock and use it for foliage tests. Fixes #575 + +Build 1.5.2-7.8.0.702: + Christian: Fix blending on the hotbar. Closes #574 + +Build 1.5.2-7.8.0.701: + Christian: + Updated FML: + MinecraftForge/FML@23b070c7d02a8da44bf04c2f9ba2b485a44ad967 Alternative @SidedProxy setter for Scala. + MinecraftForge/FML@2cca7aa759b4b6c3a128ce43bbd924e4762c43c2 Some more Scala @SidedProxy adjustments. Now properly supporting pure singletons, i.e. object C { @SidedProxy(...) var proxy: P = null } Removed fallback, as all such singletons are properly handled by the new code now, and class implementations fall back to the code also used for plain Java mods. + MinecraftForge/FML@8517a824e5251c409e05999d42fc6d70497609f5 Merge declaration and initialization of a variable. + MinecraftForge/FML@a3a920437f3ede6841ae2c449a38975b02b28088 Merge pull request #230 from fnuecke/master + Christian: Add in a very simple stencil bit registry to try and arbitrate between mods wanting to use stencil bits in rendering + +Build 1.5.2-7.8.0.700: + hbiede: + Added oreQuartz + + Gives a default quartz Ore Dictionary (I know of at least 3 used by different mods that use Nether Quartz as an equivalent). + gholdampf: updated FurnaceRecipes.java.patch + mike.stengel: Created an ItemStack sensitive version of canHarvestBlock. + +Build 1.5.2-7.8.0.699: + CovertJaguar: + Possible NPE if the liquid isn't in the LD + + https://github.com/BuildCraft/BuildCraft/issues/787 + +Build 1.5.2-7.8.0.698: + LexManos: Fix NPE when rendering EntityItems that are not blocks but int he block range. + +Build 1.5.2-7.8.0.697: + LexManos: Prevent water from dropping snowballs. + +Build 1.5.2-7.8.0.696: + LexManos: Fire EntityJoinWorled event for forced entities {Players and there mounts} as well, just ignore the cancelled value. + +Build 1.5.2-7.8.0.695: + LexManos: + MinecraftForge/FML@787c0c4a6af3af60928b3a90f383a305a17a4347 Don't spit error on LWJGL not supporting 4.3 just warning. + Make custom item renderers attempt to use EQUIPPED type when running first person. For backwards compatiblity, will be removed in 1.6. + And a small change to make the 1.6 check not print it's stack trace. + +Build 1.5.2-7.8.0.693: + purpleposeidon: Fix render bounding box of trapped double chests + jholcroft: + Make getStencilBits static + + Made getStencilBits static so it can be called. + +Build 1.5.2-7.8.0.692: + LexManos: Move Partical rendering down in the order, after everything else. Should fix particals rendering behind water, digging process, and selection. + +Build 1.5.2-7.8.0.691: + LexManos: Fixed NPE in rendering dragged items. + +Build 1.5.2-7.8.0.690: + LexManos: + Attempt to allocate a 8-bit stencil buffer when creating Minecraft's display context. If that throws an error it will revert back to it's default values. + Also contains a method for modders to rereive how many bits the context was created with. Closes #552 + +Build 1.5.2-7.8.0.689: + LexManos: EntityPlayer sensitive version of Item.isValidArmor, deprecated older version. Closes #551 + LexManos: Changed to just plane entity for flexability. + LexManos: New RenderPlayer and RenderLiving events. Closes #493 + +Build 1.5.2-7.8.0.688: + pahimar: Update forge_at.cfg + +Build 1.5.2-7.8.0.687: + mitchpetrie29: Separate EQUIPPED and EQUIPPED_FIRST_PERSON Item Render Types + +Build 1.5.2-7.8.0.686: + LexManos: Capture and fire the PlaySoundAtEntity event for The client entity. Minecraft does some odd bypasses for no good reason. Thanks iPixile for reporting this. + +Build 1.5.2-7.8.0.685: + LexManos: + Updated FML: + MinecraftForge/FML@99bb50d8f8d27217ba58a41c802a504213e99461 Improved Entity Spawn Error + MinecraftForge/FML@c0cca7f41d5b080e39dd8d3d6cfc329295c822e6 Merge pull request #227 from CovertJaguar/patch-1 + MinecraftForge/FML@49111e9c5cffab49ec35f965801c3f0496f6def6 Add version detection to astyle and print error if it doesnt detect version 2.0+ + Also fixed astyle's config for max-instatement-indent that sometimes caused crashes with certian versions of astyle. + +Build 1.5.2-7.8.0.684: + LexManos: + Update to 1.5.2 PR. + MinecraftForge/FML@f0bba74a4748935ef3a715ae2f45feb75cc20376 Update for minecraft 1.5.2 + MinecraftForge/FML@62fdbad74c2507d147ecab56f56029135d88c6f5 Update MCP's md5 for the fixed srg files. + LexManos: + Updated FML: + MinecraftForge/FML@00f00b17bf0da262e6fe3e327ca2deedf7146305 Fix scalac detection to actually use the located command instead of defaulting to 'scalac' + LexManos: Fixed hardcoding of MC version in debug text. + LexManos: Bump version number for 1.5.2 + +Build 1.5.2-7.8.0.683-1.5.2: + LexManos: Bump version number for 1.5.2 + +Build 1.5.1-7.7.2.682: + cadyyan: Fixed build error handling using invalid Python syntax. + +Build 1.5.2-7.7.1.681-1.5.2: + LexManos: Fixed hardcoding of MC version in debug text. + +Build 1.5.2-7.7.1.680-1.5.2: + LexManos: + Updated FML: + MinecraftForge/FML@00f00b17bf0da262e6fe3e327ca2deedf7146305 Fix scalac detection to actually use the located command instead of defaulting to 'scalac' + +Build 1.5.1-7.7.2.679: + LexManos: Changelog generator will now bundle failed builds with the next successful build. Should make it look better and prevent the version numbers from being confusing. + +Build 1.5.1-7.7.2.678: + LexManos: Bump version to 7.7.2 so I can make a release. + +Build 1.5.1-7.7.1.676: + tobias: Fixed ListenerListInst not being rebuild after unregistering a listener, causing calls to unregistered event listeners. + tobias: Replaced derpy tabs with spaces + +Build 1.5.1-7.7.1.675: + kinglemming: + -Add vanilla Ores to the Ore Dictionary. No recipe replacement required. + -Add NBT-sensitive getMaxDamage() for ItemStack. + + Signed-off-by: King Lemming + +Build 1.5.1-7.7.1.674: + LexManos: Attempted a fix for the changelog generation, should print all builds back to 1 now. + +Build 1.5.1-7.7.1.673: + Christian: + Updated FML: + MinecraftForge/FML@cf9b5b445ba284d389c7e32a03d9c8ef43469042 Don't leave scala running in interactive mode. + +Build 1.5.1-7.7.1.672: + Christian: + Updated FML: + MinecraftForge/FML@cfda7fc738ce6079f625a3822ebff5e7e0db5669 Fix URL for MCP + MinecraftForge/FML@781c68121626321e0efddaf4c4db9f1b8b5911db Some fixups for scala compilation in MCP. Scala should now be compilable and reobfuscatable with srgnames in MCP. + Christian: Try and be less noisy about world leaks + Christian: ItemStack delegation to Item for damage values. + LexManos: Fix rotation issue with non-block items. + Christian: + Updated FML: + MinecraftForge/FML@ddadf93ca1d648d88fdb61c9625cd675c3650ccd Fix when an old scalac is present on the system to not fail the build + Christian: + Updated FML: + MinecraftForge/FML@aa200923f0fe0c548faa4f103d803ade2e49d19d Fix patch derp. + +Build 1.5.1-7.7.1.667: + Christian: + Updated FML: + MinecraftForge/FML@dcf069ca52738a7bb7bde01f1c7ebd2e06cd0ac6 Attempt to reduce lines on the screen for id mismatch. Hopefully prevents game crashes. + MinecraftForge/FML@58ba24add2a96bf4c079d5919f2d90dcc2f380e4 Fix possible NPEs in GameData + +Build 1.5.1-7.7.1.666: + Christian: + Updated FML: + MinecraftForge/FML@a3b5eaacfdd9218ef68d3dc064bba729b797cb3d Fix a small modloader compatibility derp: closes #222 + MinecraftForge/FML@677a6e578e84109702365da4a784f9a57d8c9957 Fix scala supporting SidedProxy. It should work now. + MinecraftForge/FML@334a76de75f2b417f04c23526c7e66ceb48e0de2 Update FMLDeobfuscatingRemapper.java + MinecraftForge/FML@42f1d8795599e0d1a516a1fdd7488a09b77e4565 Merge pull request #224 from Glought/master + MinecraftForge/FML@2dcabe01232b48009acbca6724565598761f561b Add a to string to fmlmodcontainer: should mean less derpy cyclic dependency data + MinecraftForge/FML@11ac46daebe901a6012a09ba5f6fe44af5b1be06 Fixing the GameRegistry. Now it is possible to register a Block with a BlockItem using following code: MyBlock myBlock = new MyBlock(); GameRegistry.registerBlock(myBlock, MyBlockItem.class, "myBlock"); where MyBlockItem class has one constructor with signature: public MyBlockItem(int id, Block block) + MinecraftForge/FML@c3fda11d100f9db7c32ef212ac37eade3e35d701 Merge pull request #225 from MarcinSc/master + Christian: Add forge/FML data to the f3 screen. + +Build 1.5.1-7.7.1.665: + LexManos: + Forge now takes control of GuiIngame's renderGameOverlay, and spits out a ton of events to give modders control of how the screen is rendered. + Inital draft for community feedback. + +Build 1.5.1-7.7.1.664: + LexManos: Allow spawning of Bonemeal particles even if block is not set. + +Build 1.5.1-7.7.1.663: + LexManos: Fix the BLOCK_3D render helper for items that aren't an instance of ItemBlock Closes #533 + LexManos: Fix replaceable checks to work on blocks with a non-replacable material, Closes #532 + LexManos: Restore world unload event for client worlds Closes #531 + +Build 1.5.1-7.7.1.662: + LexManos: Fix logic issue in CrashReportCategory patch, blame Jadedcat for sloppy quick patch. + +Build 1.5.1-7.7.1.661: + lhb: + Fix for ClassCastException when attempting to fetch Biome types from BiomeDictionary + + Attempting to fetch the BiomeDictionary types linked to a biome throws a ClassCastException. This fixes that + lhb: getBiomesForType will cause the same problem + +Build 1.5.1-7.7.1.660: + Christian: + Updated FML: + MinecraftForge/FML@b3d4ea05ec633fb1898e97febf786f1a3e420986 Fix possible NPE in findItemStack, closes #218 + Christian: + Simple block recolouring API: closes #525 + Fix up documentation on "rotation" API: it is up to the mod to decide interpretation of "rotation" for the mod/block. + +Build 1.5.1-7.7.1.659: + LexManos: Fix return value of EnchantPower hook, closes #518 + LexManos: Adds a field to the player for maximum health. Player.dat additions are present, getMaxHealth() needs a magic number for spawning. Closes #527 + +Build 1.5.1-7.7.1.657: + LexManos: New hook to allow Items to render Helmet overlays like pumpkins do. + +Build 1.5.1-7.7.1.656: + Christian: + Updated FML: + MinecraftForge/FML@394f424185a044afcd6b31f400e731478171dd18 Fix to output versions in crash logs + MinecraftForge/FML@8f35adca7a41c280a4b63d4787f042f615966cac Use more expressive language when a version specifier is a simple unbounded above condition + +Build 1.5.1-7.7.1.655: + Christian: + Updated FML: + MinecraftForge/FML@5673c1dd2966536000c2b3f17f85131204c4a291 Add srgname to registerTileEntityWithAlternatives + MinecraftForge/FML@7aea09f4ca2f087d59ff6cb0de1c8e3e8b9ea4df Add type info to properly deobfuscate overloaded fields. Fixes #210. + MinecraftForge/FML@edffd04ed2e89ece75189f76b92ae47643ec92f8 Add in some caching of the read field descriptions for efficiency + MinecraftForge/FML@0daf1a6df4203d97be65a76a46550f6ad22ccc79 Merge branch 'agaricusb-fix-deobf-field' + MinecraftForge/FML@ada52078c75fdfa506a4287c112d01d9af961d5a Merge pull request #216 from agaricusb/add-srgname + +Build 1.5.1-7.7.1.654: + jmacwilliams: fixed a bug that prevented proper lava generation near bedrock + +Build 1.5.1-7.7.1.653: + LexManos: Fix AIOOB in crash report stack trimming. + +Build 1.5.1-7.7.1.652: + pahimar: Fix a derp in that we provision the various arrays for a face, even if we are not going to parse data into it. Solves NPEs for when obj models that don't have texture coordinates attempt to render. + pahimar: Missed a bit + +Build 1.5.1-7.7.1.651: + LexManos: Cave and Ravine gen will now take into account the Biomes top and foller block, allowing them to break the surface in modded biomes. Beaches, MushroomIslands and Deserts are exempt from this check to preserve vanilla world gen functionality. Closes #491 + +Build 1.5.1-7.7.1.650: + Christian: Fix offset in AdvancedModelLoader. *doh* + +Build 1.5.1-7.7.1.649: + LexManos: Added NBT data to liquid stacks. Closes #501 + LexManos: Added a small method in the Block.java to specify the amount of enchanting power it can supply to an enchanting table. Closes #508 + +Build 1.5.1-7.7.1.648: + LexManos: Item callback for EntityItem update tick. Closes #426 + LexManos: Add Item 'swing' callback for use when playing the arm swing animation. Closes #505 + +Build 1.5.1-7.7.1.647: + Christian: Delete sneaky extra file + +Build 1.5.1-7.7.1.645: + LexManos: Re-add and mark deprecated the old signature for ForgeHooksClient.getArmorTexture. + +Build 1.5.1-7.7.1.644: + Christian: + Deprecate preloadTexture, make it a no-op. Should stop derpiness with new + texturing system performance tweaks. + +Build 1.5.1-7.7.1.643: + LexManos: + Updated FML: MinecraftForge/FML@4836b3272a9b292c62816c1d1f9e845486753839 Re-worked the Texture patches, optifine helper function, and re-added support fo + r dynamically rotating the texture for mod authors who do things horribly wrong. + +Build 1.5.1-7.7.1.642: + Christian: + Fix performance of texture uploads + + Updated FML: + MinecraftForge/FML@00c788308881a07a683e17e2e9382313f3719b45 Very significant improvement in performance by using glSubImage to upload data. Inspired by frequent complaints about performance of hires texture packs. They probably still need a beefy system but should work. Hopefully I can figure out why the subImage GL side copy isn't working properly for an even more significant speed boost. But this gets things started. + MinecraftForge/FML@57ad221cc6d9605b9d521f86620c2a31f922ac24 And add the patches *sigh* + Christian: + Updated FML: + MinecraftForge/FML@a31607ae7d0214101679a1ecf1ae8032a5257eda Fix compilation derp, and clean up rotation helper. + +Build 1.5.1-7.7.1.640: + LexManos: Small optimization for usages of Minecraft.getGLMaximumTextureSize(), only need to calculate it once. + LexManos: Small bugfix in Stitcher that was preventing ti from fully filling the possible texture space. Should lower the amount of empty space in textures. + LexManos: + Optimize Texture loops a bit for non-rotated textures. Should help the FPS loss on higher resolution texture packs. If it becomes a major issue we may have to look into a more optimized animation system. + + https://mojang.atlassian.net/browse/MC-13206 + +Build 1.5.1-7.7.1.639: + LexManos: Fix scoreboard saving bug caused by our fix of vanilla map saves. + +Build 1.5.1-7.7.1.638: + LexManos: Updated FML: MinecraftForge/FML@1de89525cc2265bdce8704d9bd0d31c57bca4d97 Fixed issue with instalation when java/javac commands had quotes. + LexManos: Deprecate long dead interface that moved to FML. remvoe next MC version. + +Build 1.5.1-7.7.1.637: + LexManos: Updated FML: MinecraftForge/FML@704a70902fca3de620375116a33dccd3d6d576d0 Sanitize input to isRemappedClass to use '/' as a package seperator like the srg files. + +Build 1.5.1-7.7.1.636: + froggytheturtle: + This allows the result of the explosion to take into account metadata, + tile entities, or even to cancel it altogether. + + Allowed block exploding to take into account tile entity and metadata + LexManos: New hook to allow Items to provide there own armor models. Closes #487 + +Build 1.5.1-7.7.1.635: + LexManos: Fix item deletion in creative menu for items that are the same id/meta but differnet NBT's. Closes #479 + LexManos: Untag NBTTagList.removeTag as client side only, allowing simple removal ont he server side. Closes #477 + +Build 1.5.1-7.7.1.634: + LexManos: Allow items to provide there own FontRenderer for there tooltips. Added for #463 + +Build 1.5.1-7.7.1.633: + ProjectZulu: Added maxCanSpawnInChunk event to allow overriding of creature chunk spawn cap + ProjectZulu: Clarify Factory call and Event Functionality + LexManos: Add function to remove categories from a configuration, indavidual properties can be removed using ConfigCategory.remove() Closes #462 + +Build 1.5.1-7.7.1.632: + LexManos: + Pulled Biome Tag System by Emasher, Closes #433 + An issue with biome adding mods which is becoming increasingly annoying for players, is that many mod authors that add biome specific world generation or mobs in their mods, for the most part, hard code them to work with vanilla biomes only. This becomes a huge problem when it's difficult to even find a vanilla biome, let alone a specific one, when biome mods are installed. + + A simple solution to this problem is a tag system for biomes that allows mod authors to set up their world generators, or mobs to generate or spawn in biomes that have been registered with a specific tag such as "FOREST", or "FROZEN". I wrote such a system a few months ago, which I've been using with my own mods, and have made available to anyone who wants to use it. Since then, I've had requests from mod authors and players alike to try and get it, or at least similar functionality, into Forge, where other mod authors will be more comfortable using it. + + Aside from the tags, it also includes a rule based system to classify biomes that have not already been registered with it when information is requested on them (You can opt out of this by registering a biome as type "NULL"). And additionally, the ability to register IWorldGenerators for specific biomes, or biome types (tags) to speed up chunk generation a little bit. + +Build 1.5.1-7.7.1.631: + LexManos: Deprecate IArmorTextureProvider, moved to Item. And exposed more information to the function. Closes #365 + +Build 1.5.1-7.7.1.630: + LexManos: Updated FML: MinecraftForge/FML@570faeb790745c35403c67fabab57651b71da576 Added the ability to save transformed classes to disc for debugging. + LexManos: Add checking for 'ENUM$VALUES' in EnumHelper. Eclipse uses it's own internal compiler which does not follow the java standard of making the values field names $VALUES and private. Instead its public and ENUM$VALUES. Closes #502 + +Build 1.5.1-7.7.1.629: + LexManos: Revert MinecraftForge/MinecraftForge@f594109b30c87f5a0996eee9e8c4513380733cee If concurancy issues arise we will reassess. The provided solution caused entities to be removed incorrectly and cause 'invisible' entities client side. + +Build 1.5.1-7.7.1.628: + LexManos: Fix EntityPlayer passed to Bonemeal event. + +Build 1.5.1-7.7.1.627: + LexManos: Fix off-by-one in rotated textures. + LexManos: Removed index bounds checking in some chunk functions, if you error blame Grum. + +Build 1.5.1-7.7.1.625: + LexManos: Fix vanilla texture bug causing rotated textures to be placed wrong. + +Build 1.5.1-7.7.1.624: + Christian: + Updated FML: + MinecraftForge/FML@8b8837c9ff635d4988e0a1504fca38667825daf0 Fix NPE when branding isn't present + +Build 1.5.1-7.7.1.623: + kraphteu: Remove unneeded SideOnly. ref: Buildcraft/Buildcraft#710 + +Build 1.5.1-7.7.1.622: + Christian: + Removed obsolete patches + Updated FML: + MinecraftForge/FML@26ccb9106e443e664b0fdc1b95c3600b90ab2bc5 Change snooper/crash report brand handling. fmlbranding now loads another string! + MinecraftForge/FML@eff464cf0e656d92dfedf16e79e5cd6c36b9fc76 And the core patches for that + +Build 1.5.1-7.7.1.621: + Christian: Sanity check the item ID for loaded liquid stacks better. + +Build 1.5.1-7.7.1.620: + Christian: Make liquidstacks immutable in their type data. Sorry about this, but it makes things a lot easier. + Christian: Add in persistence code for LiquidTank. Using it should protect against liquids that get removed f.e. Closes #395 + +Build 1.5.1-7.7.1.618: + Christian: Fix up liquidstack so it knows about the texture sheet for it's icon + +Build 1.5.1-7.7.1.617: + Christian: Fix AT file + +Build 1.5.1-7.7.1.616: + Christian: Fix possible NPE in ChunkManager. Closes #478 in reality + +Build 1.5.1-7.7.1.615: + Christian: made BlockFluid.theIcon protected + Christian: fix bug #489 from #429 + Christian: Fix up some liquid logic + +Build 1.5.1-7.7.1.614: + Christian: + Updated FML: + MinecraftForge/FML@2bc6a0666f8a54f6b1fbc3398c6e3a385ecd35b5 Attempt to make any "default package" class public. This might fix problems with certain modloader mods that ship changes to vanilla classes. + Christian: Use the liquid name in liquid stack persistence. Closes #429 + Christian: Fix hashCode + Christian: + Updated FML: + MinecraftForge/FML@0d844874124649099dbcbb9ae2b36719e1dda25f Fix up derp in access transformer + +Build 1.5.1-7.7.1.611: + LexManos: Bump version number for 1.5.1 Note: We really need to do this more... + +Build 1.5.1-7.7.0.610: + LexManos: Fix NPEs when modders stupidly register null texture names. + +Build 1.5.1-7.7.0.609: + LexManos: Fixed issue with Event.hasAnnotation ignoring it's parameter. And cached its values for potential performance gain. Closes #482 + +Build 1.5.1-7.7.0.608: + jesse: + Entity Extended Properties Changes + + Adds IExtendedEntityProperties interface, which specifies three methods + that are needed: Init, Save, and Load. + + Adds the EntityConstructing event, which is called during the + constructor of Entity. It is needed there so that the reference is in + place during the ReadNBT call. + + Adds hooks into Entity that allow registration of + IExtendedEntityProperties classes, as well as saving and loading to NBT. + jesse: + Brewing Stand Changes + + Added an event on potion ingredient applied. Event contains the item + stacks of each of the potions being brewed as well as any remaining + ingredients. + + Changed TileEntityBrewingStand and SlotBrewingStandPotion to look for + instanceof ItemPotion rather than potion.itemID + jesse: + Player Flyable Fall Event + + Adds an event to EntityPlayer that is posted on player fall when the + player has flight capabilities. + Christian: Fix itemframe render bug + Christian: Add in block rotation support. It supports most vanilla blocks (hopefully), logs should be added soon. + jesse: + Access Transformer Changes + + AT changes and corresponding class changes. + Additions (all made public): + EntityLiving.targetTasks + PotionHelper.potionRequirements + PotionHelper.potionAmplifiers + PotionEffect.duration + Potion.setIconIndex + Item.setPotionEffect + Block.blockHardness + Block.blockResistance + jesse: + Enderman Teleport Event + + New event when an enderman teleports that allows the teleport location + to either be modified or completely cancelled. + jesse: + Enderman attackEntityFrom changed + + Changed so that if the teleport fails upon being attacked, Endermen will + take damage as normal. + jesse: + Ender Teleport Changes + + Renamed Ender Teleport Event and added it in to ender pearls. + jesse: + quick bugfix in entityenderman + + reversed boolean check on event result + Christian: + Updated FML: + MinecraftForge/FML@2d368c4c2eb6b4e0bb60757b6e1679c23aaad9db Itemstacks in the GameRegistry (manual registration by mods) + Christian: + Updated FML: + MinecraftForge/FML@5e1949eb0e3a43d3ec6c710289532d93f6819934 Clone the itemstack, and allow for passing in a stacksize + Christian: + Updated FML: + MinecraftForge/FML@ede93d438f2b5fab92cd6a459247ca158354e430 Validate supplied stack size + MinecraftForge/FML@d73ac867df775174dafdd2da193fabd7c3e7407e Add a mechanism to dump the registry- useful for mod developers. + Christian: + Updated FML: + MinecraftForge/FML@82bc9f1b35f5d51a722d294dd252e6bab4d54fa4 Add some information, and a log message letting you know it worked + Christian: Update patches! + Christian: Re-enable changelog? Hopefully... + Christian: Changelog fixup + Christian: Damn you python and your tab obsession! + +Build 1.5.1-7.7.0.605: + Christian: Fix AT config for texturemap + +Build 1.5.1-7.7.0.604: + Christian: + Allow itemstack sensitive damage computation for attacks. Should allow + storing data in the nbt :) + +Build 1.5.1-7.7.0.603: + Christian: + Updated FML: + MinecraftForge/FML@d9db27275ea06d37ae75e201140019ca152314b0 Fix mismatch screen a bit. Should render more correctly now and at least not be blank in a lot of circumstances.. + Christian: Allow items to decide if they can or cannot have book enchantments applied + +Build 1.5.1-7.7.0.602: + Christian: + Updated FML: + MinecraftForge/FML@d1ff1967b50f2ff2edf0b60acdb6508c0a3eeb06 Fixed FMLRelaunchLog's Newline Handling + MinecraftForge/FML@591a25722b36d2d1b200a31278cb8da117363f6b Merge pull request #208 from jrtc27/patch-1 + +Build 1.5.1-7.7.0.601: + Christian: + Updated FML: + MinecraftForge/FML@f709ce757984b13acb7208d6d8fbdeaa83d2928d Fix missing block world rendering + MinecraftForge/FML@748eece456e079a21112a77047d004d4f410b170 Merge pull request #206 from mDiyo/patch-1 + MinecraftForge/FML@012a755bb9ce9737c843b0dfd86473d143b637be Fix up patch properly. Also, fix md5s for the jars. + +Build 1.5.1-7.7.0.600: + LexManos: + Update to 1.5.1 Pre-Release: + MinecraftForge/FML@9565529baf77de27ed8b75be2065da3ba08d16c8 Updated to latest MCP and Minecraft 1.5.1 Pre-release. + MinecraftForge/FML@a573faf92def5dd01af380b3ca86de877c1178a2 Someone derped up this function bad, revert name. + LexManos: MinecraftForge/FML@aaf02ea2ac938d8cbaafdd2f59985c0604d648d7 Updated for new PR client jar. + +Build 1.5-7.7.0.598: + LexManos: + Updated FML: + MinecraftForge/FML@3c346247e1c5de12d4548f6a99349157057e2de6 Fix NPE with CoreMods who do not have the new MCVersion annotation. + LexManos: + Updated FML: + MinecraftForge/FML@625da6492dddcaca8133718aeee97f9981ced623 Fix install.py --mcp-dir option. Fixes #204. + MinecraftForge/FML@687d3c059d054c338c25a489be206a9f3dc63d81 Merge pull request #204 from agaricusb/fix-mcpdir + +Build 1.5.1-7.7.0.597-1.5.1: + LexManos: MinecraftForge/FML@aaf02ea2ac938d8cbaafdd2f59985c0604d648d7 Updated for new PR client jar. + +Build 1.5-7.7.0.595: + LexManos: Change placement of ChunkDataEvent.Save call to apply before sending to worker thread. + +Build 1.5-7.7.0.594: + Christian: + Updated FML: + MinecraftForge/FML@5cc90f060caace93c0bf041d3cc37208f425f623 Fix the logger to treat newlines better, hopefully. Closes #199 + MinecraftForge/FML@5e3af8ac0e18cfa3a92f9ba726ec1a6b55e87d97 Use the relaunch log, for class circularity safety. + MinecraftForge/FML@ce949e6099fe2a63ee6774acd6e55aa55d3b3673 Support simple mc version test in coremods, only effective through jar loading. Also, log some more data about the environment. + +Build 1.5-7.7.0.593: + LexManos: + New TextureStitchEvents called before and after a TextureMap gathers and stitches textures together. + Also added a config option to diable the writing of resulting stitched textures to disc. Default disables the writing. + +Build 1.5-7.7.0.592: + LexManos: + Updated FML: + MinecraftForge/FML@24022ab6ba79e4babb57fc0db893c23d4aec85bc Added comments to note FML-only methods + MinecraftForge/FML@8905237306230a33e2a3bab7a2b6f7a8b42d94e4 Merge pull request #200 from bspkrs/patch-2 + MinecraftForge/FML@577b19c1cf12a354112e829fb5704c32fd6cd0a5 Fix potential NPE in class loading and add extra debug information. + +Build 1.5-7.7.0.591: + LexManos: Fix placing of certian items on Redstone Blocks. + +Build 1.5-7.7.0.590: + LexManos: Fix equipment slots for items when right clicked, and dispensed using a dispensor. + +Build 1.5-7.7.0.589: + LexManos: Prevent pistons from generating snowballs. + LexManos: Fix logic inversion that allowed SnowMen to create snow on hoppers. + +Build 1.5-7.7.0.588: + lepko.san: Fix ShapedOreRecipe checking mirrored recipes + +Build 1.5-7.7.0.587: + Christian: Fix multipass item rendering so that it uses the right spritesheet for the item. + +Build 1.5-7.7.0.586: + froggytheturtle: + Made WorldServer.allPlayersSleeping public + + Made EntityPlayer.sleepTimer public + + Sleep changes + +Build 1.5-7.7.0.585: + LexManos: Fix Activator rails activating TNT carts, closes #458 + +Build 1.5-7.7.0.584: + github: Update ForgeDummyContainer.java + +Build 1.5-7.7.0.583: + Christian: + Updated FML: + MinecraftForge/FML@c5d5f4e5164111c5ae63e8de7ce97cc583d73e6e Fix AllPublic access transformer not affecting methods. Should fix modloader compatibility + +Build 1.5-7.7.0.582: + LexManos: + Updated FML: + MinecraftForge/FML@4762d4d8ef00bd789ffb6bccbd12f7478b07da62 Allocate more ram {typically 256 is defailt} to fermflower, should fix decomplication issues on OSX + MinecraftForge/FML@6370c242f0e1cb8ec80c7dccc1133cb0d0607bae OS X's python 2.6.1 has a bug in zipfile.extractall that makes it unzip directories as regular files. So switch to extract + +Build 1.5-7.7.0.581: + LexManos: Remove the block if TE errors. + +Build 1.5-7.7.0.580: + LexManos: Add config toggle to atempt to remove TileEntities and Entities that error during there update without fully crashing the server, use at your own risk. Closes #424 + +Build 1.5-7.7.0.579: + Christian: + Updated FML: + MinecraftForge/FML@8f2dbf7046f52d836993edb946d7d310b399bf9d Fix up stupid derp in IMC code: actually reset the IMC list after each delivery. Fixes a bunch of mods. Sorry everyone. + +Build 1.5-7.7.0.578: + ohai.iChun: + [Bugfix] One should not assume an item would use the item spritesheet. + + Item class has a func to return an int to use terrain.png or items.png. This makes forge take account of it. + +Build 1.5-7.7.0.577: + LexManos: Fix bug with rendering one too many passes for ItemEntities Closes #450 + LexManos: Fix RedstoneBlock power issues, Closes #452 + LexManos: Fix for nether quartz not generating in the nether, Closes #454 + +Build 1.5-7.7.0.576: + LexManos: Deprecation Sweep in DungeonHooks and fixed wildcard in ChestGenHooks remove function. + +Build 1.5-7.7.0.575: + LexManos: Fix RenderItem to work with items that use the terrain texture map that aren't in the block ID range. Close #443 + LexManos: Move the RenderWorldLastEvent back to before renderHand like it was in 1.4 Closes #444 + LexManos: Add call to EntityLiving when counting entities for Spawning Cap. Closes #447 + LexManos: Fix missed wildcard change in OreDictionary closes #448 + +Build 1.5-7.7.0.574: + LexManos: Fix crash when EnumHelper can't find $VALUES field, log info, and return gracefully. + +Build 1.5-7.7.0.573: + Christian: + Updated FML: + MinecraftForge/FML@23ea835fa7bc0cdb466d058814b5a0e0c67e8c9a Pass obfuscation status to coremods + +Build 1.5-7.7.0.572: + Christian: Some tweaks to the liquid dictionary, to allow for canonical liquid stacks for things like rendering + Christian: + Updated FML: + MinecraftForge/FML@d88db6c0cfd5484428b574889eae02d34535beae Fix up deep tree deobfuscation + +Build 1.5-7.7.0.571: + LexManos: Removed get/setTextureFile from Block, nolonger used. + LexManos: + Updated FML: + MinecraftForge/FML@7b722bfcd6d4c6867d15492c293a455dfd50d272 Update MCP for latest PR silent update. + MinecraftForge/FML@c6dab815f4e036e25b8f56bef7b8ee63f838adb4 Missed joined.exc, must fix scripts. + +Build 1.5-7.7.0.569: + LexManos: + Updated FML: + MinecraftForge/FML@a90504315e928915345c7b04972d912cdaa0bfdb Readjust size of mods button when Minecraft Realms button is enabled. + +Build 1.5-7.7.0.568: + Christian: Fix the oredictionary for the new recipe wildcard value of Short.MAX_VALUE. + +Build 1.5-7.7.0.567: + Christian: + Updated FML: + MinecraftForge/FML@3765ceb02d783ae5156976f3165bafdb6a3ddbb3 Update MCP, fixes the "broken texture packs" problem. + +Build 1.5-7.7.0.566: + Christian: + Updated FML: + MinecraftForge/FML@179c504746910d4196eef3ee2d56f63cf585c983 Simplify logic in tick start/end + MinecraftForge/FML@29edd242cd7a1fadedf4fb874ea8bbd4e643bffa Fix coremods without a manifest crashing the game. Closes #181 + MinecraftForge/FML@ac16845fc4661fa046a252eda7f9a9a847940189 Fix demo mode crash. Closes #187 + MinecraftForge/FML@984291cee91f585a6f4300eedfed882c814843f8 Fix supertype parsing to handle null superclass (Hi Object!). Closes #160 + MinecraftForge/FML@f6479299936f0f94cfc43210dd9dd44b8b5350ef Merge branch 'master' of github.com:Uristqwerty/FML + MinecraftForge/FML@b301e8e4c1877be246fd4f0b45085b70773d8f2b Change type of connection queue to a concurrent linked queue. Much more efficient, hopefully. Closes #189 + Christian: + Updated FML: + MinecraftForge/FML@dab22f5b74f3f2a410e20583f811605dc8e3c05f Fix "0 mods" display when installed in forge. + +Build 1.5-7.7.0.565: + Christian: + Updated FML: + MinecraftForge/FML@485db6be2e6b54a9a523a2b06e0d886792b0826a Use the reobfuscation maps in the reflection helper for field lookups: should help some reflection cases with the deobf. + Christian: + Updated FML: + MinecraftForge/FML@591e65fa1aa52d2a72dc527ad1c2ac53c8eb94c4 Revert "Use the reobfuscation maps in the reflection helper for field lookups: should help some reflection cases with the deobf." + MinecraftForge/FML@2a779ec3289f695b477ec6b0822a27801e2deba1 Try a different way of remapping the fields. Should work because it's userspace, not relauncher space + MinecraftForge/FML@ca2d8bd83475f37946b86cf6fabd8ff810f9c2bf Fix reflection helper: it needs to unmap the classname to find the field maps. + +Build 1.5-7.7.0.563: + Christian: + Updated FML: + MinecraftForge/FML@25f3fcad4654d19637878bdfb2b70a9586fb3fc9 Fix up some relauncher stuff: the vanilla applet works now, as do other applets. Deobf data is resolveable for them too. + +Build 1.5-7.7.0.562: + LexManos: + Updated FML: + MinecraftForge/FML@6bf7c9878cc959d5f5fa8ec0bf9d0d75037df882 Fixed srg name of minecraftDir for runtime deobf. + +Build 1.5-7.7.0.561: + Christian: Refresh patch + Christian: + Updated FML: + MinecraftForge/FML@95d0ff18cdca3b5a91b648c847c00f559f8ce6f2 Fix runtime deobfuscation for remapped inner classes + +Build 1.5-7.7.0.560: + LexManos: + Updated FML: + MinecraftForge/FML@86a9c7d35953296f7c8bd3a2b1b43115ef0f9308 Fixup reobfusication of server code if present. + MinecraftForge/FML@8e7956397dd80902f7ca69c466e833047dfa5010 Just enable server side compile, and warn not to complain tous. + MinecraftForge/FML@889efc1c0a9216b55f6de275e4f4a279d977e60c Fixes GameRegistry.registerBlock + MinecraftForge/FML@fe1623a36a1bb8b0a046d833e896fd46d88898ef Merge pull request #195 from RainWarrior/snapshot15 + MinecraftForge/FML@62f5adf8e21d59408af409a88b2c81757fd3c587 Revert "Fix modlist to use the new texture binding functions, i think" + MinecraftForge/FML@58ee06ea8edf508daa4ab3920790c0153cf6660d Some fixes for the snapshot + MinecraftForge/FML@368a2245ef0071b0b7a35d3bd78ab1ae379f8faf Merge branch 'snapshot15' + MinecraftForge/FML@1eba1dfdc00edf12ca3d8586dc342563218fc717 Fix accidental commands.patch overwrite + MinecraftForge/FML@ebdb166ec87e63503f0071e557cdb44629a0e0c2 Merge branch 'snapshot15' + MinecraftForge/FML@450dd8313c2e9e46d173bbd242f84d48266af7c8 Fix up some small things, merging into mainline + MinecraftForge/FML@1642bad402efe819f4e763bf4b460d8c04194849 Fix Multi-part entity children ID issue, mobs with custom spawning must deal with child ids themselves. + +Build 1.5-7.7.0.559: + LexManos: Update patche for jad-style names. + LexManos: Updated FML and at config for 1.5 snapshot + LexManos: First patches updae to 1.5, Many rendeirng related changes, most notibly removed Item/Block's getTextureFile() functions. + LexManos: Removed some dead code, We don't bind custom tessellators + CovertJaguar: MCL Update + LexManos: Bump major and minor version numbers to mark 1.5, it's gunna break everything. Should be a compileable 1.5 build. + Christian: + Fix a couple of forge patches + + Update FML: d075daf + d075daf Merge branch 'master' into snapshot15 Fix up compilation and patching errors + 1bd6847 Fix up packages.csv ordering for easier diffing + dd832f2 Update for MCP7.30c - fixes redstone rendering issues + aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti + 8921cfe Remember to add the new patches! + cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. Also, added in a "pre-server + e1c6630 Javadoc cleanup + 5ce4e31 Fix breaking change + a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates + 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates + 7ad8529 Update MCP to MCP7.26a and refresh MCP names + 15534ed Update address of the FML repository to the new location in all the files + aa822e3 Fix logical error in comment text + a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. + 0165742 Fix mcp conf md5 signatures for the snapshot + 26a5b31 FMLLogFormatter: dynamic log level name + LexManos: + Merge commit '695b080197bd577cc34fe6dbc72b74f4a74b2d5c' into snapshot15 + Testing cherry picking. + LexManos: + Sync up with FML, Will not run nativly as you need deobfusication_data.zip in your libs folder. + We have not setup the download for that yet, to make it yourself just zip joined.srg name it deobfusication_data.zip and put it in lib + LexManos: Not supposed to have debug stuff... + LexManos: Updated Forge to s13w09c + Christian: Fix up patches for FML, also, add in FML as a submodule rather than a zip + Christian: + Add in simple texture management for mods using the stitcher. Scope with "{domain}:{texture}" to + get textures that are not at /textures//{texture}.png but /mods/{domain}/textures//{texture}.png + instead + LexManos: Testing selective commit of submodule. + LexManos: + Added submodule changelog ganerator: + + Updated FML: + MinecraftForge/FML@e74087ee430633475c3ca058e54e3ef242a9d6aa Ignore again, testing submodule. + LexManos: Removed GNUWin32 files and uneeded files seince FML is now a submodule. + LexManos: Remove window helper batch files. + LexManos: Update python scripts to reflect that FML is now a submodule. Delete updateasmdata as it's in /fml/ now. Build should work once again. + LexManos: Change FML module to read-only connection. + Christian: Update submodule + LexManos: Copy over some needed files for debugging. + LexManos: Rework configuration, configs should now use Config.hasChanged to deterne if thehould call save(), also re-worked the saving to not use String.format as much. + LexManos: Fixed new python changes. + LexManos: + Updated FML: + MinecraftForge/FML@aed2cc446ad8d5882890c5f218eb894ea7bd2577 Force file name encoding to UTF-8, caused different zips on different systems. + LexManos: Fix animation location for textures with domains + LexManos: Add helper functions for deling with custom TextureStitched + LexManos: Add callback on TextureStitched to control texture loading. + LexManos: New world event for controlling potential entity spawnlists. For #430 + LexManos: Removed erroring imports and update build function to die on errors. + LexManos: Fix ItemSeedFood respecting custom soils. + LexManos: + Updated FML: + MinecraftForge/FML@debbdc00be8ea1a261cdff83785ddc7100419a74 Capture Minecraft logs into FML logging + MinecraftForge/FML@74fffc6fdc2eda8caa9a7feb0826d7babb84751a Update next render to 40 + Christian: + Call stitcher for non-existent textures as well. Probably allows + for generated textures. Hmmm + Christian: let's do it right this time. Hmmm + Christian: + Updated FML: + MinecraftForge/FML@abe4f73a9a3158f6f9d1ea2334798f54a25817bf FIX massive performance issue with FML. Thanks to @sfPlayer1 for finding this epic derp on my part! + Christian: Add an Icon to the LiquidStack, for rendering the liquid in various ways + LexManos: Readd second render pass to TileEntities and Entities, patches were missed when merging in master branch. As note, CB can DIAF. + LexManos: Fix compile error, forget to flush to disc. + LexManos: Make release quit on compile error. + Christian: Clean up Access Transformer mapping data + Christian: + Updated FML: + MinecraftForge/FML@e9ff699c2dcd787a3e0ebaa427c625a48de4c9fb Refresh the renderengine after modloading is complete. Should fix issues with out-of-place texture registration by mods. + MinecraftForge/FML@a723aa68606d57b0ee5bac8b1d1905abef440b54 Refresh copyright notices on everything + MinecraftForge/FML@c42a2101408b21799728c88e2d02c718c3b0dd36 Strip deprecated code + MinecraftForge/FML@6eeae8c49ff4359dc21c44eb73e4e043285cd8bf Fix up state transition derp when the server crashes with an error- it shouldn't double-derp + MinecraftForge/FML@81c6421f84c1bff359dfe927974e8730b348806a Tweak license text- any osi licensed project can use the asm transformer code + LexManos: + Updated to 1.5 Pre-release + Updated FML: + MinecraftForge/FML@2d98835db8c6a7665ef55117d60ab4318876836b Scala support! It's still primitive, I hope that people will like it. I do :) + MinecraftForge/FML@5bfaf7c1700191b6ed8f4752c9a95bf8c25323ef Global object registry, also, support the new itemblockwithmetadata constructor + MinecraftForge/FML@80a40c03e644840d827eb7d67ff97f6558eaa2e4 Update to MCP 1.5 and minecraft 1.5. + MinecraftForge/FML@b3e854a15d7c50b4967be8237df5fdace95a15ee Update for new MCP with srg reobf. + LexManos: Fix typos. + LexManos: Deprecated Forge's ISidedInventroy, there is a vanilla solution. Added temporary config option to legacy furnace slot orientation. + LexManos: + Updated FML: + MinecraftForge/FML@f1c6bdd57d41a938cb3326d509042f6842e42396 Support the MCP format of partial reobfuscation for portability. Ensure modloader-like compatibility + MinecraftForge/FML@0419b9d9751ade4497343aefaf2ca43703eb479a Update MCP info for latest + LexManos: Early define CrashReport classes to combat invalid crash details. + LexManos: Fix reobf call. + +Build 1.5-7.7.0.558-snapshot15: + Christian: Clean up Access Transformer mapping data + Christian: + Updated FML: + MinecraftForge/FML@e9ff699c2dcd787a3e0ebaa427c625a48de4c9fb Refresh the renderengine after modloading is complete. Should fix issues with out-of-place texture registration by mods. + MinecraftForge/FML@a723aa68606d57b0ee5bac8b1d1905abef440b54 Refresh copyright notices on everything + MinecraftForge/FML@c42a2101408b21799728c88e2d02c718c3b0dd36 Strip deprecated code + MinecraftForge/FML@6eeae8c49ff4359dc21c44eb73e4e043285cd8bf Fix up state transition derp when the server crashes with an error- it shouldn't double-derp + MinecraftForge/FML@81c6421f84c1bff359dfe927974e8730b348806a Tweak license text- any osi licensed project can use the asm transformer code + LexManos: + Updated to 1.5 Pre-release + Updated FML: + MinecraftForge/FML@2d98835db8c6a7665ef55117d60ab4318876836b Scala support! It's still primitive, I hope that people will like it. I do :) + MinecraftForge/FML@5bfaf7c1700191b6ed8f4752c9a95bf8c25323ef Global object registry, also, support the new itemblockwithmetadata constructor + MinecraftForge/FML@80a40c03e644840d827eb7d67ff97f6558eaa2e4 Update to MCP 1.5 and minecraft 1.5. + MinecraftForge/FML@b3e854a15d7c50b4967be8237df5fdace95a15ee Update for new MCP with srg reobf. + LexManos: Fix typos. + LexManos: Deprecated Forge's ISidedInventroy, there is a vanilla solution. Added temporary config option to legacy furnace slot orientation. + LexManos: + Updated FML: + MinecraftForge/FML@f1c6bdd57d41a938cb3326d509042f6842e42396 Support the MCP format of partial reobfuscation for portability. Ensure modloader-like compatibility + MinecraftForge/FML@0419b9d9751ade4497343aefaf2ca43703eb479a Update MCP info for latest + LexManos: Early define CrashReport classes to combat invalid crash details. + LexManos: Fix reobf call. + +Build 13w09c-7.7.0.556-snapshot15: + LexManos: Make release quit on compile error. + +Build 13w09c-7.7.0.555-snapshot15: + LexManos: Readd second render pass to TileEntities and Entities, patches were missed when merging in master branch. As note, CB can DIAF. + LexManos: Fix compile error, forget to flush to disc. + +Build 13w09c-7.7.0.553-snapshot15: + Christian: Add an Icon to the LiquidStack, for rendering the liquid in various ways + +Build 13w09c-7.7.0.552-snapshot15: + Christian: + Updated FML: + MinecraftForge/FML@abe4f73a9a3158f6f9d1ea2334798f54a25817bf FIX massive performance issue with FML. Thanks to @sfPlayer1 for finding this epic derp on my part! + +Build 13w09c-7.7.0.551-snapshot15: + Christian: let's do it right this time. Hmmm + +Build 13w09c-7.7.0.550-snapshot15: + Christian: + Call stitcher for non-existent textures as well. Probably allows + for generated textures. Hmmm + +Build 13w09c-7.7.0.549-snapshot15: + LexManos: Fix ItemSeedFood respecting custom soils. + LexManos: + Updated FML: + MinecraftForge/FML@debbdc00be8ea1a261cdff83785ddc7100419a74 Capture Minecraft logs into FML logging + MinecraftForge/FML@74fffc6fdc2eda8caa9a7feb0826d7babb84751a Update next render to 40 + +Build 13w09c-7.7.0.548-snapshot15: + LexManos: Removed erroring imports and update build function to die on errors. + +Build 13w09c-7.7.0.547-snapshot15: + LexManos: New world event for controlling potential entity spawnlists. For #430 + +Build 13w09c-7.7.0.546-snapshot15: + LexManos: Add callback on TextureStitched to control texture loading. + +Build 13w09c-7.7.0.545-snapshot15: + LexManos: Fix animation location for textures with domains + LexManos: Add helper functions for deling with custom TextureStitched + +Build 13w09c-7.7.0.544-snapshot15: + LexManos: Copy over some needed files for debugging. + LexManos: Rework configuration, configs should now use Config.hasChanged to deterne if thehould call save(), also re-worked the saving to not use String.format as much. + LexManos: Fixed new python changes. + LexManos: + Updated FML: + MinecraftForge/FML@aed2cc446ad8d5882890c5f218eb894ea7bd2577 Force file name encoding to UTF-8, caused different zips on different systems. + +Build 13w09c-7.7.0.543-snapshot15: + Christian: Update submodule + +Build 13w09c-7.7.0.542-snapshot15: + Christian: Fix up patches for FML, also, add in FML as a submodule rather than a zip + Christian: + Add in simple texture management for mods using the stitcher. Scope with "{domain}:{texture}" to + get textures that are not at /textures//{texture}.png but /mods/{domain}/textures//{texture}.png + instead + LexManos: Testing selective commit of submodule. + LexManos: + Added submodule changelog ganerator: + + Updated FML: + MinecraftForge/FML@e74087ee430633475c3ca058e54e3ef242a9d6aa Ignore again, testing submodule. + LexManos: Removed GNUWin32 files and uneeded files seince FML is now a submodule. + LexManos: Remove window helper batch files. + LexManos: Update python scripts to reflect that FML is now a submodule. Delete updateasmdata as it's in /fml/ now. Build should work once again. + LexManos: Change FML module to read-only connection. + +Build 13w09c-7.7.0.539-snapshot15: + LexManos: Updated Forge to s13w09c + +Build 13w05b-7.7.0.538-snapshot15: + LexManos: Not supposed to have debug stuff... + +Build 13w05b-7.7.0.537-snapshot15: + LexManos: + Sync up with FML, Will not run nativly as you need deobfusication_data.zip in your libs folder. + We have not setup the download for that yet, to make it yourself just zip joined.srg name it deobfusication_data.zip and put it in lib + +Build 13w02b-7.7.0.536-snapshot15: + mehvids: Gave entities and tile entities access to the second render pass for translucency. + Christian: Attempt to fix a possible NPE in the face of ChickenBones' hackery. ChickenBones. stop it! + Christian: + Fix a potential problem with "Entity already added" when using the dormant + chunk cache capability. The entities in the dormant chunk cache will get new + IDs prior to the cached chunk returning. + Christian: Fix NPE causing issue with the cache. Derpy derp. + Christian: + Add in TESR culling, and a new TileEntity method to allow for differential sizing of the + TESR view culling vs the TE collision bounding box (the former defaults to the latter) + Checked into a branch because it's likely to break expanded TileEntities. + Christian: Bump the revision number for the TESR and renderpass changes + Christian: + Add in a mechanism for explicit subclassing of WeightedRandomChestItem to allow for + generational style chest content generation rather than static. Cleans up some old code nicely + Christian: + We try and log a message if we detect a world leak: it's probably not infallible, but it should + help mod developers- if you see this when testing your mod with, say, mystcraft, you're probably + keeping a hold of an invalid handle to the World (either directly, or indirectly via Entity or TileEntity) + and you should look to refactor to wrap those handles in WeakReferences + LexManos: Moved warning logic down, so that no more tickets are isues if the mod is over it's alotment. Fixes #378 + LexManos: Forge Additions: Exposed ChunkCache.worldObj to public PR #383 + LexManos: Fixup a resource leak warning. + LexManos: Add DimensionManager.unregisterProviderType for PR #388 + LexManos: Added input getters for Ore recipies, and javadoc warning for modders, #390 + LexManos: Rework canSilkHarvest hook to try and honor vanilla overrides, should close #391 + LexManos: Added catch to TileEntityChestRenderer for potential crash when modders do bad things -.- Closes #389 + LexManos: Change access of upper and lower chest fields of InventoryLargeChest to public. Closes #387 + LexManos: Change WorldServer.allPlayersSleeping to public, and remove the SideOnly annotation on EntityPlayer.getSleepTimer() Closes #393 + LexManos: Fix initalization issue with the clamping threshold config value. And remove vanilla console spam related to it. + Christian: Fix small derp in TE + Christian: + Update FML:549b6fd + 549b6fd IMC tweaks: runtimeMessages now work (thanks for all that testing for this much requested feature!) and IMCEvent will no longer rem + 9fafdc1 More logging tweaks. You can probably configure individual mod log files if you wish now + f169f7c A log of logging cleanup. FML will now read logging.properties to configure logging channels a couple of times during startup. You + 3ac891f Try and handle "death on startup" a bit cleaner + 2dc0189 Deprecate the old GUI ticktype. They're dead and have been for some time. + dd98784 Tweak a method signature + 1c9a510 Add parameters to FML install to enable/disable certian aspects. Applying patches, running transformer/merger, and decompiling serv + 1bd6847 Fix up packages.csv ordering for easier diffing + Christian: + Add in "armor ticking"- implement the interface and the armor piece will tick. + + Update FML:22dbe41 + 22dbe41 Fix up mistake that broke all modloading. Nice. + Christian: Fix TESR rendering for double chests + Christian: Fix possible null case for collision bounding box. + Christian: Remove the single use interface ITickingArmor, and apply to Item directly. + Christian: + Fix ServerBrand retriever- forge is now forge,fml! + + Update FML: cd96718 + cd96718 Fix HD mob skins, FINALLY!!! Stupid eyes are stupid. + LexManos: Kill generated timestamp in config files, if you want to retreive this information, usethe file's modified time. Closes #404 + LexManos: Actually use the line parameter in ServerChatEvent, closes #401 + LexManos: Kill .sh wrappers until someone writes more robust versions, closes #392 and closes #402 + LexManos: Made LiquidStack.isLiquidEqual(ItemStack) properly check the contained liquid, in addition to obvious id/meta closes #399 and closes #403 + LexManos: Add item frame transformations to the EntityItem render helper Closes #407 + LexManos: Added a hook into SlotArmor so Items can control if they are classified as a Armor type. Closes #408 + LexManos: Fixes comparison for items in creative inventory, closes #411 + LexManos: Fix fortune modifier always passed as 0 to idDropped closes #412 + LexManos: Fix EventTransformer throwing an NPE when transforming a class that doesn't exist. Closes #413 + LexManos: Fix profiler issue with RenderGlobal patch. Closes #414 + LexManos: Jenkins needs this script, *pokes Overmind* -.- + LexManos: + Update FML to 556: + b6d6f235 Fix sprite map issue. + 1158aa46 Fix Language Registry, closes #FML 163 + 50ce6fb3 Option to disable renaming for srgnames. + LexManos: Disable automatic equiti of pcke dup items for players, and fixed index issues in Player.setCurrentItemOrArmor. + LexManos: Fixed entity colision above max world height, and below 0. Closes #400 + LexManos: Change usage of ketSet/get to entrySet in OreDictionary, closes #422 + LexManos: Fix movement speed check, closes #420 + LexManos: clarify what the size is measured in for the dormant chunk cache. -.- + LexManos: ItemStack sensitive versions of Item.getPotionEffect and Item.isPotionIngredient Closes #321 + LexManos: WorldGen*Trees shoud not respect custom soils. Closes #355 + LexManos: Added unload event for client worlds Closes #405 + LexManos: Store the glMultiTexCoord lightmap for later use with glDrawArrays closes #406 + LexManos: Add water and lava to liquid dictionary by default, closes #419 + LexManos: Bump version to 6.6.2, declaring Forge for MC 1.4.7 feature complete, as 1.5 is on the horizon, only bug fixes from this point on. Unless something major happens on Mojang's end. + LexManos: Fix TESR culling for beacons, and implement a good enough measure for Chests. + +Build 13w02b-7.7.0.535-snapshot15: + LexManos: + Merge commit '695b080197bd577cc34fe6dbc72b74f4a74b2d5c' into snapshot15 + Testing cherry picking. + +Build 1.4.7-6.6.2.534: + LexManos: Fix TESR culling for beacons, and implement a good enough measure for Chests. + +Build 1.4.7-6.6.2.533: + LexManos: Bump version to 6.6.2, declaring Forge for MC 1.4.7 feature complete, as 1.5 is on the horizon, only bug fixes from this point on. Unless something major happens on Mojang's end. + +Build 1.4.7-6.6.1.532: + LexManos: Added unload event for client worlds Closes #405 + LexManos: Store the glMultiTexCoord lightmap for later use with glDrawArrays closes #406 + LexManos: Add water and lava to liquid dictionary by default, closes #419 + +Build 1.4.7-6.6.1.531: + LexManos: WorldGen*Trees shoud not respect custom soils. Closes #355 + +Build 1.4.7-6.6.1.530: + LexManos: Fix movement speed check, closes #420 + LexManos: clarify what the size is measured in for the dormant chunk cache. -.- + LexManos: ItemStack sensitive versions of Item.getPotionEffect and Item.isPotionIngredient Closes #321 + +Build 1.4.7-6.6.1.529: + LexManos: Disable automatic equiti of pcke dup items for players, and fixed index issues in Player.setCurrentItemOrArmor. + LexManos: Fixed entity colision above max world height, and below 0. Closes #400 + LexManos: Change usage of ketSet/get to entrySet in OreDictionary, closes #422 + +Build 1.4.7-6.6.1.528: + LexManos: + Update FML to 556: + b6d6f235 Fix sprite map issue. + 1158aa46 Fix Language Registry, closes #FML 163 + 50ce6fb3 Option to disable renaming for srgnames. + +Build 1.4.7-6.6.1.527: + LexManos: Kill generated timestamp in config files, if you want to retreive this information, usethe file's modified time. Closes #404 + LexManos: Actually use the line parameter in ServerChatEvent, closes #401 + LexManos: Kill .sh wrappers until someone writes more robust versions, closes #392 and closes #402 + LexManos: Made LiquidStack.isLiquidEqual(ItemStack) properly check the contained liquid, in addition to obvious id/meta closes #399 and closes #403 + LexManos: Add item frame transformations to the EntityItem render helper Closes #407 + LexManos: Added a hook into SlotArmor so Items can control if they are classified as a Armor type. Closes #408 + LexManos: Fixes comparison for items in creative inventory, closes #411 + LexManos: Fix fortune modifier always passed as 0 to idDropped closes #412 + LexManos: Fix EventTransformer throwing an NPE when transforming a class that doesn't exist. Closes #413 + LexManos: Fix profiler issue with RenderGlobal patch. Closes #414 + LexManos: Jenkins needs this script, *pokes Overmind* -.- + +Build 1.4.7-6.6.1.524: + Christian: + Fix ServerBrand retriever- forge is now forge,fml! + + Update FML: cd96718 + cd96718 Fix HD mob skins, FINALLY!!! Stupid eyes are stupid. + +Build 1.4.7-6.6.1.523: + Christian: Remove the single use interface ITickingArmor, and apply to Item directly. + +Build 1.4.7-6.6.1.522: + Christian: Fix possible null case for collision bounding box. + +Build 1.4.7-6.6.1.521: + mehvids: Gave entities and tile entities access to the second render pass for translucency. + Christian: + Add in TESR culling, and a new TileEntity method to allow for differential sizing of the + TESR view culling vs the TE collision bounding box (the former defaults to the latter) + Checked into a branch because it's likely to break expanded TileEntities. + Christian: Bump the revision number for the TESR and renderpass changes + Christian: Fix small derp in TE + Christian: + Update FML:549b6fd + 549b6fd IMC tweaks: runtimeMessages now work (thanks for all that testing for this much requested feature!) and IMCEvent will no longer rem + 9fafdc1 More logging tweaks. You can probably configure individual mod log files if you wish now + f169f7c A log of logging cleanup. FML will now read logging.properties to configure logging channels a couple of times during startup. You + 3ac891f Try and handle "death on startup" a bit cleaner + 2dc0189 Deprecate the old GUI ticktype. They're dead and have been for some time. + dd98784 Tweak a method signature + 1c9a510 Add parameters to FML install to enable/disable certian aspects. Applying patches, running transformer/merger, and decompiling serv + 1bd6847 Fix up packages.csv ordering for easier diffing + Christian: + Add in "armor ticking"- implement the interface and the armor piece will tick. + + Update FML:22dbe41 + 22dbe41 Fix up mistake that broke all modloading. Nice. + Christian: Fix TESR rendering for double chests + +Build 1.4.7-6.6.1.520-TESRculling: + Christian: Fix small derp in TE + +Build 1.4.7-6.6.1.519-TESRculling: + Christian: + Add in a mechanism for explicit subclassing of WeightedRandomChestItem to allow for + generational style chest content generation rather than static. Cleans up some old code nicely + Christian: + We try and log a message if we detect a world leak: it's probably not infallible, but it should + help mod developers- if you see this when testing your mod with, say, mystcraft, you're probably + keeping a hold of an invalid handle to the World (either directly, or indirectly via Entity or TileEntity) + and you should look to refactor to wrap those handles in WeakReferences + LexManos: Moved warning logic down, so that no more tickets are isues if the mod is over it's alotment. Fixes #378 + LexManos: Forge Additions: Exposed ChunkCache.worldObj to public PR #383 + LexManos: Fixup a resource leak warning. + LexManos: Add DimensionManager.unregisterProviderType for PR #388 + LexManos: Added input getters for Ore recipies, and javadoc warning for modders, #390 + LexManos: Rework canSilkHarvest hook to try and honor vanilla overrides, should close #391 + LexManos: Added catch to TileEntityChestRenderer for potential crash when modders do bad things -.- Closes #389 + LexManos: Change access of upper and lower chest fields of InventoryLargeChest to public. Closes #387 + LexManos: Change WorldServer.allPlayersSleeping to public, and remove the SideOnly annotation on EntityPlayer.getSleepTimer() Closes #393 + LexManos: Fix initalization issue with the clamping threshold config value. And remove vanilla console spam related to it. + +Build 1.4.7-6.6.0.518: + LexManos: Fix initalization issue with the clamping threshold config value. And remove vanilla console spam related to it. + +Build 1.4.7-6.6.0.517: + LexManos: Moved warning logic down, so that no more tickets are isues if the mod is over it's alotment. Fixes #378 + LexManos: Forge Additions: Exposed ChunkCache.worldObj to public PR #383 + LexManos: Fixup a resource leak warning. + LexManos: Add DimensionManager.unregisterProviderType for PR #388 + LexManos: Added input getters for Ore recipies, and javadoc warning for modders, #390 + LexManos: Rework canSilkHarvest hook to try and honor vanilla overrides, should close #391 + LexManos: Added catch to TileEntityChestRenderer for potential crash when modders do bad things -.- Closes #389 + LexManos: Change access of upper and lower chest fields of InventoryLargeChest to public. Closes #387 + LexManos: Change WorldServer.allPlayersSleeping to public, and remove the SideOnly annotation on EntityPlayer.getSleepTimer() Closes #393 + +Build 1.4.7-6.6.0.516: + Christian: + We try and log a message if we detect a world leak: it's probably not infallible, but it should + help mod developers- if you see this when testing your mod with, say, mystcraft, you're probably + keeping a hold of an invalid handle to the World (either directly, or indirectly via Entity or TileEntity) + and you should look to refactor to wrap those handles in WeakReferences + +Build 1.4.7-6.6.0.515: + Christian: + Add in a mechanism for explicit subclassing of WeightedRandomChestItem to allow for + generational style chest content generation rather than static. Cleans up some old code nicely + +Build 1.4.7-6.6.1.514-TESRculling: + Christian: Bump the revision number for the TESR and renderpass changes + +Build 1.4.7-6.6.0.513-TESRculling: + mehvids: Gave entities and tile entities access to the second render pass for translucency. + +Build 1.4.7-6.6.0.511: + Christian: Fix NPE causing issue with the cache. Derpy derp. + +Build 1.4.7-6.6.0.510: + Christian: + Fix a potential problem with "Entity already added" when using the dormant + chunk cache capability. The entities in the dormant chunk cache will get new + IDs prior to the cached chunk returning. + +Build 1.4.7-6.6.0.509: + Christian: Attempt to fix a possible NPE in the face of ChickenBones' hackery. ChickenBones. stop it! + +Build 13w02b-7.7.0.508-snapshot15: + scott: Add ability to WorldTypes to display the 'Customize' button and react to it + LexManos: + Update FML: + New scripts for signing jars, and repackging source folders. + Fix LanguageRegistry loading files in UTF-8 format. loadLocalization should work for non-xml in all languages now (assumes UTF-8) + Fix incorrect end length calculation. Closes #161 Thanks BStramke! + LexManos: Fix check in getItem() to allow lowest item ID #361 + CovertJaguar: + Fixed render passes for EntityItems + + Should be < instead of <= + Christian: + Update licencing information to make clear that forge is allowed to redistribute and automatically + download parts of MCP, but this permission is not transitive to people distributing MinecraftForge + source independently of the MinecraftForge project. + + Update MCP to 7.26a and FML: 7ad8529 + 7ad8529 Update MCP to MCP7.26a and refresh MCP names + 15534ed Update address of the FML repository to the new location in all the files + a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. + Christian: + Update FML: a99c488 + a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates + 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates + aa822e3 Fix logical error in comment text + 26a5b31 FMLLogFormatter: dynamic log level name + Christian: Merge part of PR #375 related to ChunkEvent.Load for the client side + Christian: + Update FML: 5ce4e31 + 5ce4e31 Fix breaking change + Christian: + Add in patch to change how playerinstance sends TE chunk updates. It should always send just the TEs + that changed now, and not "ALL" TEs. Also, added configuration value to change the 64 threshold to a + configurable number + Christian: Some javadoc fixes + Christian: + Change DimensionManager.getCurrentSaveRootDirectory() to try and work even for the new server about to start event + + Update FML:8921cfe + 8921cfe Remember to add the new patches! + cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. A + Christian: + Update FML:aebf6eb + aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti + Christian: + Fix a couple of forge patches + + Update FML: d075daf + d075daf Merge branch 'master' into snapshot15 Fix up compilation and patching errors + 1bd6847 Fix up packages.csv ordering for easier diffing + dd832f2 Update for MCP7.30c - fixes redstone rendering issues + aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti + 8921cfe Remember to add the new patches! + cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. Also, added in a "pre-server + e1c6630 Javadoc cleanup + 5ce4e31 Fix breaking change + a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates + 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates + 7ad8529 Update MCP to MCP7.26a and refresh MCP names + 15534ed Update address of the FML repository to the new location in all the files + aa822e3 Fix logical error in comment text + a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. + 0165742 Fix mcp conf md5 signatures for the snapshot + 26a5b31 FMLLogFormatter: dynamic log level name + +Build 1.4.7-6.6.0.507: + Christian: + Update FML:aebf6eb + aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti + +Build 1.4.7-6.6.0.506: + Christian: + Change DimensionManager.getCurrentSaveRootDirectory() to try and work even for the new server about to start event + + Update FML:8921cfe + 8921cfe Remember to add the new patches! + cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. A + +Build 1.4.7-6.6.0.505: + Christian: Some javadoc fixes + +Build 1.4.7-6.6.0.504: + Christian: + Update FML: 5ce4e31 + 5ce4e31 Fix breaking change + Christian: + Add in patch to change how playerinstance sends TE chunk updates. It should always send just the TEs + that changed now, and not "ALL" TEs. Also, added configuration value to change the 64 threshold to a + configurable number + +Build 1.4.7-6.6.0.503: + scott: Add ability to WorldTypes to display the 'Customize' button and react to it + CovertJaguar: + Fixed render passes for EntityItems + + Should be < instead of <= + Christian: Merge part of PR #375 related to ChunkEvent.Load for the client side + +Build 1.4.7-6.6.0.502: + Christian: + Update FML: a99c488 + a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates + 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates + aa822e3 Fix logical error in comment text + 26a5b31 FMLLogFormatter: dynamic log level name + +Build 1.4.7-6.6.0.501: + Christian: + Update licencing information to make clear that forge is allowed to redistribute and automatically + download parts of MCP, but this permission is not transitive to people distributing MinecraftForge + source independently of the MinecraftForge project. + + Update MCP to 7.26a and FML: 7ad8529 + 7ad8529 Update MCP to MCP7.26a and refresh MCP names + 15534ed Update address of the FML repository to the new location in all the files + a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. + +Build 13w02b-7.7.0.500-snapshot15: + LexManos: Bump major and minor version numbers to mark 1.5, it's gunna break everything. Should be a compileable 1.5 build. + +Build 1.4.7-6.6.0.499: + LexManos: + Update FML: + New scripts for signing jars, and repackging source folders. + Fix LanguageRegistry loading files in UTF-8 format. loadLocalization should work for non-xml in all languages now (assumes UTF-8) + Fix incorrect end length calculation. Closes #161 Thanks BStramke! + LexManos: Fix check in getItem() to allow lowest item ID #361 + +Build 1.4.7-6.6.0.497: + LexManos: Added getter for Metadata smelting list, because, why not.. PR: #352 + LexManos: Fixed incorrect lighting in some cases. Closes issue #349 + LexManos: + Added event hooks to control to allow mod control of mob spawning. PR: #337 + Deprecated LivingSpecialSpawnEvent in favor of new LivingSpawnEvent.SpecialSpawn + +Build 1.4.7-6.6.0.496: + LexManos: Fix issue where dungeon loot table had wrong values. + LexManos: Fixed issue where ChunkPriderEvent.InitNoiseField used the wrong sizeY value. + LexManos: Some small code cleanups. + +Build 1.4.7-6.6.0.495: + Christian: + Update FML:6f1b762 + 6f1b762 Move server stopped *after* the server has actually stopped. *sigh* + +Build 1.4.7-6.6.0.494: + Christian: + Update FML:d9bfb29 + d9bfb29 Add in a "server stopped" event + +Build 1.4.7-6.6.0.493: + Christian: + Attempt to resolve the entity concurrency issue, by simply deferring unload + to the next tick + +Build 1.4.7-6.6.0.492: + Christian: Fix noisy exception logging + Christian: + Update FML:6fc7bc4 + 6fc7bc4 Add in some classloader debugging information: use fml.debugClassLoading=true as a system property to track down prob + +Build 1.4.7-6.6.0.491: + Christian: + Fix a missed patch and cleaned up other patches + Rollback a method name change that breaks a lot of mods + Update FML: fb701cd + fb701cd Revert MCP name change for canConnectRedstone - it conflicts with a forge method of the same name and breaks 1 + +Build 1.4.7-6.6.0.490: + Christian: + Update for MC 1.4.7 + Update FML: f7cc50b + +Build 1.4.6-6.5.0.489: + LexManos: Attempt a fix for the new chunk compression changes. + +Build 1.4.6-6.5.0.488: + Christian: + Update FML:1a232cf + 1a232cf Fix multiple GUI containers for ML containers. Sorry ultimatechest that this fix took so long, a bug report at + 853f54b Log if there's a problem reading the class bytes + +Build 1.4.6-6.5.0.487: + LexManos: Fix mobs spawning on inverted slabs/stairs. + +Build 1.4.6-6.5.0.486: + LexManos: Use nanoTime instead of currentTimeMillis for potential performance increase. + LexManos: Fixed order <.< you saw nothing. + +Build 1.4.6-6.5.0.484: + LexManos: Fixed issue with Efficancy enchatment when connected to vanilla servers. + LexManos: Fixed EntityMinecard missed patch, Issue #338 + LexManos: Fixed typo in dungeon loot + +Build 1.4.6-6.5.0.483: + Uristqwerty: + Force parent ListenerListInsts to rebuild. + + Without this change, it is possible (and, in fact, nearly guaranteed) for lists to rebuild endlessly if a parent list is marked as needing a rebuild but never actually read. This change forces the parent list(s) to rebuild as well, resulting in a significant performance increase and smoother framerate due to greatly reduced GC activity. + Christian: Protect deflation with a simple semaphore. Should close #336 + +Build 1.4.6-6.5.0.482: + LexManos: Update FML: Fix NPE in fingerprint loading, and pass expectged fingerprint to FMLFingerprintViolationEvent + +Build 1.4.6-6.5.0.481: + Christian: + Update FML: 7e6456d + 7e6456d Fix a message delivery issue in IMC + 664ebda Some tweaks for signing and ID matching + +Build 1.4.6-6.5.0.480: + LexManos: + Fixes a vanilla bug where the player view would dip when stepping between certain blocks + https://mojang.atlassian.net/browse/MC-1594 + Issue #318, let me know if you notice any issue. + +Build 1.4.6-6.5.0.479: + LexManos: Fixed parameter ordering u.u + +Build 1.4.6-6.5.0.478: + LexManos: + Re-write/Deprecated DungeonHooks loot tables, now uses ChestGenHooks like the rest of the world gen. Also fixes issue #330 by adding in enchanted books. + + Should be API compatible. + +Build 1.4.6-6.5.0.477: + LexManos: + Move chunk compression to the network thread in Packet 51 and 56 + + This will reduce the server load considerably by doing the chunk data compression in writePacketData, which will be run from the network thread. + + The chunk compression can easily use 1/4th of the overall server thread CPU time if someone is exploring much, especially when moving quickly (e.g. with quantum leggings). + + Player, this is how it's properly done. + +Build 1.4.6-6.5.0.476: + LexManos: Fix missed patch in EntityMinecart, #334 + LexManos: Explicitly check if useItem is not denied, allows for denying the item without denying the block + +Build 1.4.6-6.5.0.475: + LexManos: Delete unneeded patch. + +Build 1.4.6-6.5.0.474: + Christian: Some access transformations to allow mystcraft to work again. Closes #331 + +Build 1.4.6-6.5.0.473: + Christian: Fix Fireworks to always work in SMP + +Build 1.4.6-6.5.0.472: + Christian: + Fix up enchantment at the enchanting table vs via a book. Adds in a method + that previously exists under a new name: canApplyAtEnchantingTable() + to determine enchantments that can apply at the enchanting table (a smaller + subset of all possible enchantments for an item, now). Also, add your + enchantments to the anvil book application list, if neccessary. + +Build 1.4.6-6.5.0.471: + Christian: Tweak packet56 to see if this resolves the apparent worldgen derpiness + +Build 1.4.6-6.5.0.470: + Christian: + Server side only item callback: allow a held item to decide if it wants to pass sneak-clicks through + to a block, or not. Defaults false- the same as the new vanilla behaviour (sneak clicks with an item + in hand don't activateBlock anymore). + +Build 1.4.6-6.5.0.469: + Christian: Move another patch up a bit - should actually close #329 + +Build 1.4.6-6.5.0.468: + Christian: Add IPlantable to itemseedfood. Potato and carrot support! + +Build 1.4.6-6.5.0.467: + LexManos: + Update FML: + Fixed issue with users who don't have the JDK installed in there path + MCP will now output bfusicated files with windows reserved names to _name.class and FML will prioritize those names. + Fixed placement of onConnectionClosed callback + LexManos: Updated NetClientHandler for onConnectionClosed placement fix. + LexManos: Fixed cpw's derp in the PlayerInteractEvent logic. + +Build 1.4.6-6.5.0.466: + Christian: Fix ItemInWorldManager so that itemUseFirst works, and the playerinteractevent works. Minor patching mis hit. Apologies. + +Build 1.4.6-6.5.0.465: + Christian: OK. AT the right thing, and add in a call to always get the right thing. Clean up patch fuzz too. + +Build 1.4.6-6.5.0.464: + Christian: Access Transform a couple of methods + +Build 1.4.6-6.5.0.463: + LexManos: Fixe BiomeDecorator AT entry. + +Build 1.4.6-6.5.0.462: + Christian: Drop the item in onBlockHarvested, not breakBlock + +Build 1.4.6-6.5.0.461: + Christian: Fix up block drops for skulls and cocoa + +Build 1.4.6-6.5.0.460: + Christian: And fix up the other equals + +Build 1.4.6-6.5.0.459: + Christian: Fix comparing ItemStack tags for equality + +Build 1.4.6-6.5.0.458: + Christian: + Update FML: 40e57a2 + 40e57a2 Update MCP to newer version Fix fingerprint fire + +Build 1.4.6-6.5.0.457: + Christian: + Fix accidentally removed not-deprecated methods. + + Update FML: d604e44 + d604e44 InterModComms now supports a runtime polling based model for inter-mod comms at runtime. Deprecate method that shouldn't be used. COPY it's content to your mod. Don't CALL it. + 8b7778c Don't be as alarming about item overwrites. + +Build 1.4.6-6.5.0.456: + Christian: Fix binding the texture for multiple render passes. Thanks mdiyo! Closes #320 + +Build 1.4.6-6.5.0.455: + Christian: Allow RenderItem to be easily overridden for things that need to render entityitems. IronChest, BuildCraft, RP2, whatever... + +Build 1.4.6-6.5.0.454: + LexManos: Fixed items dieing improperly due to new EntityItem sync changes, also made items render offset when rendered in 3d. + +Build 1.4.6-6.5.0.453: + Christian: Fix RenderItem so that forge textures load for it + +Build 1.4.6-6.5.0.452: + LexManos: Removed all functions marked as deperacted for the new MC version + LexManos: + Updated FML: + Fixes startclient/startserver + + Added configuration file which allows modids to ignore ID validation checking. IT WILL CRASH YOUR GAME in 99.999% of cases. + + Immibis is a whingy ass. And TinyTimRob too. Now STFU and GTFO. closes fml/#510 for ever. + +Build 1.4.6-6.5.0.451: + LexManos: Inital update to 1.4.6, Version bumped to 6.5 + LexManos: Added jar signing to forge, we sign cpw/* and net/minecraftforge/* + LexManos: Try and print error while signing jar + +Build 1.4.5-6.4.2.448: + Christian: + Update FML: e98c311 + e98c311 Fix up handling null names. *sigh* + +Build 1.4.5-6.4.2.447: + Christian: + Update FML: 293edb3 + 293edb3 Some tweaks to item identification. The GameRegistry methods are deprecated to encourage you to use the new named ones instead. These will force a name on the item/block, allowing for stronger matching t + 9266ff3 Updated MCP download mirriors upon Searge's request. + 31695d5 Fix var name messup + bfb3020 Update released eclipse project to link BouncyCastle + 22a88ea Change ID management slightly. IDs are tracked by block type for itemblock items now. This means servers will need to update. Also, ordinal rearrangements within a mod will no longer trigger server disco + +Build 1.4.5-6.4.2.446: + LexManos: Make PlaySoundAtEntityEvent fire for players as well + LexManos: Remove erronious double call to PlayerDestroyItemEvent + +Build 1.4.5-6.4.2.445: + LexManos: Update FML to fix a typo + +Build 1.4.5-6.4.2.444: + LexManos: Automatically resolved imports. + LexManos: Fixup workspace for BC replacement + LexManos: Manual import fixes + LexManos: + Update FML: + Minecraft is now decompiled into sane package names. + Got rid of the src/common folder as the only folder that exists is src/mincraft, because the client and server codebase is merged. + ID Map generation/validation fixes + LexManos: Updated python scripts for removal of common folder + LexManos: Update patches for repackage. + LexManos: Update AT for repackage + LexManos: Update FML: Fixed the eclipse workspace to reference BouncyCastle library. + +Build 1.4.5-6.4.2.443: + LexManos: Bump version to 6.4.2 to mark the merge of TerrainGen branch. + +Build 1.4.5-6.4.1.442: + Christian: + Added terrain gen events + Added biome color events for @XCompWiz + Christian: Removed unchanged file + Christian: Readded unchanged version + Christian: For @XCompWiz, added a hook to allow mods to dynamically change the color that water is rendered. + Christian: Fix RenderBlocks patch, touch branch + +Build 1.4.5-6.4.1.441: + LexManos: + Update FML: + 2f34290e: Fix possible escape leakage.. + 83deece6: Change ID management slightly. IDs are tracked by block type for ItemBlock items now. This means servers will need to update. + + Also, ordinal rearrangements within a mod will no longer trigger server disconnection, though a warning will still be logged. + LexManos: Derp, imported the repackaged names not old names. + +Build 1.4.5-6.4.1.439: + LexManos: Update readme to reflect the fact that we now download MCP. + +Build 1.4.5-6.4.1.438: + LexManos: Fix ForgeDirection.ROTATION_MATRIX for issue #313 + LexManos: Made GuiContainer.drawSlotInventory overrideable for issue #312 + LexManos: Made BlockButton.func_82535_o overrideable for issue #311 + LexManos: Moved check if map cursor should 'spin' and which world a player respawns in to WorldProvider for PR #308 + LexManos: Add .DS_Store to the gitignore for mac users + LexManos: Add CloudRenderer for PR #304 + LexManos: New TileEntity function to determine if the TE should be destroied when Block/Meta changes, For Issue #300 + LexManos: Pistons now respect world height a little better, for PR #286, will review Rotation event later. + LexManos: Creative GUI will now remember what tab page you were on, thanks Matchlighter PR #290 + LexManos: Fix type in ForgeChunkManager.ticketCountAvaILableFor, thanks iChun PR: #285 + LexManos: Fixes crash when mods add TreeMaps to the Configuration map, thanks AtomicStryker, PR: #282 + LexManos: Fix shouldRiderSit() to properly determine if rider is sitting. + LexManos: Expose BiomeDecorator fields for custom Biome information, Issue: #239 + LexManos: Make BlockButton.sensible protected and non-final + +Build 1.4.5-6.4.1.437: + LexManos: Fix for FML Fixes eclipse workspace, now sets execution bits on astyle-osx, and mcp .sh files. Also now kills install if astyle is not found. + +Build 1.4.5-6.4.1.436: + LexManos: Fixed release -skipchangelog + LexManos: Fixed install --mcp-dir + LexManos: + Updated FML to 486: + 02b54ca8: Add a modid on the mods list, should make it easier to do things like forge chunkloading config + 70670f2f: Fix build eclipse extractor task + b9fa3fc9: Add in storage, detection and validation of the ItemID array between client and server + 5e5d8206: Fixing id map generation - should validate correctly now + f9fc06a8: Remade python dist as 32-bit. + 93d47a1c: Reenabled replacement of the eclipse folder. + +Build 1.4.5-6.4.1.435: + LexManos: And finally, fix up the release install script to have a parameter to specity the MCP directory. + +Build 1.4.5-6.4.1.434: + LexManos: Fix Forge install script to use python shipped with FML. + +Build 1.4.5-6.4.1.433: + LexManos: Push didn't get all of eclipse.... + +Build 1.4.5-6.4.1.432: + LexManos: + Cleaned up eclipse workspace and moved it to a zip file. + Setup will extract it if it doesn't already exist. + +Build 430: + Christian: Fix release script for new forge job name. Add in skip changelog option for local builds + +Build 1.4.5-6.4.1.426: + LexManos: Remove MCP from released src distro.. whops. + +Build 1.4.5-6.4.1.425: + Christian: + Fix static method, closes #271 + Don't spam the log if a mod requests a ticket beyond their maximum. A single message is fine. + +Build 1.4.5-6.4.1.424: + GuntherDW: Fix typo in chunkmanager config + Christian: fix List configs + Christian: Add Chunk Watch and UnWatch events. + +Build 1.4.5-6.4.1.414: + Christian: + Tweak release.py script: HEAD==master in general + + Update FML: 26a2ef5 + 26a2ef5 Add a modid on the mods list, should make it easier to do things like fo + b4e3490 Fix build eclipse extractor task + 828341f Fix typo + 7a8dae5 Try and make branch non-derpy + d3c0e1f Try defaulting branch differently + 9c77d3f Remove old eclipse workspace and ship/extract as a zip file (use ant set + 6371e9b Assume Forge is the parent directory when checking for AT configs. + 516954e Name both zips the same format + 1151d5c Last part of branch name only please + 25f1dda Try and get a valid branch name on jenkins + 39a146f Clean up build.xml script- support outputting a branched jar file + 037dcae Small derp in install.py + 01d6da3 Try marking python as binary. + 8b26659 FML will now attempt to download MCP as part of the install process Now + 42b3e6a Windows Python distrabution created using py2exe, thanks Fesh0r for the + e709ab8 Marked more spots in gui/items bitmask as being free. + +Build 1.4.5-6.4.1.413: + LexManos: Add wget and unzip from GnuWin32 for use in the setup scripts. + LexManos: Update FML, now includes python, and will download MCP for you + LexManos: Update python files to add support for specifying MCP directory and FML downloading MCP on the fly. + LexManos: Fix issue with DimensionManager.shouldLoadSpawn + +Build 1.4.5-6.4.1.411: + Christian: Fix #289 + +Build 1.4.5-6.4.1.410: + Christian: + Add in some additional ticket loading callbacks for ChickenBones. Closes #284 + Add in a call to determine if there are possible chunktickets for a world. This should let + Mystcraft and other dynamic world generating mods check if they should immediately load + a world based on existing chunk tickets. + +Build 1.4.5-6.4.1.409: + LexManos: Fix issue where non-BlockContainer TEs would not be removed properly. + +Build 1.4.5-6.4.1.408: + LexManos: Fix logic issue in ForgeChunkManager.ticketCountAvaliableFor(username) PR + LexManos: Fix issue where worlds were potentially unloaded improperly on server shutdown. + +Build 1.4.5-6.4.1.407: + LexManos: Small change to fix loading configs. + +Build 1.4.5-6.4.1.406: + LexManos: Added section of the EntityData NBT that will be persisted for players across respawning. + +Build 1.4.5-6.4.1.405: + LexManos: Exposed some ChunkLoader information for PR #278 + LexManos: Fix potential NPE in EntityJoin handler and print warning. + +Build 1.4.5-6.4.1.404: + LexManos: Small tweak to config to use Treemap + +Build 1.4.5-6.4.1.403: + xcompwiz: + Adds a more intelligent chunk constructor + + Adds a chunk constructor with full block id range, that's metadata + sensitive, has intelligent coord ordering, and which allows for + generation at greater heights than 127. + xcompwiz: Fixes some weird formatting + zach: + Fixes ordering for z & x loops (proper array increment order) + + The ordering before would skip about in the ids and metadata arrays. This runs linearly and should improve performance. + Done live on github + +Build 1.4.5-6.4.1.402: + LexManos: Fixed AIOOB issue with new sanity check in getBlock + +Build 1.4.5-6.4.1.401: + LexManos: Fix potential NPE in saving a property that didn't define a type. + +Build 1.4.5-6.4.1.400: + LexManos: + Added new functions to the Config class to allow for specification of comments when getting properties. + Added new getTerrainBlock whihc will limit the resuling ID to < 256, useful for world gen. + Calls to getBlock with IDs less then 256 will be assigned values above 256 {Thus freeing up terrain gen slots} + Made ConfigCategory implement Map should fix compatibility with most mods that broke two builds ago. + +Build 1.4.5-6.4.0.399: + xhamolk.class11: + OreDictionary addition: getOreID(ItemStack) + + Allow getting the oreID from a ItemStack, as an alternative from getOreID(String). + + Now is easier to exchange items for their equivalencies through the OreDictionary. + +Build 1.4.5-6.4.0.398: + LexManos: New nested configuration category support, for PR #258 + +Build 1.4.5-6.4.0.397: + LexManos: Fixed issue with abandoned chunks. + LexManos: Fixed random chest items not generating to there max stack sizes. + +Build 1.4.5-6.4.0.396: + ohai.iChun: + Add check that Entity saves to disk before saving entity to saved chunkloading data. + + Returning false to addEntityID prevents the entity from being saved (cred to LexManos) + Entities which do not save to disk but are chunkloaders causes errors the next time the world loads. This ought to fix it. + +Build 1.4.5-6.4.0.395: + LexManos: Updated FML, proper free-sprite list for /gui/items.png, and fixed MCP version. + +Build 1.4.5-6.4.0.394: + Christian: + Move server specific patch back to common from minecraft. + + Update FML: 1f5c58b + 1f5c58b Fix up MCP version + 61e4db2 Merge joined.exc add update howto + 5efc1eb Revert "Fix MC-2497 - derpy torch flames. Moved from forge. Everyone sho + 3b3600d Modified merger to just consider all server classes as common. And moved + edcc5ca Forgot mcp.cfg + ca79dfe Updated to 1.4.5b + 5945279 Fix python error + 57bf643 Modified decompile so that we do not have to decompile the server, saves + d9d0a46 Cleaned up some tabs + 2fac644 Change usage of ZipFile, fixes issues with Mac's default instation of py + +Build 1.4.5-6.4.0.393: + LexManos: Fix TE Issue + +Build 1.4.5-6.4.0.390: + LexManos: Removed GnuWin32 programs, should no longer be needed as we've moved to python. + LexManos: Updated to MC 1.4.5b + +Build 1.4.5-6.4.0.388: + Christian: Stupid eclipse resetting preferences. Spaces, not tabs!!! + Christian: + Update FML: 570592b + 570592b Attempt to fix a possible comodification risk + +Build 1.4.5-6.4.0.387: + Christian: Add in events when forcing and unforcing chunks. Hope this works for you ChickenBones! + +Build 1.4.5-6.4.0.386: + Christian: + Update FML: fde9414 + fde9414 Change texturebinding to use the textureId directly rather than iconInde + +Build 1.4.5-6.4.0.385: + LexManos: Fixed issue with default implementation of Beach plant type check + LexManos: Fixed custom soil checks for NetherStalk and Reeds + +Build 1.4.5-6.4.0.384: + LexManos: Release script will now include the Minecraft version in the arcive names. + +Build 6.4.0.383: + Christian: + Update FML: f348496 + f348496 Fix mod display list. Shouldn't be derpy anymore. + a5c31b5 Fix World patch- workaround no longer required and leftovers are bad. + 2dc3f0d Cleaned up the AT config updater, should work for any setup of the MCP w + +Build 6.4.0.382: + LexManos: Fixed beds not working properly when respawning. + +Build 6.4.0.381: + Christian: + Remove EntityFX patch - moved to FML. Patch SuspiciousClasses to add "forge" + + Update FML: fa56701 + fa56701 Fix MC-2497 - derpy torch flames. Moved from forge. Everyone should benefit. + 96935bb Fix an NPE in TileEntity trying to generate a crash report. Make suspicious classes just return the obvious. Fix NPE for FML crash report on server. Clean up dead pa + +Build 6.4.0.380: + Christian: Fix the derpy torch flames properly. Closes MC-2497 properly ;) + +Build 6.4.0.379: + Christian: + Update to MC 1.4.5 + Update FML: 43d3042 + 43d3042 Clean up a patch + fec221f Update FML for MC 1.4.5 + b0f0635 Fix for ModLoader static overrides not displaying. + 23a2513 Fix up derpy file name handling: closes #127 Fix up duping childmods: cl + a6eaa2b Fix spelling issue. + c6a0741 FML setup should now download and verify all the minecraft files needed + 5a1930e Small fix to some MCP metadata for pre2 + 418deba Update to MC 1.4.4 + 4ff2cff Fix bug when a modloader mod is run on a dedicated server and has a conn + +Build 6.3.0.378: + Christian: + Some liquid events. Non-API breaking. Add them at your leisure. This helps liquids know + what's happening to them. In case they're volatile or something ;) + +Build 6.3.0.377: + Christian: Another difference + +Build 6.3.0.376: + Christian: + Fix fillLiquidContainer - return null, not the empty container for + previous API compatibility + +Build 6.3.0.375: + LexManos: Update FML to fix ModLoader/addOverride functionality. + +Build 6.3.0.374: + kinglemming: + Fixed oversights in liquid registry, added functionality for instant checks as requested by CJ. + Liquid list return is now secure. + + Signed-off-by: King Lemming + Christian: Change name to LiquidContainerRegistry. Fix up missing API. This better be it now! + +Build 6.3.0.373: + kinglemming: + Liquid Manager Rewrite - slightly more memory usage, loads more efficient at runtime. + Added default Lava and Water registrations to Liquid Manager. + Removed method which relied on flawed assumption that a given liquid only had a single type of container. + + Signed-off-by: King Lemming + Christian: Rename some liquid stuff for more sensible naming. Tweak API slightly. + +Build 6.3.0.372: + Christian: + Add in the basic IBlockLiquid interface. The actual block implementation + will follow. + +Build 6.3.0.371: + Christian: + Add an ItemStack sensitive version of getIconForRenderPass, defers to + existing by default. Should allow NBT data to affect multipass icon rendering. + +Build 6.3.0.370: + Christian: Change getLeft to getRotation, around any axis. + +Build 6.3.0.369: + Christian: Some new stuff on the liquid API for better RP2 interaction. Coming soon: blocks! + +Build 6.3.0.367: + Christian: Tweak liquidcontainer API for sidedness capability + +Build 6.3.0.366: + LexManos: Updated FML, Fixed spelling issues in logs, and file name issues. + LexManos: Added saplings and leaves to the ore dict. PR: #242 + LexManos: Mods can use custom textures for Slot background overlay, instead of only items.png PR #245 and #246 + LexManos: Fix issue where players would spawn in the ground. + LexManos: Allow for modders to decide whether or not players are positioned on ridingEntities similarly to pigs PR #244 + LexManos: Fix breaking despite cancel in creative mode for PlayerInteractEvent OR #247 + +Build 6.3.0.364: + Christian: + As agreed, liquid API from BuildCraft has been migrated to minecraft forge. There will be cleanups to follow, + including sided handling and client rendering tweaks. Stay tuned! + Tweak forgedirection for a couple of naming constants + +Build 6.3.0.363: + Christian: Add toLeft rotational data to ForgeDirection + +Build 6.3.0.362: + LexManos: New field in ForgeDirection to hold just the valid directions. And made getOrientation a bit more efficient. + +Build 6.3.0.361: + LexManos: Fix entity items rendering on the ground. + LexManos: Fix crops not droping seeds properly. + +Build 6.3.0.360: + LexManos: Update to 1.4.4 + LexManos: Bumped version number for 1.4.4 + +Build 6.2.1.358: + LexManos: Ore Dictionary Improvements, replaces vanilla recipes with OreDict recipes for some vanilla items. Thanks Covert. + +Build 6.2.1.357: + LexManos: Made Item constructor public, and made setTextureFile chainable, requires mods to recompile, but as this is for 1.4.3 i'm not concerned. + +Build 6.2.1.356: + Christian: + Temporary update for 1.4.3 + Update FML: bd2123c + bd2123c Clean up some patch fuzz + c2a603c Update joined.exc file from latest conf + db12af4 Update to 1.4.3 + LexManos: + Readdaed teleporter sensitive versions of the teleport function + Added per-world list of custom teleporters, Modders, use World.Load to populate this list. + Changed the definition of our version schemes. + +Build 6.0.1.355: + Christian: + Update FML: 8356fe9 + 8356fe9 FUUUUUU! Stupid ticking. STOP REGISTERING TICK HANDLERS IN YOUR CONSTRUC + 6edce8b Patch a file handle leak in RegionFileCache handling when under memory p + ca2bbe0 Update MCP mapings again, yay bad syncs. + c8941a7 Updated MCP mapings. + 5e20c03 StartServer is now useable in merged code base. + +Build 6.0.1.354: + LexManos: Update FML: Updated MCP mapings, and fixed StartServer + +Build 6.0.1.353: + Christian: + Update FML: b19e882 + b19e882 Remove some debug, closes #123 + 9d7d32a Fix up tick management outside of mod loading phases for ModLoader mods. + d512539 Negatively cache failed class lookups, should help with @SideOnly performance issues. + +Build 6.0.1.351: + Christian: + This update fixes some world corrupting vanilla error handling, mostly caused by + mods doing something derpy. Hopefully, your world saves will thank me. + Note that if the mod does derp, it's data is lost. It's not FML or Minecraft Forge's + responsibility if "DirtChest 2000 Mk5" can't write their TileEntity method correctly + and you lose your 100000 diamonds. + + Update FML: a3a93f3 + a3a93f3 Fix some whitespace issues, handle possibly bugged entities as well + a7eb5dc Vanilla/mod bug fixes: CME on entity processing, TileEntity resetting chunk on save/load. + +Build 6.0.1.350: + LexManos: Fix cast issue when mods attempt to make fake worlds. + LexManos: Fix a vanilla bug related to certian seeds and stronholds. + LexManos: Cleanup some debug in the script, and fix version number for the current build. + +Build 6.0.1.349: + LexManos: Change logs should now be bundled with downloads, as well as avalible on files.minecraftforge.net + +Build 6.0.1.348: + Christian: + Update FML:b23081d + b23081d Support for ModLoader 1.4.2. Good job Risu! + 66db4ec Add in an exclusion list tag for @Mod. The backend code isn't yet implemented, but shows the basic idea. + +Build 6.0.1.345: + LexManos: EntityLiving.experianceValue private->public for Issue #225 + LexManos: Changeable name tag render distance for PR: 174 + LexManos: Remove some debug code + LexManos: New hook to allow items to be on multiple creative tabs PR 176 + LexManos: Fix issue where scroll bar would not render when switching tab pages. + LexManos: Added metadata sensitve experience to furnace recipies and added Item callback to determine experience gain. + LexManos: Exposed functions for adding superflat presets. + LexManos: New hook to allow for custom beacon support blocks. + CovertJaguar: + Added vanilla wood + dye to the Ore Dict + + Should help simplify interaction between mods that add similar items. + LexManos: Added Stonghold, Village, and Spawn biome management helpers for PR 207 + LexManos: Fix compile issue. + +Build 6.0.1.343: + csendek: Add event to cancel or change chat messages sent from server + csendek: Add event to cancel or change chat messages sent from server + +Build 6.0.1.342: + LexManos: Pickblock will new compare NBT data, should allow mods to refine there result better. + LexManos: Added system to place all configs that use Forge's Configuration function into a single file on disc. Optional config to enable this. Blame MattaBase for this idea.. + +Build 6.0.1.341: + LexManos: Fix ItemSeed placement to take into account the IPlantable interface. + +Build 6.0.1.339: + LexManos: Added a per-world MapStorage feature that provides a method to store data files associated with a specific world, as well as fixes the issue with villagers loosing there village. {Where villagers wouldn't go inside at night} + +Build 6.0.1.338: + pahimar: Update patches/common/net/minecraft/src/SlotCrafting.java.patch + Christian: + Fix the accessor and type on World.getPersistentChunksFor() + Update FML: 8bd98c3 + 8bd98c3 Fix a small problem with the new MCP container- it can cause NPEs. Nice. + 34cc42d Fix up some javadoc complaints + +Build 6.0.1.337: + Christian: + MCP information is now included in Minecraft Forge. They deserve the credit :) + + Update FML: 09eade4 + 09eade4 Update build - include MCP information in the source pack + 9bfe7df MCP deserves lots of credit. So here it is. + +Build 6.0.1.332: + Christian: + Update FML: 8006b77 + 8006b77 Fix instantiation bug + 7cc91cf Simple InterMod comms. Send a message using FMLInterModComms.sendMessage(). Receive messages through an @IMCCallback + 24d7285 Update for MC 1.4.2 + cedf3d5 Duplicate Mod display screen. + +Build 6.0.1.331: + LexManos: Downgrade to FML 415, issue with new IMC system. + +Build 6.0.1.330: + LexManos: Update to 1.4.2, obf stayed the same, so only small revision. + +Build 6.0.0.329: + LexManos: Update World patch to fix map provider issue. + +Build 6.0.0.328: + Christian: + Add an access transform for Block.setBlockBounds - should help a lot of code that uses this. + + Update FML: d915f39 + d915f39 Fix typo in access transformer + 346691c Fix the merge for forge + 6dadc1d Fix up references to minecraftDir in obf code + 8a55f68 Update FML for Minecraft 1.4.1 + 5645fa5 First update to 1.4.1, patches need updating. + ff0f00f Add some null checks, and throw descriptive exception when SideTransformer prevents a class from loading. + +Build 6.0.0.327: + LexManos: Update to MC 1.4.1 and Forge 6.0.0 + +Build 5.0.0.326: + LexManos: Fix color issues with Dyed Leather armor. + +Build 5.0.0.325: + LexManos: Remove deprecated code. + LexManos: Cleanup mirrored things in ShapedOreRecipe to address issue 208 and issue 210 + LexManos: Fix up the setHandeled/setHandled for events, it is now a generalized setResult, the meaning of which is defined by each event. + +Build 5.0.0.324: + LexManos: Fix NPE issue when mods add null EntityFX's to be rendererd. + +Build 5.0.0.323: + Christian: + Update FML: 7a34246 + 7a34246 Ship a client only class so the merge works both sides. + +Build 5.0.0.322: + Christian: Fix install.py so it can be installed properly from src distribution + +Build 5.0.0.321: + Christian: + Update FML (entire change log since last by me): 62a6b52 + 62a6b52 Fix RenderRegistry render ID - now at 36 Fix SpriteMaps - they're running out fast! Switch to forge if you can! RenderBiped now has an armo + b845cde Fix up FML python script for forge + 2c36dfb Update to MCP pre 3. Fixes some weirdnesses with explosions. + acd880d Merge branch '1.4' + e6f57e5 Update for MCP release + b1de0fc Remove fuzz from patches for INetworkManager change + ad44619 Fix for new names INetworkManager and ITexturePack. I also provide refactoring scripts for both, for your use... + 3a94211 Add a script to ignore git complaining about the eclipse workspace changing - run when you first open the eclipse workspace + 9386e23 Update gitignore - ignore the files that will change or be deleted + 10b318c Add in "starter" image for eclipse workspace + 995d5b7 Eclipse workspace fixup 2? + bbb12c8 Clean up eclipse workspace- part 1 + b50058e Clean up a bit of patch fuzz + 4a0bfa9 Fix CommonHandler for rename of the server thread class + 4d1ec66 Update with RC2 MCP. Use the joined.exc file directly since MCP now provides it. + b52e3d0 Fix exception for CodecMus + a1011c9 Fix some compilation issues. Requires resolving the worldclient abstract method + 0ebd4f3 Inital patch update to 1.4 + 89c68c4 Moved into EntityVillager + e4702cb Fix line ending detection during checkout. + 6e64fd7 We don't need logging here... + 014b3f4 remove useless -Server projects + 7628c67 Updated the AT config and Marker config for 1.4 obf + 54a322c Updae build to copy files that may decompile differently but are actually the same, and updated for 1.4 values. + aadf396 Update MCP Merge config. + 81e1855 Pull in MCP's 1.4 conf files. + 5686fd4 Fix error in merging of exec's + +Build 5.0.0.320: + LexManos: FML Update for 1.4 + LexManos: Fix recompile call for 1.4 MCP change + LexManos: Update Forge's AT for 1.4 names. + LexManos: Update for new names in 1.4 + LexManos: Remove final from 'villageCollectionObj' to allow for delayed setup of Map source objects. + LexManos: Moved to common where it should be + LexManos: No longer needed, getRenderDistance removed because Vanilla has it now, TileEntity.func_82115_m + LexManos: Forge spawn protection removed, now a vanilla feature. + LexManos: Patches that applied with little to no functional changes. + LexManos: Updated Render patches, Bipeds now have the ability to have helmets, of either blocks, or the new 'heads' + LexManos: BlockSnow now pretty much just passes harvestBlock to it's super. + LexManos: Entities have a new function to determine explosion strength that they create, and implemented Item frame pickblock. + LexManos: Patches removing forge spawn protection, now a vanilla feature. + LexManos: BlockCrops is now the parent class of multiple types of crops, Wheat, Potatoes, and Carrots, updated getBlockDropped patch to reflect. + LexManos: Removed Forge's TileEntity.getRenderDistance, now a vanilla feature: TileEntity.func_82115_m + LexManos: Teleporting has a new function (func_82448_a), made it so that you can supply your own teleporter to that function, and so it works with dimension movement factors. + LexManos: Updated World patch, there are a lot of new things happening int he constructor, xcomp should probably vet this. + LexManos: Updated Forge version to 5.0.0, for 1.4 + LexManos: Update release script for mcp changes, releases now build. + +Build 4.3.5.318: + LexManos: Remove some test code. + LexManos: Bump version to 4.3, final for 1.3.2 + +Build 4.2.5.317: + LexManos: Added ability for mods to cleanly define and display new creative tabs. + +Build 4.2.5.316: + Christian: Fix classloading issue preventing JRockit from running forge + +Build 4.2.5.315: + Christian: + Forge build change: the universal jar, if installed alongside a server jar file, can be executed to load forge. No server side merging required! + Update FML: 989ab3e + 989ab3e Update build.xml - add a classpath to the manifest. This means the universal jar is now a server side launche + 88f1dc9 Typos! + +Build 4.2.5.314: + Christian: + Update FML: 470a185 + 470a185 Try and avoid an NPE in crash reports + 0029518 Fix logging problems- log death messages and re-route the server through FML logs properly. + fe7a832 Fix the test mod + a2bc30b Coremods can be specified via the command line: fml.coreMod.load= This will help with developing coremods + bae1f74 Fix classpath for server + 887aa27 Add in the ability for a client to throw a custom exception that displays a custom gui instead of the default error message. + e17f267 Update FML internal classpath. Helpful for coremod devs + 3b9972a Don't use File to separate the last element of the path. It's a URL, they're always separated by '/' + 5c96afe Changed RelauchLibraryManager so that files with different paths on the same baseURL can be implemented in one ILibrarySet. + 1bca393 FML as a whole is now subject to transformers. + 27cf731 Bonus extra character. thanks randomitter! + 94c84cd Merge pull request #116 from Vazkii/patch-1 + c2d3195 Add Null check to FMLClientHandler.sendPacket + +Build 4.2.5.313: + LexManos: Make Item.createEntity only call when its specifically a EntityItem, not a subclass of it. + +Build 4.2.5.312: + LexManos: New Block hook to determine if it can be destroied by the ender dragon, for PR 199 + LexManos: Ship forgeversion.properties with release zips. Same format as fmlversion.properties. + LexManos: Dll files are binary as well. + +Build 4.2.5.311: + LexManos: Fill out the .gitattributes to help with line endings how they should be. + LexManos: Change the Crafting damage check to be the same as the usage damage check. (>= -> >) + LexManos: Allow hook into GuiSlot for background rendering for PR #203 + +Build 4.2.5.310: + Christian: Reorganize the forced chunks a bit- offload the cost of immutable map building to the mods, rather than the chunk tick + +Build 4.2.5.307: + Christian: Remove @SideOnly from removePotionEffect. Hi RichardG! + +Build 4.2.5.306: + LexManos: Add some accessors to teh ChunkLoader tickets. + +Build 4.2.5.305: + ohai.iChun: Fix not passing right render pass to Item class. + +Build 4.2.5.303: + Christian: Fix bounds checking on chunkcache. Should fix a bunch of rp2 and maybe other extended tile entity code + +Build 4.2.5.302: + Christian: + Use weak references to the worlds in our maps. WorldClient would otherwise + leak all over the show. + +Build 4.2.5.299: + mehvids: Add some of the model subsystem to the server. The part that doesn't require openGL. This allows for systems that dual models as collision/selection boxes etc. + xcompwiz: + Improves DimensionManager + + Adds handling for unloading and hotloading of worlds, fixes some typos, + allows for dimensions to be unregistered (allowing save specific + dimension registrations), general changes to match these features. + xcompwiz: + Adds world unloading and hotloading calls + + Adds world unloaded message to MinecraftServer on save. + Adds world unloading calls to chunk provider/manager when all chunks are + unloaded. + Adds call in MinecraftServer getWorld to hotload world if it isn't + loaded. + xcompwiz: + MapStorage Fix + + Fixes setting and timing of map storage object to allow for the + WorldProvider to use it during initialization + Forces single instance of map storage object (per side) + Moves setting of spawn to after provider setup + xcompwiz: + Lighting Time fix + + score_under's lighting fix that limits and fairly distributes the amount + of time spent on recalculating lighting + xcompwiz: + Server player concurrency fix + + Fixes an issue where the server can move a player while the player is + moving, process the player's last move (putting the player back where + they were before the teleport), and then complain about the player + moving too fast when the client catches up to it's new position. Also + fixes this issue while riding an entity. Only affects player + client/server movement sync. + Christian: + Remove dead WorldInfo patch. Tweak dimension code a bit for better naming, and use the new FML world loading facilities + Update FML: d0e7c9e + d0e7c9e Update patches *sigh* + f3e1cac Add in a savehandler strategy for reading and writing data to the world save. This service is only available to coremods via the WorldAccessConta + 51fb513 Add in some bukkit supporting code. Most of this is unimplemented until the bukkit coremod is complete. + 65c9fdd New stuff on the ModLoader! Risu has been busy. Closes #114 + c1d4458 Mods can now declare a range of minecraft versions they will run against + Christian: Update forge to 4.2 + +Build 4.1.4.298: + LexManos: Fix issue where light would not properly recalculate. + LexManos: Fix issue where mushrooms would not check the proper soil block. + +Build 4.1.4.297: + LexManos: Expanded DungeonHooks to allow for adding of custom DungeonLoot values directly, allowing for better control over the generated items. + +Build 4.1.4.296: + LexManos: Made PlayerEvent.BreakSpeed fire when a player cannot harvest the block. Issues #191 and #188 + +Build 4.1.4.295: + Christian: Dormant chunk cache might actually work now, and not mix chunks across worlds + Christian: + Update FML: ca1ca4f + ca1ca4f Fix maps supporting greater than byte() dimension sizing + 15ee8bf Fix language registry additions, closes #113 + a08b5b1 Merge pull request #112 from pahimar/master + 8dac58f Added ability to query the Language Registry by key and language for specific localized text, as well as loading in localization text f + +Build 4.1.4.294: + LexManos: Fix buckets, need to rethink for bukkit compatibility. + LexManos: Fix vanilla bug where the player would load chunks outside its range that would be 'abandoned' and never unloaded. + LexManos: Forgot comment, you see nothing... + +Build 4.1.4.292: + Christian: + A few requested features of ForgeChunkManager. Mods can specify a + chunkloading config directly in the config file, including chunk + loading overrides if they wish (and the config allows them). + Also added "player" tied tickets that bind to the player and not the + mod's quota. + +Build 4.1.4.291: + LexManos: Missing updates from last commit + LexManos: Location aware version og Block.lightOpacity for PR #169 + +Build 4.1.4.290: + LexManos: Fix bug in last commit that caused block to not break. + LexManos: Added preliminarty Player Interact event heavily based on the bukkit event. + +Build 4.1.4.289: + LexManos: Add PlayerEvent.HarvestCheck and PlayerEvent.BreakSpeed for dealing with things related to a player harvesting a block. + +Build 4.1.4.288: + LexManos: Fix bug where breaking texture would not apply to top/bottom of beds. + +Build 4.1.4.287: + Christian: Add in an "EntityEvent.EnteringChunk" event. Useful for your entity chunkloading stuff. + +Build 4.1.4.286: + LexManos: Support for no BOM. + +Build 4.1.4.285: + Christian: + Update FML: f083707 + f083707 Extreme headless mode is back! + +Build 4.1.4.284: + Christian: + Update FML: dd39ae5 + dd7502a Fix parent child counts showing properly. Closes #107 thanks scott! + b36d447 It's useMetadata, not usesMetadata. thanks myrathi and psx. closes #110 + efb1066 Fix random shuffling when manipulating biomes by using a LinkedHashSet to preserve iteration order. Closes #111 + Christian: + Some more tweaks to the chunkloading code. The world.load event fires slightly later- once the entity watcher is + set up, so entities can actually load into the server world. Also, tickets actually save and load properly + and null entities don't break the server + +Build 4.1.4.282: + LexManos: > != >= + +Build 4.1.4.281: + LexManos: Fix Configuration.getItem to return pre-shifted values suitible to pass into Item constructors. + +Build 4.1.4.280: + LexManos: Fire off PlayerDestroyItemEvent for crafting contianer items that get damaged to much. PR #183 + +Build 4.1.4.279: + LexManos: Configuration will now attempt to detect the encoding of the file using the Byte Order Mark. + LexManos: + Changed Configuration to use overloaded methods, and changed the order of arguments to be Category, Key, Value instead of Key, Category, Value to hopefully help cleanup some peopels code. + Added function to get a free Item id. Will only accept values that are not in the block space. Needs testing. + Marked all the old getOrCreate* functions as deprecated. + +Build 4.1.4.278: + Christian: Fix some errors if the config is unparseable. It should log an exception and carry on with defaults. + Christian: Support quoting in property and category names for almost all possible characters allowed + Christian: Fix up some config file handling to be even more resilient. + +Build 4.1.4.277: + Christian: + More modifications to the ticket callback handling system. There are up to two callbacks during world loading now. One to allow + selective preference for ticket types. The other to actually allow the mod to force chunks. + +Build 4.1.4.276: + Christian: + Update FML: dd39ae5 + dd39ae5 Try and fix the newline capture so consoles show on the server on windows again + b39f808 Readd ancient searge name so dan200 and computercraft can run again. REMOVE THAT CODE DAN. + Christian: + Some changes to the ForgeChunkManager. + Null modData is allowed now. + The entity id is actually properly persisted in the ticket now. + There is a new "orderedLoadingCallback" that allows you to provide a preferred ticket loading order in case of "excess tickets". Also, tickets + that are not in the returned list are now unregistered. + There is a way to resort the chunks in the forced chunklist on a ticket now. + Log the dormant cache configuration + +Build 4.1.4.275: + Christian: Simple chunkloading implementation + Christian: Working cross dimensional implementation of chunkloading for Forge. + Christian: + A lot of tweaks to the chunkloading for entity behaviour. Entities are now bound by a new + persistent id they *all* have, on the server side. + Christian: Remove @SideOnly flag for function now required on the server + Christian: Fix NPE in ForgeChunkManager + Christian: And a concurrentmodificationexception in the same code + Christian: + Simple chunk caching capability for the chunkloader. This will store "dormant" chunks in a + configurable cache, potentially saving the cost of reloading them from disk. + Christian: Delete some debug code + Christian: Some more fixes for chunkloading code. Works very reliably now. + Christian: + Update FML: a2c059e + a2c059e Fix missing import. Thanks ichun :( + 19316a0 Version file searching should work for directories too + fbc7a5c Fix bug causing NPE if non-whitelisted player joins an FML server without FML installed + e9cfd10 Merge pull request #103 from iChun/patch-2 + 1424883 Fixed ModTextureAnimation not updating and not binding to correct image. + +Build 4.1.4.274: + mitchpetrie29: + Update patches/common/net/minecraft/src/WorldProvider.java.patch + + Fixed WorldProvider.setDimension() setting the wrong variable. + LexManos: Fix patch errors in merge of last PR -.- + +Build 4.1.4.272: + LexManos: Fix accedental doubling of shift, Fixes saplings/flowers planting a space above where they should + +Build 4.1.4.271: + LexManos: New Plant API that allows for custom plants/soils. + +Build 4.1.3.270: + LexManos: Added new hooks for modifying the items generated in chests during world gen. + +Build 4.1.2.269: + LexManos: Redirect a lot of functions through WorldProvider for Mystcraft, allowing them to be overriden by the provider. + +Build 4.1.2.268: + CovertJaguar: Fixed Entity Item render helper + +Build 4.1.2.267: + ohai.iChun: Fix pick block key giving invalid spawn eggs + ohai.iChun: Logic derped + ohai.iChun: Logic derp (again) + +Build 4.1.2.266: + LexManos: Added side sensitivity to standard EntityDiggingFX, added Block functions to override spawning of digging and breaking effects. + +Build 4.1.2.265: + LexManos: Fix potential NPE in Custom item entity span code caused by item id misconfigurations. + +Build 4.1.2.264: + LexManos: Fix recursion issue with new special item entity code. + +Build 4.1.2.263: + Christian: + Update FML: 6c746ec + 6c746ec Tidy code + aacbfeb Change version.properties search slightly, allow access to found file from the preinit event + 1513b36 Add in the capability to read an internal version as .version from a file in the zip call versi + 35852a6 Fix up reversed assignment for version fallback + +Build 4.1.2.261: + pahimar: Changes to how PotionEffects are removed, now each PotionEffect can specify which ItemStacks can remove it's effect + pahimar: Inverted logic derp + +Build 4.1.2.260: + LexManos: Package all of paulscode/ with the universal jar to help mac users who cant understand how to merge folders -.- + +Build 4.1.2.259: + LexManos: Bump version to 4.1.2 to mark the end of todays changes. + +Build 4.1.1.258: + LexManos: Fix potential issue with custom events where the constructor is not visible from the EventBus class, Should never arise but meh. + LexManos: Read/Write config files as UTF-8 instead of ANSII, should fix issue with Turkish people. + LexManos: Allow for respawning in different dimensions. + LexManos: Move spawn fuzz to WorldProvider/WorldType, useful for VoidWorld types. + +Build 4.1.1.257: + LexManos: Make EntityJoinWorldEvent Cancelable properly + LexManos: Move Forge init message to MinecraftForge.initalize + LexManos: Add ability for Items to create custom Entities for themselves when added to the world, PR: #151 + +Build 4.1.1.256: + admin: Allow flight,player sensitive + +Build 4.1.1.255: + LexManos: Fix a few patch fuzzes + LexManos: Implemented isBlockFoliage for pull #141 + +Build 4.1.1.254: + LexManos: Clean up some javadoc warnings. + LexManos: + New EntityItem related events + Fixed player death event in SMP + Added Player specific drops event + Added generic EntityJoinWorldEvent + +Build 4.1.1.253: + LexManos: Fix FillBucketEvent to work with stacked buckets. New change in 1.3 + LexManos: EntityLiving variation of drawBlockDamageTexture to allow for Non-player viewports. + +Build 4.1.1.252: + Christian: Remove all references to ModLoader + Christian: + Update FML: 89b8236 + 89b8236 Fix onConnectionClosed not being called on the client side of a connection + +Build 4.1.1.251: + LexManos: Bump version to 4.1.1 + +Build 4.0.0.250: + Christian: + Update FML: 290a3c9 + 290a3c9 Merge pull request #94 from iChun/patch-1 + 9485dc5 Fix handleTinyPacket using short instead of int. + Christian: + Update FML: 70f55c5 + 70f55c5 Add in exclusion list for IFMLLoadingPlugin. + 1c1716d Remove debug cruft + d567f79 To properly align with packet9respawn, make packet1login's dimension an int as well + ecd4e46 Attempt to build some protocol negotiation, and fix packet1login so that the dimension is a short, matching packet9respawn + 16fe495 Compatibility level is now passed from server to client - and the client tracks it. This means certain packet changes can be made without b + 4f70d23 Fix dependency checking: you can depend on specific versions of FML + +Build 4.0.0.249: + Christian: + Update FML: e6abb69 + e6abb69 Fix up tiny packet handler to actually work + e862052 Allow javax to be shipped by mods. Should allow some more modloader mods to work unaltered + 4071ad1 Add in a little bit of protocol cleanup. Start work on allowing multiple protocol versions + 6061964 Give a way to build the packet131mapdata packet correctly populated + b818769 Capture and leverage Packet131MapData + +Build 4.0.0.248: + LexManos: Fix placing torches and the like on inverted woden slabs. + +Build 4.0.0.247: + Christian: + Update FML: 12bc4ba + 12bc4ba Make console logging pass through a single logging thread to avoid concurrency problems with launchers and stuff + 8fccfa2 Overlooked chat message support *sigh*. Fixes wierd mods that communicate through custom chat messages rather than + a697d04 Rescan mod packages where there was a possible mod identified to try and make sure we load it. Fixes Matmos r16 + +Build 4.0.0.246: + Christian: + Update FML: 9d812f1 + 9d812f1 And handle the other way to globally register an entity + 869cf78 Fix up mods trying to register entities outside of modloading. Now you'll get a big fat warning for doing such a de + 186680c Fix CJB mod compatibilty for real. Gui container registration can now happen in the constructor. YUK! + 5aed6d9 Fix compatibility with ModLoader dispenser hook. Fixes a bug with IDispenseHandler too - though it means that inter + 3d7a665 Fix headless operation, hopefully + +Build 4.0.0.245: + Christian: + Update FML: 10a7169 + + 10a7169 Fix up trying to re-add stuff to the classpath when it's already there + 0eb7180 Fix out of range entity id handling for ModLoader mods a bit more. Thanks Herobrine mod! + b1b4c61 Expose GuiMerchantButton + 359cfb5 Log a big fat warning for the developer in the case the network version is not acceptable to the mod itself. (This can happen because of a bad range specifier for example) + +Build 4.0.0.243: + Christian: + Update FML: 8656fd5 + 8656fd5 Also, make missing entity not blow things up + 25a4dcb Fix entity tracker "update" packet not computing correctly. Should work now.. + +Build 4.0.0.242: + Christian: + Update FML: c90a853 + c90a853 Fix up addRenderer to catch exceptions from the basemod, also, addrenderer now supplies a list of the default renderers from MC for editing and will note the + 18069d8 Change download location for FML libraries to files.minecraftforge.net, add an encoding param to the javac command line to force utf 8 + a40f4a7 Add in random jar/zip files to the classpath. UGH this is so fucking ugly it's not funny. + 5b6460b Use a null socket and try to prefer the result of getLocalHost in the broadcast data. + +Build 4.0.0.240: + Christian: + Update FML: c0d1348 + c0d1348 Add in an ItemRenderer null check so FML can run render adding mods + 482c163 Inverted boolean logic. Grrr. + 221d113 ModLoader mob spawns use packet 24- build a bypass system so that they can still use it + f19f426 Remove debug statements + +Build 4.0.0.239: + Christian: + Update FML: 9dd9b6e + 9dd9b6e Fix keybindings not loading properly from gamesettings file after restart + +Build 4.0.0.238: + LexManos: Fix silk touch on Ender Chests. + +Build 4.0.0.237: + t.tomkins: + Update patches/common/net/minecraft/src/NetServerHandler.java.patch + + Update patches/common/net/minecraft/src/NetServerHandler.java.patch + + Server mods can now use noClip to push players through solid blocks without is being an invalid move and resetting the players position. + + Useful for creating semi-solid blocks like quicksand. + +Build 4.0.0.236: + LexManos: Fix Issue #140: Custom items not properly having texture applied for partical effects. + +Build 4.0.0.235: + Christian: + Update FML: acb0b21 + acb0b21 Fix so we always send received packets to handlers. Renders 250 filtering useless unless i can figure a way to intercept + +Build 4.0.0.234: + Christian: + Update FML: b17dd3c + b17dd3c Some tests + fa66ffa Fix trying to load the client side packet handler, when on the server, hopefully? + b106420 Fix up network negotiation - now it will disconnect with a nice error screen if there are missing mods on the client vs se + +Build 4.0.0.233: + Christian: + Update FML: c971adb + c971adb Fix missing addCommand call: thanks "spawnwolf test command" + d6326de Fix a couple of modloader mods. Thanks! + 483667c Some functionality fixes for @Instance injection. + 8bef512 Versions now have two flavours: the @Mod(version) which is the "programmatic version" and is used for all version relationship calculatio + 501009c Always for ML mods into "public" class accessibility - we don't call from the default package like ML does. + d3d4308 Add in a convenience method for getting a class instance based on existence of another Mod. Useful for soft dependencies. + +Build 4.0.0.232: + Christian: + Update FML: 2d9b88b + 2d9b88b And more mod sorting fixes. + 93d5934 Actually *use* the sorted mod list + +Build 4.0.0.231: + LexManos: Fix FillBucketEvent to actually fire. + +Build 4.0.0.230: + LexManos: Fix call to createTileEntity on blocks that extend BlockContainer. + +Build 4.0.0.229: + Christian: + Update FML: 180a279 + 180a279 Merge pull request #82 from Chicken-Bones/master + cf38461 The access transformer will now handle classes in packages. + 2c85539 Reverse the meaning of state in fml.modStates system property and fmlModState.properties - it was very derpy before. Now: true is enabled, false is disabled, as you would expect + d651189 Actually fix the corrupt JSON problem + f6a8cd5 Fix isModLoaded for "disabled" mods, and the toposort as well + 3bde961 A bit more information for dependency handling + 6396bea Fix up handing corrupt mcmod.info + 6bc6def Fix a problem with network ids + 7328610 Fix up version handling properly. Hopefully, and the error screen. + 9fcc452 Only active mods should have dependencies checked, and be sorted + 26302a6 Fix oddity with Screen, print a version out in the sorted list! + +Build 4.0.0.228: + Christian: + Update FML: 62dbfb3 + 62dbfb3 Fix metadata + +Build 4.0.0.227: + Christian: + Update FML: b91cbe9 + b91cbe9 Fix up versioned dependencies so they work a lot better, also add in a missing mods screen + +Build 4.0.0.226: + Christian: + Update FML: 93b8ba9 + 93b8ba9 Fix missing serverSendPacket + 23fdbbd Trading support for ModLoader - thanks Herblore! + d7a74d8 Close the jar, for cleanliness sake + 58e6dd9 Fix authors - it'll read both "authors" and "authorList" from the json now + 907cf2d More ML compatibility - fix up dragon mounts, thanks! + ee48a36 Fix up loading mods that are grandchildren of BaseMod + c6f362b Fix entity handling for ModLoader mods, thanks parachute mod! + +Build 4.0.0.225: + LexManos: Fix lighting issue for air related to 4096 fix. + +Build 4.0.0.224: + LexManos: Made helper hooks for EntityLiving and EntityRenderer hooks for Optifine + LexManos: Removed deprecated ISpawnHandler, that never worked in 1.3.2 so noone should be using it. See FML's replacement. + +Build 4.0.0.223: + Christian: + Update FML: 6e01c59 + 6e01c59 Merge ChickenBones pull into FML - adds player trackers + a0cbd37 More precise error handling when an invalid class is present + 12323e2 Fix textures not applying properly + 789a4a3 Fix up entity spawning - hopefully they won't warp anymore. + a87d045 Add in a helper on the server start event for adding commands to the server. + 82e9309 Move villager trading hook up a bit. thanks sengir. + 8deaa37 Fix LAN to try hard to find a real network interface, not just localhost most of the time + b5363e3 Update build to not bother building client jar. Universal is everything now. + +Build 4.0.0.222: + LexManos: Pickblock now replaces the currently selected item if it could not find a empty space. + +Build 4.0.0.221: + dvrabel: + Use original minecart drag co-efficients for regular carts. + + Since the amount of speed lost is 1 - co-eff, rounding 0.997 to 0.99 + makes a big difference to the distance a minecart will travel (less + than half of the distance in vanilla 1.25). + +Build 4.0.0.220: + LexManos: + Update FML to 304: + Client side only classes are properly annotated, and denied loading on server side + Added missing client side only ModLoader.getContainerGUI function + Guis work for FML mods now. + Fixed MLProp handeling of null info + Fix up dispenser handling, add in new params for the dispenser: breaks IDispenseHandler, sorry + Christian: + Update FML: 28a10ac + 28a10ac Null protection for ticks() -- probably should uses EnumSet.noneOf() but you can also use null now to stop ticking. closes #77 + c349d51 Automatic mod entity registration into the global entity list. This might break entity code out there, sorry, but this way for most entities you no longer need to manage the global mod entity stuff at all. just remove it. FML will take care of the rest (note, worlds won't load the old entities) + ef01745 Add in a utility function that *might* tell you the context you're running in on either client or server: FMLCommonHandler.getEffectiveSide + c97d6a6 Try and stop sendPacketToAllAround from being crashy + 2062273 Mods can add mod specific crash information to the crash report now Forge needs to implement MinecraftForge.getCrashCallable + 6e6436e Fix up dispenser handling, add in new params for the dispenser: breaks IDispenseHandler, sorry + 38f4a22 Fix up MLProp handling for null info + 3a8b047 GUIs working in FML for ML mods + 52483ee Support gui opening for Shelf mod + dce1cbc Updated MCPMerger to annotate unique classes with there sides, and SideTransformer to null out any class that is loaded on the wrong side. + +Build 4.0.0.217: + LexManos: Updated onItemUseFirst call to include the new hit vector information, and updated readme. + +Build 4.0.0.216: + LexManos: Added missing server side onBlockStartBreak hook, fixes Sheers. + +Build 4.0.0.215: + LexManos: Fixed Forge's 4096 block filler initalization. + +Build 4.0.0.214: + LexManos: Fix IndexOutOfBounds exception, Major derp. + +Build 4.0.0.213: + Christian: + Update FML: 46c563a + + 46c563a Expose more of the village construction parts for building village piece + 1380c2e Allow access to the type "ComponentVillage" + 71a3818 Documentation and registration for villager stuff + e3a343c Fix javadoc derp + 195b1a0 Villager trading, manipulation and village enhancement. Still WIP but sh + 69e66c3 Fix exception based logging to actually log the exception! + +Build 4.0.0.212: + Christian: + Update FML: + 885637c Fix up keyboard events for modloader + 90a7c8f Pickup notification + +Build 4.0.0.211: + LexManos: Changed order in which EntityItemPickupEvent is called, it will no longer be called if the 'delay' on the item is still active. Also EntityItems that are in the world with invalid item stacks will now kill themselves. + +Build 4.0.0.210: + mitchel.pyl: Adds a SkyProvider class that can handle the rendering of the sky + +Build 4.0.0.209: + Christian: + Move and add a few AT for forge: rail and leaves stuff mostly + Update FML (reorg some AT for FML vs forge): + 2171c0c Update fml_at with new transforms + 924a6f9 Fix derp where client sided packet handler would be created on a dedi server env + ad4cffb Add in support for "dummy" keybindings- ones that are added to the list but never do anything so the mod can handle it all themselves. + cf77ffb Don't complain about minecraft source code being in "net.minecraft.src". Derp. + b2fdcd7 Fix ModLoader add XP Smelting + 094ce2a Actually register client/server packetspecs as their correct sides! fixes #71 + +Build 4.0.0.208: + LexManos: Fix MC packet bugs for remote servers that use blocks with ids > 256 + +Build 4.0.0.207: + LexManos: Fixed bug in EntityMinecart that would cause them to fall through the ground at the bottom of slopes. + +Build 4.0.0.206: + Christian: + Update FML: + + e8cb2c1 Error if channel name is invalid - either too short, or too long + 9c6c56c Add a connect and read timeout for downloading libraries. This should really stop the "waiting forever" at startup screen. + 0d5affe GIANT FAT WARNINGS if you use any code in net.minecraft.src or any subpackage thereof. Get it out of there, now! + 13f210f Fix up ML GUI ticking. Thanks sharose! + +Build 4.0.0.205: + LexManos: Fixed EntityEvent.CanUpdate + LexManos: Fix EntityItemPickupEvent 'pop' sound spamming. + LexManos: Added timeout to MC's download of sound resouces. + LexManos: Update WorldProvider.path diff. + +Build 4.0.0.204: + Christian: + Update fml: + c61ad51 Organize ALL the imports + c0842b0 Expose the server in serverstart event + 2851079 Fix up directory injection of log file locations + 5197524 Refer to FMLLog, not FMLRelaunchLog + 78efd1a Tidy up server launch - reflection not required anymore + eee0a99 Also, log what the directory discoverer finds for mcmod.info + 10c96c3 And log the exception if it has a problem reading the jar file + 07cc3fb Fix jar loader failing to inject any metadata at all if mcmod.info is not found. + e31f143 Change install.cmd to install.bat, why, cuz people are .... Updated readme to mention needing server and client. + +Build 4.0.0.200: + LexManos: Allow white space in the property name. + Christian: + Update FML to include some ML compatibility fixes. Minimap should run, assuming he + recompiles against standard ML interfaces. + This updates to official MCP 7.2, so you'll need to rebuild your workspace (some + small but important patches to MCP went in) + +Build 4.0.0.199: + Christian: Update FML, make the .sh scripts executable + +Build 4.0.0.196: + LexManos: Update FML to 285 + +Build 4.0.0.194: + draake: Added additional sound events to allow manipulation of a sound source at its creation. + draake: Removed SoundSetListenerEvent implementation. + +Build 4.0.0.193: + LexManos: Fix potential index exception in ForgeDirection + LexManos: Whops + +Build 4.0.0.192: + LexManos: Rename Orientation to ForgeDirection {Damn MCP naming a class Direction already} + +Build 4.0.0.191: + LexManos: Update FML again for mod screen blending fix. + +Build 4.0.0.190: + LexManos: Updated Orientation with new helper functionality. + LexManos: Fix ItemBlock placement, should fix RP Deployers placing blocks 1 tile down. + LexManos: Seperated block placmenet logic in ItemBlock as immibis requested: https://github.com/MinecraftForge/MinecraftForge/pull/110 + LexManos: New Command event. + LexManos: Fix issue with default getContainerItemStack + LexManos: Add render distance property to TileEntity. + +Build 4.0.0.189: + LexManos: Updated FML, should fix the new included eclipse workspace. + +Build 4.0.0.188: + LexManos: Cleanup repo, delete old code + LexManos: Update FML to 278, MC 1.3.2 + LexManos: Cleaned up forge scripts, and updated AT config for 1.3.2, deleted any reference to server specific code. + LexManos: Updated patches to 1.3.2 + LexManos: Fixed bug in DimensionManager that would cause Index error for custom dimensions, also made WorldProviders aware of what dimension they are. + +Build 4.0.0.187: + LexManos: Readded patch to allow for use of custom teleporter for transfering dimensions. + +Build 4.0.0.186: + LexManos: Update FML with entity spawning fixes + +Build 4.0.0.185: + LexManos: Updated FML, should fix 'derp?' RuntimeError + +Build 4.0.0.184: + LexManos: Fix PickBlock 'ghost item' bug when picking with a item selected. + +Build 4.0.0.183: + LexManos: Update FML, Tons of bug fixes and proper merging of client and server. + LexManos: Delete Forge server projects + LexManos: Update debug settings to use Client's internal MinecraftServer.main to debug dedi-server env. + LexManos: Update release script to create universal binary distro. + +Build 4.0.0.182: + j.marini: Fix bug where default bonemeal behavior wouldn't trigger. Only return if the event was canceled. + +Build 4.0.0.181: + LexManos: Update FML, new AT features, and error info. + +Build 4.0.0.180: + LexManos: Fixed ItemRenderer not grabbing custom texture files properly for block items + LexManos: Updated FML + LexManos: Delete dead IGuiHandler + LexManos: Update AT config to expose some block functions and a few extras. + +Build 4.0.0.179: + LexManos: Should fix commands.py patching not working properly first run. + +Build 4.0.0.178: + LexManos: + Updated FML, Should fix a lot of installing issues for MCP. + Made patches error and not apply if the target file is not found. + Updated Event Transformer to add a default constructor... + Fixed 4096 setup code in MinecraftForge.initalize() + +Build 4.0.0.177: + LexManos: Fix issue in install script for users with spaces in there paths. + +Build 4.0.0.176: + LexManos: Update FML, server should run now. Still issue with NPE with no mods installed. + LexManos: Updated FML, fixed custom tool hooks, and spawn protection/player reach hooks. + +Build 4.0.0.173: + LexManos: Fixed Diemsnion API related NPEs, and updated FML to 231. + +Build 4.0.0.172: + LexManos: Get rid of all old patches + LexManos: Added a better eclipse workspace for deving Forge + LexManos: inital push of updated setup script and cleaned up forge.py + LexManos: Dump old mcp config + LexManos: New Start.java which allows the user to login using a legit account for testing on servers. + LexManos: Committing inital work on generating sanitized MCP conf data. + LexManos: Add the direct copied files from MCP conf + LexManos: Add newids to that list + LexManos: Helper function grab all unique searge names that are shared client and server + LexManos: Added merging fields/methods/param csv files. And updated FML to 197 + LexManos: Remove eclipse files from old eclipse projects + LexManos: Updated build.py + LexManos: Update FML + LexManos: + Moved logo to new client folder + Added blank Access Transformer config for Forge + Implemented version storage + Added basic dummy FML mod container to remove the need for mod metadata file + Added beggining work on Forge event system + Updated and moved EnumHelper + LexManos: Updated update_patches.py, and made first patch! + LexManos: Moved paulscode to new client folder + LexManos: First push of some small patches and introduction of basic events. As well as the first cases for Forge's Access Transformer + LexManos: Missed a file + LexManos: Moved in OreDictionary stuff to new system. IOreHandler is replaced by OreDictionary.OreRegisterEvent + LexManos: Renamed MinecraftForge.eventBus to EVENT_BUS as it's constant. + LexManos: Implemented BonemealEvent (IBonemealHandler replacement), and bonemeal making grass. + LexManos: Implemeneted adding grass seeds, as well as IShearable for BlockTallGrass + LexManos: More progress on converting patches from 1.2.5 + LexManos: Some more patch migration before bed. + LexManos: + More patches converted. + Refactored some of the events to be a better hiarachy. + LexManos: A bulk of more patches converted, updated fml + LexManos: Moved some files. + LexManos: More work, moved over packet stuff, need to change everything to use new NetworkMod system + LexManos: More conversions, added all the entity living events. + LexManos: Finished World and EntityMinecart patches. + LexManos: Removed a lot of old files + LexManos: Updated Client side patches for the new Merged MCP workspace. + LexManos: Nope, unneeded patch + LexManos: Cleaned up some more, fixed infinite loop with cancelable annotation, Client now compiles and enters world just fine. + LexManos: Delete conf, server compile, update fml, and fix install script. + LexManos: Copy forge files over in install. + LexManos: Update fml + LexManos: Moved over Configuration + LexManos: Fix oreientation bug causing levers not being able to place. + LexManos: Added new pick block hook for blocks and entites to allow for better grained control of the result. + LexManos: Include Forge's AT config into redist zips. + LexManos: Update fml, impelemnted Diemsnion API stuff. + LexManos: Updated FML, updated patches + +Build 3.4.9.171: + Christian: Normalize the repo + LexManos: Rebase + LexManos: Bumped version to 3.4.9, final commit for 1.2.5. + +Build 3.3.8.170: + someh4x0r: Fix BlockTrapDoor.disableValidation on server + +Build 3.3.8.164: + LexManos: Should fix NPE on older ISoundHandlers EXA: http://minecraftforge.net/forum/index.php/topic,759.html + +Build 3.3.8.163: + Christian: Update fml with recent tick fix + +Build 3.3.8.162: + truebrain: + -Add: sync serverPos[XYZ] on spawning of entity + + This fixes the issue that, up to 400 ticks from getting in range, + entities have a wrong offset (because server and client don't agree on + the position to calculate relative updates from) + truebrain: -Fix: check for null where needed + truebrain: -Codechange: applied LexManos' request + +Build 3.3.8.161: + LexManos: Fixed a improper rounding in EntityMinecart + LexManos: Made WorldGenMinable metadata sensitive. + +Build 3.3.8.160: + Christian: Update fml to 175- fixes some weird ticking behaviours for ML mods, adds in new ticking behaviours for smart mods + +Build 3.3.8.159: + LexManos: Moved licenses and credits into install folder. + LexManos: Removed symlink files, shouldn't be in the repo. + LexManos: Updated some remaining scripts to call there python versions. + +Build 3.3.8.158: + LexManos: Fix furnaces not smelting the proper number of results after the first one. Damn you tahg, fix this! Keeps falling through my cracks. + +Build 3.3.8.157: + Christian: + Fix server check "blockHasTileEntity" used to determine if getDescriptionPacket + is sent for the block to be metadata sensitive. Thanks iChun! + +Build 3.3.8.156: + Christian: Fix ghost players who appear if they don't have the 4096 fix installed + +Build 3.3.8.155: + LexManos: Fix container creative to not add Blocks above 256 unless it's told to. + +Build 3.3.8.154: + Christian: + Fix world provider behaviour: WorldProvider.byDimension should always return + a new instance- otherwise you can end up with worlds overwriting one another + +Build 3.3.8.153: + LexManos: Fixed isBlockReplaceable and placing ItemBlocks' + +Build 3.3.8.152: + LexManos: Fucking spelling nazis + +Build 3.3.8.151: + LexManos: Fix bitmask bug related to 4096 in multi-block change. + LexManos: Updated FML to build 153 + +Build 3.3.8.150: + LexManos: Fix NPE related to server/client not having block ids synced properly. + LexManos: Add option to randomize potential spawn locations to have a more randomly dispersed spawn patern, useful for games like FTB vs. + LexManos: Added configuration option to disable the darkroom mechanic. For servers who wish to not risk destruction at one broken pipe. + +Build 3.3.8.148: + LexManos: FML 150, more tick related work. + +Build 3.3.8.147: + LexManos: Close inputstream + +Build 3.3.8.146: + LexManos: More bugfixes related to portal generation. Should be all now. + +Build 3.3.8.145: + LexManos: Some 4096 I missed in custom renderers. + LexManos: Updated to FML 149, should fix all ticking issues with ModLoader mods + LexManos: Fix Vanilla bug where nether portals would not work above 127 + +Build 3.3.8.144: + LexManos: Updated to FML build #142, fixed FML compilation issue causing missing files when reobfing. + +Build 3.3.8.143: + LexManos: Updated release script to automatically inject version info into .info file. + +Build 3.3.8.142: + LexManos: Updated to FML 141, should fix ticking issues with certian mods, and crash issue with TropiCraft + +Build 3.3.8.141: + LexManos: Bumped version number for new IEntityLiving interface. + +Build 3.3.7.140: + pahimar: Typo in the new EntityLivingHandler code + +Build 3.3.7.139: + LexManos: Made setFailsafeFieldValue public for Rob + LexManos: Implemented enchanced EntityLiving events. Thanks Atomic for parts of it. + +Build 3.3.7.138: + LexManos: Few more cases for 4096, thanks TrueBrain + +Build 3.3.7.137: + LexManos: Forgot Configuration in 4096 change. + +Build 3.3.7.136: + LexManos: Configurable kick message when you don't have forge. + LexManos: Initial 4096 fix based of mDiyo's work. + +Build 3.3.7.135: + LexManos: Fixed bug in new entity sound hook. + +Build 3.3.7.134: + LexManos: Updated to FML #135 {Fixed ModList rendering issue, and incorrect arument on crafting hook} + LexManos: Added new ISoundHandler.onPlaySoundAtEntity hook. Should be backwards compatible with any older ISoundHandler implementations. + LexManos: New onChunkUnload event for TileEntities, for psxlover. + LexManos: Bumped version number to 3.3.7 for full release. + +Build 3.2.6.132: + LexManos: Fixed concurent modification exception in the ore registry. + +Build 3.2.6.131: + LexManos: Fix for potential concurancy modification exceptions + +Build 3.2.6.130: + LexManos: Fixed possible NPE when blocks havent fully initalized yet. + +Build 3.2.6.129: + LexManos: Updated FML to 132, TextureFX fix, and bumped revision to 6. + +Build 3.2.5.128: + LexManos: Added bouncer functions for functions we removed. Makes MagicLauncher shut up about missing functions {not actually missing}, and therefor makes users stop thinking its a life or death error. + +Build 3.2.5.127: + LexManos: New Ore Dictionary recipies. Allows for simpler Ore Dictionary integration with recipies. IOreHandler should no longer be used. + +Build 3.2.5.126: + LexManos: Updated to FML 130 + LexManos: Added hackish workaround for Tessellator.textureID to provent crashing while we wait for Optifine to update. + +Build 3.2.5.125: + LexManos: Server side of ITextureProvider for Block/Item for compilations sake. + +Build 3.2.5.124: + LexManos: Backwards compatibility fix for ITextureProvider + +Build 3.2.5.123: + LexManos: Updated FML to 121 to fix world tick issues. + +Build 3.2.5.122: + LexManos: Updated MCP mapings. Moved the bulk of custom logic from RenderItem to ForgeHooksClient. + LexManos: All Items and Blocks now implement ITextureProvider, and have a setTextureFile(String) function, to support cleaner code in Mods and in Forge. + LexManos: Tag each Tessellator with it's associated texture ID. + +Build 3.2.5.121: + LexManos: Added kick info to disconnect event, updated to FML 120, keybindings, better image rendering in ModList ui. + +Build 3.2.5.120: + LexManos: Fix bug in cart functions where would always return null. + +Build 3.2.5.119: + LexManos: Fixed some inverted logic causing tress to not gen correctly. + +Build 3.2.5.118: + LexManos: Update FML to 117 + +Build 3.2.5.117: + LexManos: New Hooks addedf for custom tree/leaves. And better interaction with trees growing and rerplacing certain blocks. Should allow for ExtraBiomes to behave nicer, and RedPower to make there blocks un-breakable by trees. + LexManos: Also, new hook in last commit for blocks to determine if they are able to be replaced by ores, for any mod that adds new world gen. Bumped revision up. + +Build 3.2.4.116: + LexManos: We now bundle CodexIBXM from PaulsCode. See http://paulscode.com http://www.paulscode.com/forum/index.php?topic=4.0 and the included license files for more info. + LexManos: Updated to FML 115, added Forge Logo to the client dist, and in-game ModInfo page. + +Build 3.2.4.115: + LexManos: Updated to FML build 114 + +Build 3.2.4.114: + LexManos: Included fmlversion.properties in the release zips. + +Build 3.2.4.111: + LexManos: Added FML ReadMe, Credits, and License to release zips + +Build 3.2.4.110: + LexManos: Update FML to 92, this include full client side support, ModLoader nolonger needed. + LexManos: Added new source clean step to fix linux vs windows astyle issues. + LexManos: Cleaned up names for Minecraft Forge's text files so they dont clash with other mods. Fixed up the release script to include the license text, and executable permissions for install.sh. + LexManos: Added FML mod info file + LexManos: Updated MCP Mapings and patches. + LexManos: Updated patches for FML, moved some extranious code to Forge classes instead of patches. + LexManos: Updated to FML Build 95 + +Build 3.2.3.108: + LexManos: Bump version number for official release. + +Build 3.1.3.107: + LexManos: Fixed AudioMod compatibility with MultiMC style launchers. + +Build 3.1.3.106: + LexManos: Bit masked the entity ID to change the range from -127-127 to 0-255 + +Build 3.1.3.105: + LexManos: Updated MCP Mapings + +Build 3.1.3.104: + LexManos: Added forge identifier to statistics collection. + +Build 3.1.3.103: + LexManos: Fix for furnaces not smelting the final item in full stacks. + +Build 3.1.3.102: + CovertJaguar: static final vars are inlined during the compile step, making the version variables useless at runtime. + LexManos: Fixed Levers droping off the backs of stairs client side. + +Build 3.1.3.101: + LexManos: New block hooks for creating custom beds. + +Build 3.1.3.100: + cpw: Update to FML 74: fixes an important issue with MLProp + +Build 3.1.3.99: + LexManos: Bumped revision to 3 + +Build 3.1.2.98: + LexManos: Fixed Vinella mob spawning bug that prevented mobs from spawning on the top most chunk. Added new Block function to determine if a Mob can naturally spawn on the block. Add new hook to allow for special case handeling on natural entity spawn. + +Build 3.1.2.97: + LexManos: Fix for loading Minecart Entities in worlds that were last accessed before Forge was installed. + +Build 3.1.2.96: + LexManos: Moved MLMP compatibility functions to ModCompatibilityClient, and fixed issue where no vehicles would be spawned. + +Build 3.1.2.95: + LexManos: + New ISoundHandler interface, useful for adding custom sounds and dealign with sound based events. + Includes basuic AudioMod compatibility. + +Build 3.1.2.94: + LexManos: Fixed vinella bugs when trying to access chunk information with a y < 0 + +Build 3.1.2.93: + LexManos: Updated to FML build #73 + LexManos: Added MLMP hook invocation for vehicle spawn and opening GUI's to provide compatibility for clients that have both ModLoaderMP and forge installed. + +Build 3.1.2.92: + LexManos: Exposed TileEntityData packet to TileEntities. And added helper sender function. + +Build 3.1.2.91: + LexManos: Added metadata sensitive Chunk constructor for Bioxx + +Build 3.1.2.90: + LexManos: Added MinecraftApplet.clas to the force output list because users cant understand the concept of only replacing files they are told to. And bumped version to 3.1.2 + +Build 3.0.1.89: + LexManos: made the ID in PacketEntitySpawn unsigned. + LexManos: Added generic packet sending function to MinecraftForge class. + LexManos: Fixed shift-clicking issue with items that utilized the new ItemStack sensitive smelting system. + LexManos: Implemented a 'small' packet system for those mods that need to send rapid, small data packets and who are concered about the overhead of the 250 payload packet. It uses packet 131. + +Build 3.0.1.88: + LexManos: Implemented RichardG's Paged Achivement list GUI modifications. + +Build 3.0.1.87: + t.tomkins: Edits enable use of EntityPlayer.canHarvestBlock (for PlayerAPI) when the ToolClass has no rules for the block. + +Build 3.0.1.86: + LexManos: MAX_ENTITY_RADIUS Now works on the Y axis + LexManos: Respawning in dimensions should now properly set the dimension ID for the new player instance. + +Build 3.0.1.85: + LexManos: Fix for vanilla crash for chunk generation with block ID's above 127. + +Build 3.0.1.84: + cpw: Update fml to build 68: fixes a ticking issue and soft vs hard dependencies + +Build 3.0.1.83: + LexManos: + Changed entity Forge spawning code works to be more in line with normal spawning: + (World, double, double double) constructor is nolonger called, normal (World) constructor, and setPositionAndRotation is called afterwords. + yaw, pitch, and yawHead is sent (if the entity isn't a EntityLiving yawHead isn't used) + The datawatcher data is also sent like a normal Entity. + +Build 3.0.1.82: + LexManos: Fixed bug in BlockFire's old fields. + LexManos: Added variable entity radius to World, to be used if a mod make really large entities. + +Build 3.0.1.81: + LexManos: Fixed TileEntity bug that was causing Ghost tile entities. + +Build 3.0.1.80: + LexManos: Multi-pass item rendering now uese proper render pass number. + +Build 3.0.1.79: + LexManos: Added slope velocity hook for Covert + +Build 3.0.1.78: + LexManos: Fixed bugs in the Dimension transfer code, Now displays proper join message, and respawning in dimensions other then 0 works. + +Build 3.0.1.77: + CovertJaguar: Added a function for checking block harvest levels without having to resort to reflection. + LexManos: Try to fix jenkins build. + +Build 3.0.1.75: + LexManos: Added ItemStack sensitive burn time hook. + +Build 3.0.1.74: + LexManos: + Added new Item function to allow for multiple rendering passes. + Fixed a vinella bug where item layters would not line up for EntityItem's + Added new IItemRendere helper flag for 3d block translations. + +Build 3.0.1.73: + cpw: Update fml to 62- provision a server console command and fix mod loading order + cpw: Update FML for new hooks: onPlayerLogout and onPlayerDimensionChanged + LexManos: + Rewrote IItemRenderer to be a more generic and expandable version, Breaks previous interfaces, but this should be the last time the interface changes. + Implemented the MapRender hook ChickenBones requested. + +Build 3.0.0.72: + cpw: Fix separated login/announce handler + cpw: FML 59: don't send a zero length register packet, add mod channels + +Build 3.0.0.71: + cpw: Update to FML 57: fixes FML not calling it's login handler code + +Build 3.0.0.70: + LexManos: MCP Conf update for 1.2.5 + LexManos: Initial patch update to FML and MC 1.2.5 + LexManos: Deleted patches + LexManos: Fixed update_patches.py to now delete old patch files that have no working src relation + LexManos: Updated repo scripts to python, allowing more flexability and less code duplication. + LexManos: Finished up converting the source dist install scripts to python. Fixed a couple issues with the other scripts. + cpw: Update patches for FML fix. + cpw: Fix release script to import "inject_version" + cpw: Add in recent fml with fixes + cpw: Delete the old one too + LexManos: Rewrote the login code to delay full login untill forge fnishes negotiating network IDs. Should fix entities not having proper ID mapings. + LexManos: Added ChickenBones's request ITextureLoadHandler hook + LexManos: Updated patch for mapings + LexManos: Implemented ISaveEventHandler as ChickenBones's requested. + LexManos: Add server spawn protection config option as per someh4x0r's request. + LexManos: Couple of output fixups and added script to be executed by Jenkins during the build. First test build. + LexManos: Changed IGuiHandler's signature to be compatible with both sides. Took out ModLoaderMp reference in README. + +Build 2.0.0.68: + LexManos: Fix some shadowing warnings. + LexManos: Some cleanups to update_patches, should run properly on any system now. + LexManos: Add IChunkLoadHandler.canEntityUpdate() function to allow entities to update while in custom loaded chunks. + LexManos: Implemented a chat event handler system to allow for manipulating and handeling the various chat/command events. + +Build 2.0.0.67: + LexManos: Changed update_patches script to use python for the bulk, Prevents making 1800 temporary useless files. + LexManos: Fixed camelcasing in IConnectionHandler, ment to do during first upgrade. + +Build 2.0.0.66: + LexManos: Fixed typo bug in MinecraftForge.getEntityTrackerInfo + +Build 2.0.0.65: + LexManos: + Updated to MC: 1.2.4 MLMP: 1.2.4 v1 + Removed all code that was marked as deprecated, IE: ICustomItemRenderer, and the functions in Configuration + +Build 1.4.1.64: + LexManos: Reworked EntityPlayerMP.openGui to hopefully be more compatible with PlayerAPI + +Build 1.4.1.63: + LexManos: Cleanup the EffectRenderer patches, Allows custom food items to have the proper particals. Cleaned up special case class in favor of basic java generics. + +Build 1.4.1.62: + CovertJaguar: Added the ability to define custom categories for config files. + CovertJaguar: Removed createCategory() function and changed it to create categories as they are encountered. + LexManos: Updated MCP mapings + LexManos: + Fixed a couple of bugs in the Configuration categories pull request. + Added helper functions to Property for standard int/boolean usage. + LexManos: Added rider sit pull request. + +Build 1.4.1.61: + LexManos: Fixed NPE on CustomPayload packets with 0 data + LexManos: Changed logic in Configuration to allow for extended block ID mods easier access to change that. Just use reflection to change Configuration.configBlocks to whatever length you want. + LexManos: Implemented Pheenixm pull request allowing for more control over the camera. + LexManos: + Added MinecraftForge.isClient() function that returns true if you are in the Minecraft Client, (As defined as net.minecraft.client.Minecraft existing) false otherwise. + Fixed a typo on PacketEntitySpawn that caused speed to be assigned improperly. + A little code cleanup. + +Build 1.4.1.60: + LexManos: Fixed a few typos that CovertJaguire found in The Forge entity handeling code. And re-wrote the connection sequance so that clients get a list of mod ids before anything else. + +Build 1.4.1.59: + LexManos: Readded the deprecated interface ICustomItemRenderer. Added method to enforce deprecation cross Minecraft versions. + +Build 1.4.1.58: + newthead: Added new item render interfaces to Forge client + newthead: Added hook for rendering equipped items + newthead: Clarified render option for inventory items + newthead: Added remaining item render hooks, and fixed a static method access + newthead: Added render code for inventory items and entity items. + newthead: Cleanup/fix item render hooks + newthead: Added additional flag for rendering entity item bobbing + newthead: Merged item rendering interfaces into a single IItemRenderer + newthead: Updated render hooks and registration to use the IItemRenderer interface + newthead: Modified patches to use new item render hooks + newthead: Merged item rendering interfaces into a single IItemRenderer + CovertJaguar: Fix for network code. + newthead: Changed render hook checks to all use ItemStack instead of itemID + newthead: Reverted vanilla texture binding to an explicit if() statement based on item ID + LexManos: Fixed dyes showing twice in creative list + LexManos: Bumped version number to 1.4.1 + +Build 1.4.0.57: + LexManos: Fixed tile entities not properly being removed for blocks that do not extend BlockContainer, or override BlockContainer.onBlockRemoval + +Build 1.4.0.56: + LexManos: Fixed excessive need for user interaction in the install script. + LexManos: Fixed a class to a deprecated method to fix tool effectiveness. + +Build 1.4.0.55: + LexManos: Reworked the workspace scripts so the build should fail on compile errors. This build should fail as a test. + LexManos: Fixed IOException not found error in CovertJaguires pull request. Updated scripts so that build should now be fixed + +Build 1.4.0.53: + CovertJaguar: Added throws clause to ISpawnHandler functions to keep the functions consistent with similar functions and increase ease of use. Exceptions are already being caught everywhere these functions are called, so no further changes required. + LexManos: Fixed onTakenFromCrafting hooks to be called once per stack taken. Sadly due to how shift-click is handled, the passed in item stack is not garenteed to be the stack that the result was added to. + +Build 1.4.0.52: + LexManos: Fixed forgotten type identifier in clean_src + LexManos: New EntityInteract hook for handeling player vs entity interaction on the global level vs the item level. + LexManos: Fixed sides of grass not getting biome colors + LexManos: Fixed type on patch conversion messing up tile entities + LexManos: Proper fix for SDK's invalid bit shifts of parameters for chunk population + LexManos: Made BlockStairs, BlockFarmland, and BlockStep have proper sided-solidity. Can now place torches on any solid side of those blocks. + +Build 1.4.0.51: + cpw: + Fix worldgen doubleshifting in ModLoaderMP until SDK fixes it. + + This means mods can generate surface and nether in SMP again. + +Build 1.4.0.50: + eloraam: Fixed a merge error. + LexManos: + New script to fix decompile differences between windows and linux/osx. + Removed the MLProp special case, no longer needed as MLProp decompiles fine. + Updated patches to work on all systems. + Added warning and exit if the user does not say yes to the cleanup. + +Build 1.4.0.49: + eloraam: MCP Update. Fixed a few small bugs in the linux scripts. + +Build 1.4.0.48: + LexManos: Fixed the inverted logic in the missing mod check. + LexManos: Fixed a wrong argument for dimensions, should fix entity tracking. + LexManos: Custom dimensions should now honor the canRespawnHere function for respawning. + +Build 1.4.0.47: + LexManos: Fix up Configuration ids to only work for 256 ids until Jeb finishes the 4096 conversion. + +Build 1.4.0.46: + LexManos: Fixed a bug where vines were not shearable. + +Build 1.4.0.45: + CovertJaguar: Fixed a minor bug with the Minecart Dictionary. + +Build 1.4.0.44: + LexManos: 1.4.0 official release. + +Build 1.3.4.42: + LexManos: Updated to MLMPv3 + +Build 1.3.4.41: + LexManos: Hack-fix for players getting stuck during logins. Detailed fix when bug is actually tracked down. + LexManos: Implemented ChickenBone's Chunk handler + +Build 1.3.4.39: + LexManos: Fixed client side bonemeal on grass only making flowers + LexManos: Updated to latest MCP + +Build 1.3.4.38: + LexManos: Fixed MLMP thinking Network mods need a client side when they dont. + LexManos: Fixed a generic tile entity line i missed on the server side. + LexManos: Removed improper tile entity negation + +Build 1.3.4.37: + LexManos: Updated to SDK MLMP v2 + +Build 1.3.4.36: + LexManos: Fixed missing double array in MLMP's packet server side. Also, fixed the creative code again, brain failed. + +Build 1.3.4.35: + LexManos: Got my comparitor turned around + LexManos: Updated to SDK's 1.2.3 MLMP, Mush cleaner, no longer supporting Flan's. + +Build 1.3.4.34: + LexManos: Updated gitignore, fixed digging particles, fixed creative container showing to many blocks, fixed wrong argument for custom renderers. + +Build 1.3.4.33: + LexManos: Updated MCP's patch files. Fixes hangs on running MC as applet. + LexManos: ItemBlock now implements ITextureProvider so that blocks with custom textures will showup properly when being held. + +Build 1.3.4.32: + LexManos: Fixed NPE in the login handler + LexManos: Fixed directory issues in the setup script + LexManos: Cleanup of ModLoaderMP and proper update to the latest version of ModLoader + +Build 1.3.4.31: + LexManos: Fixed missing space in linux scripts + LexManos: No longer mark forge packets as chunk packets. + LexManos: Updated MCP mapings files + +Build 1.3.4.30: + LexManos: Updated scripts so that we use Fernflower now. Added a small python script to download fernflower for the user. And the scripts exit out if it fails. + LexManos: Deleted modLoaderMP.patch, unneeded now that we use Fernflower + LexManos: Updated eclipse project for MCP 1.2.3's inclusion of the Start folder in the src folder. + LexManos: Updated The Json enum helper to point to the new packaged names. And fixed a casing change in ModLoader + LexManos: Made mod_MinecraftForge extend NetworkMod, and changed NetworkMod to extend BaseModMP server side. + LexManos: Fixed unneeded imports in ForgePacket + LexManos: removed unneeded import, and fixed casing of args in IShearable + LexManos: Deleted EntityPigZombie patches, Who needed these? Why could you not do this via reflection? + LexManos: Conf for 1.2.3 + LexManos: Same patch diff, files. + LexManos: No longer needed, bug was fixed + LexManos: Client side initial patch update to Fernflower and MC 1.2.3 + LexManos: Bit of a cleanup of the client patches + LexManos: Couple of things I missed client side + LexManos: Deleted unneeded server side patches, Packet250 bug was fixed. And the others got moved to AnvilSaveHandler + LexManos: First push of server side patch updates for 1.2.3. MLMP is still not updated so it does not include those changes, and will not compile. + LexManos: Small imports cleanup + LexManos: Missed damageCarryover on the server + LexManos: Made the scripts forge updating md5s/mcp/names + LexManos: Updated for MLMP 1.2.3 v1 + +Build 1.3.4.29: + LexManos: Bumped version to 1.3.4, final commit for Minecraft v1.1 + +Build 1.3.3.28: + LexManos: Fixed bug in build script that caused the Minecraft/MinecraftServer classes to not be included. + +Build 1.3.3.27: + LexManos: Client side of the new Dimension support. + +Build 1.3.3.26: + thedeveducer: Fixed spelling mistake ('Frequancy') + LexManos: Fixed ITextureprovider for multi-textured items when rendering on the GUI. + LexManos: Fixed compile error for the spelling pull request. + +Build 1.3.3.24: + LexManos: Fixed up Shearable blocks to play nicer with sub-classes. + LexManos: Fixed line endings in windows update_patches + LexManos: Deleted Deprecated interfaces. + LexManos: Ran AStyle over forge code for uniform code formatting, and refactored old code a bit to have cleaner names. + +Build 1.3.3.23: + connor: People may think the server needs the mods to continue and not the client. + +Build 1.3.3.22: + LexManos: Fixed a bug in update_patches that caused apostrphies to be removed. Causing the last patch to be generated incorrectly. + +Build 1.3.3.21: + LexManos: + Initial attempt at server side extra dimensions support. + Mods must register there dimensions on load, by calling DimensionManager.registerDimension(uniqueID, WorldProvier, boolean) + Mods are resposible for writing there own transporter blocks. + Initial commit, needs some more testing and design thoughts. + +Build 1.3.3.20: + LexManos: Added new Item.getIconIndex context sensitive version. + LexManos: Implemented a response to Methuselah96's Arrow hook request. See IArrowNockHandler and IArrowLooseHandler + +Build 1.3.3.19: + LexManos: Changed the layout of the missing mods gui a little. Still needs a lot of work to look good. + LexManos: Marked forge packets as 'chunk' packets. Giving them a higher priority making the initial mod list check more reliable. + LexManos: Introduced some debugging info into Forge packets. And a debug flag in the client and server packet handlers. + LexManos: Moved Client side EntityPlayer.openGui work code to EntityPlayer for compatibility between player API. + +Build 1.3.3.16: + eloraam: Linux scripts fixed, TE bug fix. + eloraam: Fixed linux scripts, fixed TE bug. + +Build 1.3.3.15: + LexManos: Exposed getters for NetServerHandler.playerEntity and NetworkManager.netHandler + LexManos: + Introuduced NetworkMod, a BaseMod extension and replacement for BaseModMP. All mods that are designed to work in the server environment should extend this. + NetworkMods will be assigned unique ModIDs by the server, and those IDs will be sent to the client upon connection. + Refactored Forge packets to the net.minecraft.src.forge.packets package. And introduced the base ForgePacket class. + Added initial ModList request/response. + LexManos: + Expanded the Mod check to test for missing mods and display a GUI screen for the client if it is missing any. + The client now downloads NetworkMod ID's from the server upon connecting. + LexManos: Implemented a generic EntityPlayer.openGui system, and the network backend for it to work on server and client. + +Build 1.3.3.14: + LexManos: + Fixed up the install scripts. The linux script no longer needs sed. Should fix some issues on OSX's without gsed. + Also forge sources will only be copied to sides that were downloaded. + Also, install scripts now prompt for input to cleanup. + +Build 1.3.3.13: + LexManos: Split mod_MinecraftForge so that Clients arnt required to have MLMP installed if they don't use a MP mod. + +Build 1.3.3.12: + LexManos: Update MCP Mapings + LexManos: Small update to update_patches.bat, to skip patch reject files. + LexManos: Bumped version to 1.3.3 + +Build 1.3.2.10: + LexManos: + Refactored so that ISpecialArmor items do not see the factor of 25 on the damage. + The value returned form ISpecialArmor.getProperties is now copied, so mod items are free to re-use there return values. + +Build 1.3.2.9: + LexManos: + Reworked ISpecialArmor to provide better functionality as requested by IC2 devs. + Armor can now be prioritized over other armor. + It can deal with damaging it's own itemstacks. + Also impkemented the ISpecialArmor.getArmorDisplay + +Build 1.3.2.8: + LexManos: Lowered the amount of build log spam, and fixed the inject_version script for use on other systems. + LexManos: Fixed ITextureProvider support for items that have multiple colored overlays. + LexManos: Added Item.onLeftClickEntity hook. Used to intercept and cancel the 'attack' action within items. + LexManos: Implemented item.onBlockStartBreak call for creative single player. + LexManos: Implimented a new IShearable system. This allows mods to create both new shear-like items/blocks. As well as new Entities/Blocks that work with other mod's shear-like items. + +Build 1.3.2.7: + LexManos: Missed a caluse, ISpecialArmor should work as intended now. And not destroy Armor instanatly. + +Build 1.3.2.6: + LexManos: + Implmented Sengir's IPickupHandler. + http://www.mod-buildcraft.com/forums/topic/hook-intercept-item-pickups-by-player-entities/?view=all + +Build 1.3.2.5: + LexManos: + Merged in the change to ISpecialArmor to introduce the DamageSource argument. + As well as the concept of damage absorption vs reduction. + +Build 1.3.2.4: + LexManos: + Created a Entity tracking ans spawning system. + Mod creators should call MinecraftForge.registerEntity to register a entity. + All entity ID numbers are Mod Unique. Meaning two mods can have Entity #1. + Added client and server side packet handlers for the 'Forge' channel. For use in internal packets such as the new Spawn packet. + Updated the build scripts to copy over unique server source files now that there actually are some. + For modders: + If you have a entity that used MLMP's 'owner' system, you should have your entity implement IThrowableEntity + If you have a entity that implments MLMLP's ISpawnable, you should implement ISpawnHandler. + They provide the same functionality, just in a cleaner, more orginized way and will be the method used when we eventually drop MLMP. + +Build 1.3.2.3: + LexManos: Fixed return value for un/registerChannel. Now returns properly indicate when un/register commands should be sent. + +Build 1.3.2.2: + LexManos: + Setup .gitignore for eclipse bin dirs. + Fixed line endings in install.sh + Added mod_MinecraftForge for simpler logging of minecraft version in crash reports + Added new hooks for connection events, See IConnectionHandler for more details. + Added Packet250CustomPayload handeling and channel registraction management, see MessageManager and IPacketHandler for more details. + Forge now uses unsed fields in C->S Packet1Login to identify itself. None Forge clients will get a graceful disconnect message instead of the 'Unknown packet 230' + diff --git a/gradle.properties b/gradle.properties new file mode 100755 index 0000000..e9b9fd5 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,3 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100755 index 0000000000000000000000000000000000000000..30d399d8d2bf522ff5de94bf434a7cc43a9a74b5 GIT binary patch literal 52271 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 p \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100755 index 0000000..aec9973 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/com/shinyhut/vernacular/VernacularViewer.java b/src/main/java/com/shinyhut/vernacular/VernacularViewer.java new file mode 100755 index 0000000..92cf1fd --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/VernacularViewer.java @@ -0,0 +1,264 @@ +package com.shinyhut.vernacular; + +import com.shinyhut.vernacular.client.VernacularClient; +import com.shinyhut.vernacular.client.VernacularConfig; + +import javax.swing.*; +import java.awt.*; +import java.awt.datatransfer.StringSelection; +import java.awt.event.*; +import java.util.Optional; + +import static com.shinyhut.vernacular.client.rendering.ColorDepth.BPP_16; +import static java.awt.EventQueue.invokeLater; +import static java.awt.Toolkit.getDefaultToolkit; +import static java.awt.event.KeyEvent.*; +import static java.lang.Integer.parseInt; +import static java.lang.System.exit; +import static javax.swing.JOptionPane.*; + +public class VernacularViewer extends JFrame { + + private VernacularConfig config; + private VernacularClient client; + + private JMenuItem connectMenuItem; + private JMenuItem disconnectMenuItem; + + private Image lastFrame; + + private VernacularViewer() { + initUI(); + } + + private void initUI() { + setTitle("Vernacular VNC"); + setSize(800, 600); + setLocationRelativeTo(null); + setDefaultCloseOperation(EXIT_ON_CLOSE); + addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent event) { + if (client != null) { + client.stop(); + } + super.windowClosing(event); + } + }); + + addMenu(); + addMouseListeners(); + addKeyListener(); + initialiseVernacularClient(); + } + + private void addKeyListener() { + addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (running()) { + client.keyPress(e.getKeyCode(), e.getKeyChar(), true); + } + } + + @Override + public void keyReleased(KeyEvent e) { + if (running()) { + client.keyPress(e.getKeyCode(), e.getKeyChar(), false); + } + } + }); + } + + private void addMouseListeners() { + getContentPane().addMouseMotionListener(new MouseMotionListener() { + @Override + public void mouseDragged(MouseEvent e) { + mouseMoved(e); + } + + @Override + public void mouseMoved(MouseEvent e) { + if (running()) { + client.moveMouse(scaleMouseX(e.getX()), scaleMouseY(e.getY())); + } + } + }); + getContentPane().addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + if (running()) { + client.updateMouseButton(e.getButton() - 1, true); + } + } + + @Override + public void mouseReleased(MouseEvent e) { + if (running()) { + client.updateMouseButton(e.getButton() - 1, false); + } + } + }); + } + + private void initialiseVernacularClient() { + config = new VernacularConfig(); + config.setColorDepth(BPP_16); + config.setErrorListener(e -> { + showMessageDialog(this, e.getMessage()); + setMenuState(false); + }); + config.setPasswordSupplier(() -> + Optional.ofNullable(showInputDialog(this, "Enter password")).orElse("")); + + config.setFramebufferUpdateListener(this::renderFrame); + config.setBellListener(v -> getDefaultToolkit().beep()); + config.setServerCutTextListener(t -> getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(t), null)); + client = new VernacularClient(config); + } + + private void addMenu() { + JMenuBar menu = new JMenuBar(); + + JMenu file = new JMenu("File"); + file.setMnemonic(VK_F); + + connectMenuItem = new JMenuItem("Connect"); + connectMenuItem.setMnemonic(VK_C); + connectMenuItem.addActionListener((ActionEvent event) -> showConnectDialog()); + + disconnectMenuItem = new JMenuItem("Disconnect"); + disconnectMenuItem.setMnemonic(VK_D); + disconnectMenuItem.setEnabled(false); + disconnectMenuItem.addActionListener((ActionEvent event) -> disconnect()); + + JMenuItem exit = new JMenuItem("Exit"); + exit.setMnemonic(VK_E); + exit.addActionListener((ActionEvent event) -> { + if (client != null) { + client.stop(); + } + exit(0); + }); + + file.add(connectMenuItem); + file.add(disconnectMenuItem); + file.add(exit); + menu.add(file); + setJMenuBar(menu); + } + + private void showConnectDialog() { + JPanel connectDialog = new JPanel(); + JTextField hostField = new JTextField(20); + JTextField portField = new JTextField("5900"); + JLabel hostLabel = new JLabel("Host"); + hostLabel.setLabelFor(hostField); + JLabel portLabel = new JLabel("Port"); + portLabel.setLabelFor(hostLabel); + connectDialog.add(hostLabel); + connectDialog.add(hostField); + connectDialog.add(portLabel); + connectDialog.add(portField); + int choice = showConfirmDialog(VernacularViewer.this, connectDialog, "Connect", OK_CANCEL_OPTION); + if (choice == OK_OPTION) { + connect(hostField.getText(), portField.getText()); + } + } + + private void connect(String host, String port) { + setMenuState(true); + lastFrame = null; + client.start(host, parseInt(port)); + } + + private void disconnect() { + if (running()) { + client.stop(); + } + setMenuState(false); + } + + private void setMenuState(boolean running) { + if (running) { + connectMenuItem.setEnabled(false); + disconnectMenuItem.setEnabled(true); + } else { + connectMenuItem.setEnabled(true); + disconnectMenuItem.setEnabled(false); + } + } + + private boolean running() { + return client != null && client.isRunning(); + } + + private void renderFrame(Image frame) { + if (resizeRequired(frame)) { + resizeWindow(frame); + } + lastFrame = frame; + getContentPane().getGraphics().drawImage(lastFrame, 0, 0, getContentPane().getWidth(), getContentPane().getHeight(), null); + } + + public void paint(Graphics g) { + super.paint(g); + if (lastFrame != null) { + renderFrame(lastFrame); + } + } + + private boolean resizeRequired(Image frame) { + return lastFrame == null || lastFrame.getWidth(null) != frame.getWidth(null) || lastFrame.getHeight(null) != frame.getHeight(null); + } + + private void resizeWindow(Image frame) { + int remoteWidth = frame.getWidth(null); + int remoteHeight = frame.getHeight(null); + Dimension screenSize = getDefaultToolkit().getScreenSize(); + int maxWidth = (int) screenSize.getWidth(); + int maxHeight = (int) screenSize.getHeight(); + if (remoteWidth <= maxWidth && remoteHeight < maxHeight) { + setWindowSize(remoteWidth, remoteHeight); + } else { + int scaledWidth; + int scaledHeight; + if (remoteWidth >= remoteHeight) { + scaledWidth = maxWidth; + scaledHeight = (int) (remoteHeight * ((double) maxWidth / remoteWidth)); + } else { + scaledHeight = maxHeight; + scaledWidth = (int) (remoteWidth * ((double) maxHeight / remoteHeight)); + } + setWindowSize(scaledWidth, scaledHeight); + } + setLocation(0, 0); + } + + private void setWindowSize(int width, int height) { + getContentPane().setPreferredSize(new Dimension(width, height)); + pack(); + } + + private int scaleMouseX(int x) { + if (lastFrame == null) { + return x; + } + return (int) (x * ((double) lastFrame.getWidth(null) / getContentPane().getWidth())); + } + + private int scaleMouseY(int y) { + if (lastFrame == null) { + return y; + } + return (int) (y * ((double) lastFrame.getHeight(null) / getContentPane().getHeight())); + } + + public static void main(String[] args) { + invokeLater(() -> { + VernacularViewer viewer = new VernacularViewer(); + viewer.setVisible(true); + }); + } + +} \ No newline at end of file diff --git a/src/main/java/com/shinyhut/vernacular/client/ClientEventHandler.java b/src/main/java/com/shinyhut/vernacular/client/ClientEventHandler.java new file mode 100755 index 0000000..cc964fb --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/ClientEventHandler.java @@ -0,0 +1,130 @@ +package com.shinyhut.vernacular.client; + +import com.shinyhut.vernacular.client.exceptions.UnexpectedVncException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.messages.Encodable; +import com.shinyhut.vernacular.protocol.messages.FramebufferUpdateRequest; +import com.shinyhut.vernacular.protocol.messages.KeyEvent; +import com.shinyhut.vernacular.protocol.messages.PointerEvent; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.Consumer; + +import static com.shinyhut.vernacular.utils.KeySyms.keySym; +import static java.lang.Thread.sleep; +import static java.time.LocalDateTime.now; +import static java.time.temporal.ChronoUnit.MILLIS; +import static java.util.Collections.synchronizedList; +import static java.util.stream.IntStream.range; + +public class ClientEventHandler { + + private final VncSession session; + private final Consumer errorHandler; + + private final ReentrantLock outputLock = new ReentrantLock(true); + private boolean running; + + private int mouseX; + private int mouseY; + private final List buttons = synchronizedList(new ArrayList<>()); + + ClientEventHandler(VncSession session, Consumer errorHandler) { + this.session = session; + this.errorHandler = errorHandler; + range(0, 8).forEach(i -> buttons.add(false)); + } + + void start() { + running = true; + + new Thread(() -> { + try { + boolean firstRun = true; + while (running) { + if (timeForFramebufferUpdate()) { + requestFramebufferUpdate(!firstRun); + } + firstRun = false; + pause(); + } + } catch (IOException e) { + errorHandler.accept(new UnexpectedVncException(e)); + } finally { + stop(); + } + + }).start(); + + } + + void stop() { + running = false; + } + + void updateMouseButton(int button, boolean pressed) throws IOException { + buttons.set(button, pressed); + updateMouseStatus(); + } + + void moveMouse(int mouseX, int mouseY) throws IOException { + this.mouseX = mouseX; + this.mouseY = mouseY; + updateMouseStatus(); + } + + void keyPress(int keycode, char symbol, boolean pressed) throws IOException { + /*Optional keySym = keySym(keycode, symbol); + + if (keySym.isPresent()) { + KeyEvent message = new KeyEvent(keySym.get(), pressed); + sendMessage(message); + }*/ + + if (keycode != 0) { + KeyEvent message = new KeyEvent(keycode, pressed); + sendMessage(message); + } + } + + private void updateMouseStatus() throws IOException { + PointerEvent message = new PointerEvent(mouseX, mouseY, buttons); + sendMessage(message); + } + + private boolean timeForFramebufferUpdate() { + long updateInterval = 1000 / session.getConfig().getTargetFramesPerSecond(); + return session.getLastFramebufferUpdateTime() + .map(lastUpdate -> now().isAfter(lastUpdate.plus(updateInterval, MILLIS))) + .orElse(true); + } + + private void requestFramebufferUpdate(boolean incremental) throws IOException { + if (!incremental || session.getLastFramebufferUpdateTime().isPresent()) { + int width = session.getFramebufferWidth(); + int height = session.getFramebufferHeight(); + FramebufferUpdateRequest updateRequest = new FramebufferUpdateRequest(incremental, 0, 0, width, height); + sendMessage(updateRequest); + } + } + + private void sendMessage(Encodable message) throws IOException { + outputLock.lock(); + try { + message.encode(session.getOutputStream()); + } finally { + outputLock.unlock(); + } + } + + private void pause() { + try { + sleep(1l); + } catch (InterruptedException e) { + } + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/ServerEventHandler.java b/src/main/java/com/shinyhut/vernacular/client/ServerEventHandler.java new file mode 100755 index 0000000..3f08377 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/ServerEventHandler.java @@ -0,0 +1,82 @@ +package com.shinyhut.vernacular.client; + +import com.shinyhut.vernacular.client.exceptions.UnexpectedVncException; +import com.shinyhut.vernacular.client.exceptions.UnknownMessageTypeException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.client.rendering.Framebuffer; +import com.shinyhut.vernacular.protocol.messages.Bell; +import com.shinyhut.vernacular.protocol.messages.FramebufferUpdate; +import com.shinyhut.vernacular.protocol.messages.ServerCutText; + +import java.io.IOException; +import java.io.PushbackInputStream; +import java.util.function.Consumer; + +public class ServerEventHandler { + + private final VncSession session; + private final Consumer errorHandler; + private final Framebuffer framebuffer; + + private boolean running; + + ServerEventHandler(VncSession session, Consumer errorHandler) { + this.session = session; + this.errorHandler = errorHandler; + this.framebuffer = new Framebuffer(session); + } + + void start() { + PushbackInputStream in = new PushbackInputStream(session.getInputStream()); + + running = true; + + new Thread(() -> { + try { + int messageType; + while (running && ((messageType = in.read()) != -1)) { + in.unread(messageType); + + switch (messageType) { + case 0x00: + FramebufferUpdate framebufferUpdate = FramebufferUpdate.decode(in, session.getPixelFormat().getBitsPerPixel()); + framebuffer.processUpdate(framebufferUpdate); + break; + case 0x02: + Bell.decode(in); + Consumer bellListener = session.getConfig().getBellListener(); + if (bellListener != null) { + bellListener.accept(null); + } + break; + case 0x03: + ServerCutText cutText = ServerCutText.decode(in); + Consumer cutTextListener = session.getConfig().getServerCutTextListener(); + if (cutTextListener != null) { + cutTextListener.accept(cutText.getText()); + } + break; + default: + throw new UnknownMessageTypeException(messageType); + } + } + } catch (IOException e) { + if (running) { + errorHandler.accept(new UnexpectedVncException(e)); + } + } catch (VncException e) { + if (running) { + errorHandler.accept(e); + } + } finally { + stop(); + } + + }).start(); + } + + void stop() { + running = false; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/VernacularClient.java b/src/main/java/com/shinyhut/vernacular/client/VernacularClient.java new file mode 100755 index 0000000..7d227a1 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/VernacularClient.java @@ -0,0 +1,169 @@ +package com.shinyhut.vernacular.client; + +import com.shinyhut.vernacular.client.exceptions.UnexpectedVncException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.handshaking.Handshaker; +import com.shinyhut.vernacular.protocol.initialization.Initializer; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +public class VernacularClient { + + private final Handshaker handshaker; + private final Initializer initializer; + + private final VernacularConfig config; + + private VncSession session; + private ClientEventHandler clientEventHandler; + private ServerEventHandler serverEventHandler; + + private boolean running; + + /** + * Creates a new VNC client using the specified configuration object + * + * @param config The VNC client configuration + */ + public VernacularClient(VernacularConfig config) { + this.config = config; + this.handshaker = new Handshaker(); + this.initializer = new Initializer(); + } + + /** + * Starts the VNC client by connecting to the specified remote host and port + * + * @param host Remote host to connect to + * @param port Remote port to connect to + * @throws IllegalStateException if the client is already running + */ + public void start(String host, int port) { + + if (running) { + throw new IllegalStateException("VNC Client is already running"); + } + + running = true; + + try { + createSession(host, port); + + clientEventHandler = new ClientEventHandler(session, this::handleError); + serverEventHandler = new ServerEventHandler(session, this::handleError); + + serverEventHandler.start(); + clientEventHandler.start(); + } catch (IOException e) { + handleError(new UnexpectedVncException(e)); + } catch (VncException e) { + handleError(e); + } + + } + + /** + * Stops the VNC client + */ + public void stop() { + running = false; + if (serverEventHandler != null) { + serverEventHandler.stop(); + } + if (clientEventHandler != null) { + clientEventHandler.stop(); + } + if (session != null) { + session.kill(); + } + } + + /** + * Notify the remote server the client has moved the mouse to the specified co-ordinates + * + * @param x The X co-ordinate + * @param y The Y co-ordinate + */ + public void moveMouse(int x, int y) { + if (clientEventHandler != null) { + try { + clientEventHandler.moveMouse(x, y); + } catch (IOException e) { + handleError(new UnexpectedVncException(e)); + } + } + } + + /** + * Updates the status (i.e. pressed or not pressed) of the specified mouse button. + * + * Note: to indicate a mouse 'click', call this method twice in rapid succession, first with pressed = true, + * then with pressed = false + * + * @param button The mouse button number (1-3) + * @param pressed Is the mouse button currently 'pressed'? + */ + public void updateMouseButton(int button, boolean pressed) { + if (clientEventHandler != null) { + try { + clientEventHandler.updateMouseButton(button, pressed); + } catch (IOException e) { + handleError(new UnexpectedVncException(e)); + } + } + } + + /** + * Updates the status (i.e. pressed or not pressed) of the specified key. + * + * Note: to indicate typical key press followed by an immediate release, call this method twice in rapid + * succession, first with pressed = true, then with pressed = false + * + * @param keycode The keycode for the key being modified (@see java.awt.event.KeyEvent KeyEvent) + * @param symbol If the key is 'printable', specify the intended character representation. Otherwise set to 'null' + * @param pressed Is the key currently 'pressed'? + */ + public void keyPress(int keycode, char symbol, boolean pressed) { + if (clientEventHandler != null) { + try { + clientEventHandler.keyPress(keycode, symbol, pressed); + } catch (IOException e) { + handleError(new UnexpectedVncException(e)); + } + } + } + + /** + * Is the client currently running? + * + * @return true if the client is currently running, false otherwise + */ + public boolean isRunning() { + return running; + } + + private void createSession(String host, int port) throws IOException, VncException { + Socket socket = new Socket(host, port); + InputStream in = socket.getInputStream(); + OutputStream out = socket.getOutputStream(); + session = new VncSession(host, port, config, in, out); + + handshaker.handshake(session); + initializer.initialise(session); + } + + private void handleError(VncException e) { + notifyErrorListeners(e); + stop(); + } + + private void notifyErrorListeners(VncException e) { + if (config.getErrorListener() != null) { + config.getErrorListener().accept(e); + } + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/VernacularConfig.java b/src/main/java/com/shinyhut/vernacular/client/VernacularConfig.java new file mode 100755 index 0000000..260d699 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/VernacularConfig.java @@ -0,0 +1,141 @@ +package com.shinyhut.vernacular.client; + +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.client.rendering.ColorDepth; + +import java.awt.*; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import static com.shinyhut.vernacular.client.rendering.ColorDepth.BPP_8; + +public class VernacularConfig { + + private Supplier passwordSupplier; + private Consumer errorListener; + private Consumer framebufferUpdateListener; + private Consumer bellListener; + private Consumer serverCutTextListener; + private boolean shared = true; + private int targetFramesPerSecond = 30; + private ColorDepth colorDepth = BPP_8; + + public Supplier getPasswordSupplier() { + return passwordSupplier; + } + + /** + * Specifies a Supplier which will be called to find the VNC password if the remote host requires authentication. + * Most implementations will prompt the user to enter their password and return it immediately + * + * @param passwordSupplier A Supplier which when invoked will return the user's VNC password + */ + public void setPasswordSupplier(Supplier passwordSupplier) { + this.passwordSupplier = passwordSupplier; + } + + public Consumer getErrorListener() { + return errorListener; + } + + /** + * Specifies a Consumer which will be passed a reference to any Exception which occurs during execution of the + * VNC client. Most implementations will handle the exception by displaying a graphical error message to the user. + * + * @param errorListener A Consumer which will receive any Exceptions which occur during the VNC session + */ + public void setErrorListener(Consumer errorListener) { + this.errorListener = errorListener; + } + + public Consumer getFramebufferUpdateListener() { + return framebufferUpdateListener; + } + + /** + * Specifies a Consumer which will be passed a java.awt.Image representing the remote server's desktop every time + * we receive a framebuffer update. Most implementations will simply display the updated image on screen. + * + * @param framebufferUpdateListener A Consumer which will receive Images representing the updated remote desktop + */ + public void setFramebufferUpdateListener(Consumer framebufferUpdateListener) { + this.framebufferUpdateListener = framebufferUpdateListener; + } + + public Consumer getServerCutTextListener() { + return serverCutTextListener; + } + + /** + * Specifies a Consumer which will be invoked when the sever wants to store text in the clipboard + * + * @param serverCutTextListener A Consumer which will be invoked when the sever wants to store text in the clipboard + */ + public void setServerCutTextListener(Consumer serverCutTextListener) { + this.serverCutTextListener = serverCutTextListener; + } + + public Consumer getBellListener() { + return bellListener; + } + + /** + * Specifies a Consumer which will be invoked when the server triggers an alert sound + * + * @param bellListener A Consumer which will be notified when the server triggers an alert sound + */ + public void setBellListener(Consumer bellListener) { + this.bellListener = bellListener; + } + + public boolean isShared() { + return shared; + } + + /** + * Specifies whether we should request 'shared' access to the remote server. If this is set to false, most servers + * will disconnect any other clients as soon as we connect. + * + * Default: true + * + * @param shared Should we request shared access to the remote server? + */ + public void setShared(boolean shared) { + this.shared = shared; + } + + public int getTargetFramesPerSecond() { + return targetFramesPerSecond; + } + + /** + * Sets the target number of frames per second we wish to receive from the remote server. Note that this is the + * maximum number of framebuffer updates we will request per second. The server does not have to honour our + * requests. The higher the number of frames per second, the more bandwidth we will consume. + * + * Default: 30 + * + * @param targetFramesPerSecond The number of frames per second we want to receive from the remote server + */ + public void setTargetFramesPerSecond(int targetFramesPerSecond) { + this.targetFramesPerSecond = targetFramesPerSecond; + } + + public ColorDepth getColorDepth() { + return colorDepth; + } + + /** + * Specifies the colour depth to request from the remote server. Note that the greater the colour depth, the more + * bandwidth we will consume. + * + * Default: 8 bits per pixel + * + * @see com.shinyhut.vernacular.client.rendering.ColorDepth ColorDepth + * + * @param colorDepth The colour depth for rendering the remote desktop + */ + public void setColorDepth(ColorDepth colorDepth) { + this.colorDepth = colorDepth; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/VncSession.java b/src/main/java/com/shinyhut/vernacular/client/VncSession.java new file mode 100755 index 0000000..397b642 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/VncSession.java @@ -0,0 +1,99 @@ +package com.shinyhut.vernacular.client; + +import com.shinyhut.vernacular.protocol.messages.PixelFormat; +import com.shinyhut.vernacular.protocol.messages.ServerInit; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.time.LocalDateTime; +import java.util.Optional; + +public class VncSession { + + private final String host; + private final int port; + private final VernacularConfig config; + private final InputStream inputStream; + private final OutputStream outputStream; + + private ServerInit serverInit; + private PixelFormat pixelFormat; + + private int framebufferWidth; + private int framebufferHeight; + + private LocalDateTime lastFramebufferUpdateTime; + + public VncSession(String host, int port, VernacularConfig config, InputStream inputStream, OutputStream outputStream) { + this.host = host; + this.port = port; + this.config = config; + this.inputStream = inputStream; + this.outputStream = outputStream; + } + + public InputStream getInputStream() { + return inputStream; + } + + public OutputStream getOutputStream() { + return outputStream; + } + + public VernacularConfig getConfig() { + return config; + } + + public ServerInit getServerInit() { + return serverInit; + } + + public void setServerInit(ServerInit serverInit) { + this.serverInit = serverInit; + } + + public PixelFormat getPixelFormat() { + return pixelFormat; + } + + public void setPixelFormat(PixelFormat pixelFormat) { + this.pixelFormat = pixelFormat; + } + + public Optional getLastFramebufferUpdateTime() { + return Optional.ofNullable(lastFramebufferUpdateTime); + } + + public void setLastFramebufferUpdateTime(LocalDateTime lastFramebufferUpdateTime) { + this.lastFramebufferUpdateTime = lastFramebufferUpdateTime; + } + + public int getFramebufferWidth() { + return framebufferWidth; + } + + public void setFramebufferWidth(int framebufferWidth) { + this.framebufferWidth = framebufferWidth; + } + + public int getFramebufferHeight() { + return framebufferHeight; + } + + public void setFramebufferHeight(int framebufferHeight) { + this.framebufferHeight = framebufferHeight; + } + + public void kill() { + try { + inputStream.close(); + } catch (IOException e) { + } finally { + try { + outputStream.close(); + } catch (IOException e) { + } + } + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationFailedException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationFailedException.java new file mode 100755 index 0000000..88e0a0c --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationFailedException.java @@ -0,0 +1,16 @@ +package com.shinyhut.vernacular.client.exceptions; + +public class AuthenticationFailedException extends VncException { + + private final String serverMessage; + + public AuthenticationFailedException(String serverMessage) { + super("Authentication failed. The server returned the following extra information: " + serverMessage); + this.serverMessage = serverMessage; + } + + public String getServerMessage() { + return serverMessage; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationRequiredException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationRequiredException.java new file mode 100755 index 0000000..c58bd41 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/AuthenticationRequiredException.java @@ -0,0 +1,8 @@ +package com.shinyhut.vernacular.client.exceptions; + +public class AuthenticationRequiredException extends VncException { + + public AuthenticationRequiredException() { + super("Server requires authentication but no password supplier was provided"); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/HandshakingFailedException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/HandshakingFailedException.java new file mode 100755 index 0000000..7298577 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/HandshakingFailedException.java @@ -0,0 +1,16 @@ +package com.shinyhut.vernacular.client.exceptions; + +public class HandshakingFailedException extends VncException { + + private final String serverMessage; + + public HandshakingFailedException(String serverMessage) { + super("VNC handshaking failed. The server returned the following error message: " + serverMessage); + this.serverMessage = serverMessage; + } + + public String getServerMessage() { + return serverMessage; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/InvalidMessageException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/InvalidMessageException.java new file mode 100755 index 0000000..436dd96 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/InvalidMessageException.java @@ -0,0 +1,18 @@ +package com.shinyhut.vernacular.client.exceptions; + +import static java.lang.String.format; + +public class InvalidMessageException extends VncException { + + private final String messageType; + + public InvalidMessageException(String messageType) { + super(format("The server sent an invalid '%s' message", messageType)); + + this.messageType = messageType; + } + + public String getMessageType() { + return messageType; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/NoSupportedSecurityTypesException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/NoSupportedSecurityTypesException.java new file mode 100755 index 0000000..9eec9ed --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/NoSupportedSecurityTypesException.java @@ -0,0 +1,9 @@ +package com.shinyhut.vernacular.client.exceptions; + +public class NoSupportedSecurityTypesException extends VncException { + + public NoSupportedSecurityTypesException() { + super("The server does not support any VNC security types supported by this client"); + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/UnexpectedVncException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnexpectedVncException.java new file mode 100755 index 0000000..470c05f --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnexpectedVncException.java @@ -0,0 +1,9 @@ +package com.shinyhut.vernacular.client.exceptions; + +public class UnexpectedVncException extends VncException { + + public UnexpectedVncException(Throwable cause) { + super("An unexpected exception occured: " + cause.getClass().getSimpleName(), cause); + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/UnknownMessageTypeException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnknownMessageTypeException.java new file mode 100755 index 0000000..5b2aff2 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnknownMessageTypeException.java @@ -0,0 +1,19 @@ +package com.shinyhut.vernacular.client.exceptions; + +import static java.lang.String.format; + +public class UnknownMessageTypeException extends VncException { + + private final int messageType; + + public int getMessageType() { + return messageType; + } + + public UnknownMessageTypeException(int messageType) { + super(format("Received unexpected message type: %s", messageType)); + + this.messageType = messageType; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedEncodingException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedEncodingException.java new file mode 100755 index 0000000..fe1bb24 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedEncodingException.java @@ -0,0 +1,18 @@ +package com.shinyhut.vernacular.client.exceptions; + +import static java.lang.String.format; + +public class UnsupportedEncodingException extends VncException { + + private final int encodingType; + + public int getEncodingType() { + return encodingType; + } + + public UnsupportedEncodingException(int encodingType) { + super(format("Unsupported encoding type: %d", encodingType)); + + this.encodingType = encodingType; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedProtocolVersionException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedProtocolVersionException.java new file mode 100755 index 0000000..f4c48dd --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/UnsupportedProtocolVersionException.java @@ -0,0 +1,37 @@ +package com.shinyhut.vernacular.client.exceptions; + +import static java.lang.String.format; + +public class UnsupportedProtocolVersionException extends VncException { + + private final int serverMajor; + private final int serverMinor; + private final int requiredMajor; + private final int requiredMinor; + + public UnsupportedProtocolVersionException(int serverMajor, int serverMinor, int minMajor, int minMinor) { + super(format("The server supports protocol version %d.%d. We require version %d.%d", + serverMajor, serverMinor, minMajor, minMinor)); + + this.serverMajor = serverMajor; + this.serverMinor = serverMinor; + this.requiredMajor = minMajor; + this.requiredMinor = minMinor; + } + + public int getServerMajor() { + return serverMajor; + } + + public int getServerMinor() { + return serverMinor; + } + + public int getRequiredMajor() { + return requiredMajor; + } + + public int getRequiredMinor() { + return requiredMinor; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/exceptions/VncException.java b/src/main/java/com/shinyhut/vernacular/client/exceptions/VncException.java new file mode 100755 index 0000000..98ed6f1 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/exceptions/VncException.java @@ -0,0 +1,20 @@ +package com.shinyhut.vernacular.client.exceptions; + +public abstract class VncException extends Exception { + + public VncException() { + + } + + public VncException(String message) { + super(message); + } + + public VncException(String message, Throwable cause) { + super(message, cause); + } + + public VncException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/ColorDepth.java b/src/main/java/com/shinyhut/vernacular/client/rendering/ColorDepth.java new file mode 100755 index 0000000..d46eb7b --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/ColorDepth.java @@ -0,0 +1,65 @@ +package com.shinyhut.vernacular.client.rendering; + +public enum ColorDepth { + + /** 8 bits per pixel **/ + BPP_8(8, 8, 7, 7, 3, 5, 2, 0), + + /** 16 bits per pixel **/ + BPP_16(16, 16, 31, 63, 31, 11, 5, 0), + + /** 24 bits per pixel **/ + BPP_24(32, 24, 255, 255, 255, 16, 8, 0); + + private final int bitsPerPixel; + private final int depth; + private final int redMax; + private final int blueMax; + private final int greenMax; + private final int redShift; + private final int blueShift; + private final int greenShift; + + ColorDepth(int bitsPerPixel, int depth, int redMax, int blueMax, int greenMax, int redShift, int blueShift, int greenShift) { + this.bitsPerPixel = bitsPerPixel; + this.depth = depth; + this.redMax = redMax; + this.blueMax = blueMax; + this.greenMax = greenMax; + this.redShift = redShift; + this.blueShift = blueShift; + this.greenShift = greenShift; + } + + public int getBitsPerPixel() { + return bitsPerPixel; + } + + public int getDepth() { + return depth; + } + + public int getRedMax() { + return redMax; + } + + public int getBlueMax() { + return blueMax; + } + + public int getGreenMax() { + return greenMax; + } + + public int getRedShift() { + return redShift; + } + + public int getBlueShift() { + return blueShift; + } + + public int getGreenShift() { + return greenShift; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/Framebuffer.java b/src/main/java/com/shinyhut/vernacular/client/rendering/Framebuffer.java new file mode 100755 index 0000000..08bf377 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/Framebuffer.java @@ -0,0 +1,72 @@ +package com.shinyhut.vernacular.client.rendering; + +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.client.rendering.renderers.CopyRectRenderer; +import com.shinyhut.vernacular.client.rendering.renderers.RRERenderer; +import com.shinyhut.vernacular.client.rendering.renderers.RawRenderer; +import com.shinyhut.vernacular.client.rendering.renderers.Renderer; +import com.shinyhut.vernacular.protocol.messages.Encoding; +import com.shinyhut.vernacular.protocol.messages.FramebufferUpdate; +import com.shinyhut.vernacular.protocol.messages.Rectangle; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.function.Consumer; + +import static com.shinyhut.vernacular.protocol.messages.Encoding.*; +import static java.awt.image.BufferedImage.TYPE_INT_RGB; +import static java.time.LocalDateTime.now; + +public class Framebuffer { + + private static final Map RENDERERS = new ConcurrentHashMap<>(); + + static { + RENDERERS.put(RAW, new RawRenderer()); + RENDERERS.put(COPYRECT, new CopyRectRenderer()); + RENDERERS.put(RRE, new RRERenderer()); + } + + private final VncSession session; + + private BufferedImage frame; + + public Framebuffer(VncSession session) { + this.frame = new BufferedImage(session.getFramebufferWidth(), session.getFramebufferHeight(), TYPE_INT_RGB); + this.frame.setAccelerationPriority(1); + this.session = session; + } + + public void processUpdate(FramebufferUpdate update) throws VncException { + session.setLastFramebufferUpdateTime(now()); + for (Rectangle rectangle : update.getRectangles()) { + if (rectangle.getEncoding() == DESKTOP_SIZE) { + resizeFramebuffer(rectangle); + } else { + RENDERERS.get(rectangle.getEncoding()).render(frame, rectangle, session.getPixelFormat()); + } + } + paint(); + } + + public void paint() { + Consumer listener = session.getConfig().getFramebufferUpdateListener(); + if (listener != null) { + listener.accept(frame); + } + } + + private void resizeFramebuffer(Rectangle newSize) { + int width = newSize.getWidth(); + int height = newSize.getHeight(); + session.setFramebufferWidth(width); + session.setFramebufferHeight(height); + BufferedImage resized = new BufferedImage(width, height, TYPE_INT_RGB); + resized.getGraphics().drawImage(frame, 0, 0, null); + frame = resized; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/CopyRectRenderer.java b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/CopyRectRenderer.java new file mode 100755 index 0000000..25efbce --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/CopyRectRenderer.java @@ -0,0 +1,31 @@ +package com.shinyhut.vernacular.client.rendering.renderers; + +import com.shinyhut.vernacular.client.exceptions.UnexpectedVncException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.messages.PixelFormat; +import com.shinyhut.vernacular.protocol.messages.Rectangle; + +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.IOException; + +import static java.awt.image.BufferedImage.TYPE_INT_RGB; + +public class CopyRectRenderer implements Renderer { + + @Override + public void render(BufferedImage destination, Rectangle rectangle, PixelFormat pixelFormat) throws VncException { + try { + DataInput dataInput = new DataInputStream(new ByteArrayInputStream(rectangle.getPixelData())); + int srcX = dataInput.readUnsignedShort(); + int srcY = dataInput.readUnsignedShort(); + BufferedImage src = new BufferedImage(rectangle.getWidth(), rectangle.getHeight(), TYPE_INT_RGB); + destination.getSubimage(srcX, srcY, rectangle.getWidth(), rectangle.getHeight()).copyData(src.getRaster()); + destination.getGraphics().drawImage(src, rectangle.getX(), rectangle.getY(), null); + } catch (IOException e) { + throw new UnexpectedVncException(e); + } + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Pixel.java b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Pixel.java new file mode 100755 index 0000000..d07b7b0 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Pixel.java @@ -0,0 +1,26 @@ +package com.shinyhut.vernacular.client.rendering.renderers; + +public class Pixel { + + private final int red; + private final int green; + private final int blue; + + public Pixel(int red, int green, int blue) { + this.red = red; + this.green = green; + this.blue = blue; + } + + public int getRed() { + return red; + } + + public int getGreen() { + return green; + } + + public int getBlue() { + return blue; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/PixelDecoder.java b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/PixelDecoder.java new file mode 100755 index 0000000..c75d5d9 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/PixelDecoder.java @@ -0,0 +1,26 @@ +package com.shinyhut.vernacular.client.rendering.renderers; + +import com.shinyhut.vernacular.protocol.messages.PixelFormat; + +import java.math.BigInteger; + +public class PixelDecoder { + + public Pixel decode(byte[] bytes, PixelFormat pixelFormat) { + BigInteger value = new BigInteger(1, bytes); + + int red = value.shiftRight(pixelFormat.getRedShift()).intValue() & pixelFormat.getRedMax(); + int green = value.shiftRight(pixelFormat.getGreenShift()).intValue() & pixelFormat.getGreenMax(); + int blue = value.shiftRight(pixelFormat.getBlueShift()).intValue() & pixelFormat.getBlueMax(); + + red = stretch(red, pixelFormat.getRedMax()); + green = stretch(green, pixelFormat.getGreenMax()); + blue = stretch(blue, pixelFormat.getBlueMax()); + + return new Pixel(red, green, blue); + } + + private static int stretch(int value, int max) { + return (int) (value * ((double) 255 / max)); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RRERenderer.java b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RRERenderer.java new file mode 100755 index 0000000..d627b28 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RRERenderer.java @@ -0,0 +1,57 @@ +package com.shinyhut.vernacular.client.rendering.renderers; + +import com.shinyhut.vernacular.client.exceptions.UnexpectedVncException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.messages.PixelFormat; +import com.shinyhut.vernacular.protocol.messages.Rectangle; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.IOException; + +public class RRERenderer implements Renderer { + + private final PixelDecoder pixelDecoder; + + public RRERenderer() { + this.pixelDecoder = new PixelDecoder(); + } + + @Override + public void render(BufferedImage destination, Rectangle rectangle, PixelFormat pixelFormat) throws VncException { + byte[] pixelData = rectangle.getPixelData(); + int bytesPerPixel = pixelFormat.getBitsPerPixel() / 8; + + DataInput dataInput = new DataInputStream(new ByteArrayInputStream(pixelData)); + + try { + int numberOfSubrectangles = dataInput.readInt(); + byte[] bgColourBytes = new byte[bytesPerPixel]; + dataInput.readFully(bgColourBytes); + Pixel bgColour = pixelDecoder.decode(bgColourBytes, pixelFormat); + + Graphics2D graphic = (Graphics2D) destination.getGraphics(); + + graphic.setColor(new Color(bgColour.getRed(), bgColour.getGreen(), bgColour.getBlue())); + graphic.fillRect(rectangle.getX(), rectangle.getY(), rectangle.getWidth(), rectangle.getHeight()); + + for (int i = 0; i < numberOfSubrectangles; i++) { + byte[] bytes = new byte[bytesPerPixel]; + dataInput.readFully(bytes); + int x = dataInput.readUnsignedShort(); + int y = dataInput.readUnsignedShort(); + int width = dataInput.readUnsignedShort(); + int height = dataInput.readUnsignedShort(); + Pixel colour = pixelDecoder.decode(bytes, pixelFormat); + graphic.setColor(new Color(colour.getRed(), colour.getGreen(), colour.getBlue())); + graphic.fillRect(x + rectangle.getX(), y + rectangle.getY(), width, height); + } + } catch (IOException e) { + throw new UnexpectedVncException(e); + } + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RawRenderer.java b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RawRenderer.java new file mode 100755 index 0000000..0fd4ff8 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/RawRenderer.java @@ -0,0 +1,40 @@ +package com.shinyhut.vernacular.client.rendering.renderers; + +import com.shinyhut.vernacular.protocol.messages.PixelFormat; +import com.shinyhut.vernacular.protocol.messages.Rectangle; + +import java.awt.*; +import java.awt.image.BufferedImage; + +import static java.lang.System.arraycopy; + +public class RawRenderer implements Renderer { + + private final PixelDecoder pixelDecoder; + + public RawRenderer() { + this.pixelDecoder = new PixelDecoder(); + } + + @Override + public void render(BufferedImage destination, Rectangle rectangle, PixelFormat pixelFormat) { + byte[] pixelData = rectangle.getPixelData(); + int bytesPerPixel = pixelFormat.getBitsPerPixel() / 8; + + int x = rectangle.getX(); + int y = rectangle.getY(); + + for (int i = 0; i <= pixelData.length - bytesPerPixel; i += bytesPerPixel) { + byte[] bytes = new byte[bytesPerPixel]; + arraycopy(pixelData, i, bytes, 0, bytes.length); + Pixel pixel = pixelDecoder.decode(bytes, pixelFormat); + destination.setRGB(x, y, new Color(pixel.getRed(), pixel.getGreen(), pixel.getBlue()).getRGB()); + x++; + if (x == rectangle.getX() + rectangle.getWidth()) { + x = rectangle.getX(); + y++; + } + } + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Renderer.java b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Renderer.java new file mode 100755 index 0000000..5997278 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/client/rendering/renderers/Renderer.java @@ -0,0 +1,11 @@ +package com.shinyhut.vernacular.client.rendering.renderers; + +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.messages.PixelFormat; +import com.shinyhut.vernacular.protocol.messages.Rectangle; + +import java.awt.image.BufferedImage; + +public interface Renderer { + void render(BufferedImage destination, Rectangle rectangle, PixelFormat pixelFormat) throws VncException; +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/auth/NoSecurityHandler.java b/src/main/java/com/shinyhut/vernacular/protocol/auth/NoSecurityHandler.java new file mode 100755 index 0000000..e784b4d --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/auth/NoSecurityHandler.java @@ -0,0 +1,16 @@ +package com.shinyhut.vernacular.protocol.auth; + +import com.shinyhut.vernacular.client.VncSession; + +import java.io.DataOutputStream; +import java.io.IOException; + +public class NoSecurityHandler implements SecurityHandler { + + private static final byte NO_SECURITY_TYPE = 0x01; + + @Override + public void authenticate(VncSession session) throws IOException { + new DataOutputStream(session.getOutputStream()).writeByte(NO_SECURITY_TYPE); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/auth/SecurityHandler.java b/src/main/java/com/shinyhut/vernacular/protocol/auth/SecurityHandler.java new file mode 100755 index 0000000..4a9742d --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/auth/SecurityHandler.java @@ -0,0 +1,10 @@ +package com.shinyhut.vernacular.protocol.auth; + +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.exceptions.VncException; + +import java.io.IOException; + +public interface SecurityHandler { + void authenticate(VncSession session) throws VncException, IOException; +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/auth/VncAuthenticationHandler.java b/src/main/java/com/shinyhut/vernacular/protocol/auth/VncAuthenticationHandler.java new file mode 100755 index 0000000..54e8cf1 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/auth/VncAuthenticationHandler.java @@ -0,0 +1,75 @@ +package com.shinyhut.vernacular.protocol.auth; + +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.exceptions.AuthenticationRequiredException; +import com.shinyhut.vernacular.client.exceptions.UnexpectedVncException; +import com.shinyhut.vernacular.client.exceptions.VncException; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.Charset; +import java.security.GeneralSecurityException; +import java.util.function.Supplier; + +import static com.shinyhut.vernacular.utils.ByteUtils.reverseBits; +import static java.lang.System.arraycopy; +import static javax.crypto.Cipher.ENCRYPT_MODE; + +public class VncAuthenticationHandler implements SecurityHandler { + + private static final byte VNC_AUTHENTICATION_TYPE = 0x02; + + @Override + public void authenticate(VncSession session) throws VncException, IOException { + Supplier passwordSupplier = session.getConfig().getPasswordSupplier(); + + if (passwordSupplier == null) { + throw new AuthenticationRequiredException(); + } + + InputStream in = session.getInputStream(); + OutputStream out = session.getOutputStream(); + + try { + requestVncAuthentication(out); + byte[] challenge = readChallenge(in); + sendResponse(out, challenge, passwordSupplier.get()); + } catch (GeneralSecurityException e) { + throw new UnexpectedVncException(e); + } + } + + private static void requestVncAuthentication(OutputStream out) throws IOException { + out.write(VNC_AUTHENTICATION_TYPE); + } + + private static byte[] readChallenge(InputStream in) throws IOException { + DataInputStream data = new DataInputStream(in); + byte[] challenge = new byte[16]; + data.readFully(challenge); + return challenge; + } + + private static void sendResponse(OutputStream out, byte[] challenge, String password) throws IOException, GeneralSecurityException { + Cipher des = Cipher.getInstance("DES/ECB/NoPadding"); + des.init(ENCRYPT_MODE, buildKey(password)); + out.write(des.doFinal(challenge)); + } + + private static SecretKeySpec buildKey(String password) { + byte[] key = keyBytes(password); + return new SecretKeySpec(key, 0, key.length, "DES"); + } + + private static byte[] keyBytes(String password) { + byte[] passwordBytes = password.getBytes(Charset.forName("US-ASCII")); + byte[] key = new byte[8]; + arraycopy(passwordBytes, 0, key, 0, passwordBytes.length < key.length ? passwordBytes.length : key.length); + return reverseBits(key); + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/handshaking/Handshaker.java b/src/main/java/com/shinyhut/vernacular/protocol/handshaking/Handshaker.java new file mode 100755 index 0000000..e7c2ddd --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/handshaking/Handshaker.java @@ -0,0 +1,32 @@ +package com.shinyhut.vernacular.protocol.handshaking; + +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.exceptions.AuthenticationFailedException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.auth.SecurityHandler; +import com.shinyhut.vernacular.protocol.messages.SecurityResult; + +import java.io.IOException; + +public class Handshaker { + + private final ProtocolVersionNegotiator protocolVersionNegotiator; + private final SecurityTypeNegotiator securityTypeNegotiator; + + public Handshaker() { + protocolVersionNegotiator = new ProtocolVersionNegotiator(); + securityTypeNegotiator = new SecurityTypeNegotiator(); + } + + public void handshake(VncSession session) throws VncException, IOException { + protocolVersionNegotiator.negotiate(session); + + SecurityHandler securityHandler = securityTypeNegotiator.negotiate(session); + securityHandler.authenticate(session); + SecurityResult securityResult = SecurityResult.decode(session.getInputStream()); + + if (!securityResult.isSuccess()) { + throw new AuthenticationFailedException(securityResult.getErrorMessage()); + } + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/handshaking/ProtocolVersionNegotiator.java b/src/main/java/com/shinyhut/vernacular/protocol/handshaking/ProtocolVersionNegotiator.java new file mode 100755 index 0000000..2efef3f --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/handshaking/ProtocolVersionNegotiator.java @@ -0,0 +1,28 @@ +package com.shinyhut.vernacular.protocol.handshaking; + +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.exceptions.UnsupportedProtocolVersionException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.messages.ProtocolVersion; + +import java.io.IOException; + +public class ProtocolVersionNegotiator { + + private static final int MIN_MAJOR_VERSION = 3; + private static final int MIN_MINOR_VERSION = 8; + + public void negotiate(VncSession session) throws IOException, VncException { + ProtocolVersion serverVersion = ProtocolVersion.decode(session.getInputStream()); + if (isSupported(serverVersion)) { + ProtocolVersion clientVersion = new ProtocolVersion(MIN_MAJOR_VERSION, MIN_MINOR_VERSION); + clientVersion.encode(session.getOutputStream()); + } else { + throw new UnsupportedProtocolVersionException(serverVersion.getMajor(), serverVersion.getMinor(), MIN_MAJOR_VERSION, MIN_MINOR_VERSION); + } + } + + private boolean isSupported(ProtocolVersion serverVersion) { + return serverVersion.getMajor() >= MIN_MAJOR_VERSION && serverVersion.getMinor() >= MIN_MINOR_VERSION; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/handshaking/SecurityTypeNegotiator.java b/src/main/java/com/shinyhut/vernacular/protocol/handshaking/SecurityTypeNegotiator.java new file mode 100755 index 0000000..e0e88fc --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/handshaking/SecurityTypeNegotiator.java @@ -0,0 +1,33 @@ +package com.shinyhut.vernacular.protocol.handshaking; + +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.exceptions.NoSupportedSecurityTypesException; +import com.shinyhut.vernacular.client.exceptions.VncException; +import com.shinyhut.vernacular.protocol.auth.NoSecurityHandler; +import com.shinyhut.vernacular.protocol.auth.SecurityHandler; +import com.shinyhut.vernacular.protocol.auth.VncAuthenticationHandler; +import com.shinyhut.vernacular.protocol.messages.ServerSecurityTypes; + +import java.io.IOException; + +import static com.shinyhut.vernacular.protocol.messages.SecurityType.NONE; +import static com.shinyhut.vernacular.protocol.messages.SecurityType.VNC; + +public class SecurityTypeNegotiator { + + public SecurityHandler negotiate(VncSession session) throws IOException, VncException { + ServerSecurityTypes serverSecurityTypes = ServerSecurityTypes.decode(session.getInputStream()); + SecurityHandler securityHandler; + + if (serverSecurityTypes.getSecurityTypes().contains(NONE)) { + securityHandler = new NoSecurityHandler(); + } else if (serverSecurityTypes.getSecurityTypes().contains(VNC)) { + securityHandler = new VncAuthenticationHandler(); + } else { + throw new NoSupportedSecurityTypesException(); + } + + return securityHandler; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/initialization/Initializer.java b/src/main/java/com/shinyhut/vernacular/protocol/initialization/Initializer.java new file mode 100755 index 0000000..758ff58 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/initialization/Initializer.java @@ -0,0 +1,50 @@ +package com.shinyhut.vernacular.protocol.initialization; + +import com.shinyhut.vernacular.client.VernacularConfig; +import com.shinyhut.vernacular.client.VncSession; +import com.shinyhut.vernacular.client.rendering.ColorDepth; +import com.shinyhut.vernacular.protocol.messages.*; + +import java.io.IOException; +import java.io.OutputStream; + +import static com.shinyhut.vernacular.protocol.messages.Encoding.*; + +public class Initializer { + + public void initialise(VncSession session) throws IOException { + OutputStream out = session.getOutputStream(); + + ClientInit clientInit = new ClientInit(session.getConfig().isShared()); + clientInit.encode(out); + + ServerInit serverInit = ServerInit.decode(session.getInputStream()); + session.setServerInit(serverInit); + session.setFramebufferWidth(serverInit.getFramebufferWidth()); + session.setFramebufferHeight(serverInit.getFramebufferHeight()); + + VernacularConfig config = session.getConfig(); + ColorDepth colorDepth = config.getColorDepth(); + + PixelFormat pixelFormat = new PixelFormat( + colorDepth.getBitsPerPixel(), + colorDepth.getDepth(), + true, + true, + colorDepth.getRedMax(), + colorDepth.getGreenMax(), + colorDepth.getBlueMax(), + colorDepth.getRedShift(), + colorDepth.getGreenShift(), + colorDepth.getBlueShift()); + + SetPixelFormat setPixelFormat = new SetPixelFormat(pixelFormat); + SetEncodings setEncodings = new SetEncodings(RRE, COPYRECT, RAW, DESKTOP_SIZE); + + setPixelFormat.encode(out); + setEncodings.encode(out); + + session.setPixelFormat(pixelFormat); + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/Bell.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/Bell.java new file mode 100755 index 0000000..1374813 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/Bell.java @@ -0,0 +1,14 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; + +public class Bell { + + public static Bell decode(InputStream in) throws IOException { + DataInputStream dataInput = new DataInputStream(in); + dataInput.readFully(new byte[1]); + return new Bell(); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/ClientInit.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/ClientInit.java new file mode 100755 index 0000000..d2e9e55 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/ClientInit.java @@ -0,0 +1,22 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.IOException; +import java.io.OutputStream; + +public class ClientInit implements Encodable { + + private final boolean shared; + + public ClientInit(boolean shared) { + this.shared = shared; + } + + public boolean isShared() { + return shared; + } + + @Override + public void encode(OutputStream out) throws IOException { + out.write(shared ? new byte[]{1} : new byte[]{0}); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/Encodable.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/Encodable.java new file mode 100755 index 0000000..1d5abe9 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/Encodable.java @@ -0,0 +1,8 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.IOException; +import java.io.OutputStream; + +public interface Encodable { + void encode(OutputStream out) throws IOException; +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/Encoding.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/Encoding.java new file mode 100755 index 0000000..1dc7b3d --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/Encoding.java @@ -0,0 +1,31 @@ +package com.shinyhut.vernacular.protocol.messages; + +import com.shinyhut.vernacular.client.exceptions.UnsupportedEncodingException; + +import static java.util.Arrays.stream; + +public enum Encoding { + + RAW(0), + COPYRECT(1), + RRE(2), + DESKTOP_SIZE(-223) + ; + + private int code; + + Encoding(int code) { + this.code = code; + } + + public int getCode() { + return code; + } + + public static Encoding resolve(int code) throws UnsupportedEncodingException { + return stream(values()) + .filter(e -> e.code == code) + .findFirst() + .orElseThrow(() -> new UnsupportedEncodingException(code)); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/ErrorMessage.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/ErrorMessage.java new file mode 100755 index 0000000..e39486e --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/ErrorMessage.java @@ -0,0 +1,28 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +public class ErrorMessage { + + private final String message; + + private ErrorMessage(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public static ErrorMessage decode(InputStream input) throws IOException { + DataInputStream dataInput = new DataInputStream(input); + int errorMessageLength = dataInput.readInt(); + byte[] errorMessageBytes = new byte[errorMessageLength]; + dataInput.readFully(errorMessageBytes); + return new ErrorMessage(new String(errorMessageBytes, Charset.forName("US-ASCII"))); + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdate.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdate.java new file mode 100755 index 0000000..14caf20 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdate.java @@ -0,0 +1,33 @@ +package com.shinyhut.vernacular.protocol.messages; + +import com.shinyhut.vernacular.client.exceptions.UnsupportedEncodingException; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +public class FramebufferUpdate { + + private final List rectangles; + + public FramebufferUpdate(List rectangles) { + this.rectangles = rectangles; + } + + public List getRectangles() { + return rectangles; + } + + public static FramebufferUpdate decode(InputStream in, int bitsPerPixel) throws UnsupportedEncodingException, IOException { + DataInputStream dataInput = new DataInputStream(in); + dataInput.readFully(new byte[2]); + int numberOfRectangles = dataInput.readUnsignedShort(); + List rectangles = new ArrayList<>(); + for (int i = 0; i < numberOfRectangles; i++) { + rectangles.add(Rectangle.decode(in, bitsPerPixel)); + } + return new FramebufferUpdate(rectangles); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdateRequest.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdateRequest.java new file mode 100755 index 0000000..188bad5 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/FramebufferUpdateRequest.java @@ -0,0 +1,34 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +public class FramebufferUpdateRequest implements Encodable { + + private final boolean incremental; + private final int x; + private final int y; + private final int width; + private final int height; + + public FramebufferUpdateRequest(boolean incremental, int x, int y, int width, int height) { + this.incremental = incremental; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + @Override + public void encode(OutputStream out) throws IOException { + DataOutput dataOutput = new DataOutputStream(out); + dataOutput.writeByte(0x03); + dataOutput.writeBoolean(incremental); + dataOutput.writeShort(x); + dataOutput.writeShort(y); + dataOutput.writeShort(width); + dataOutput.writeShort(height); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/KeyEvent.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/KeyEvent.java new file mode 100755 index 0000000..de5b1ed --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/KeyEvent.java @@ -0,0 +1,26 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +public class KeyEvent implements Encodable { + + private final int keysym; + private final boolean pressed; + + public KeyEvent(int keysym, boolean pressed) { + this.keysym = keysym; + this.pressed = pressed; + } + + @Override + public void encode(OutputStream out) throws IOException { + DataOutput dataOutput = new DataOutputStream(out); + dataOutput.writeByte(0x04); + dataOutput.writeBoolean(pressed); + dataOutput.write(new byte[]{0x00, 0x00}); + dataOutput.writeInt(keysym); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/PixelFormat.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/PixelFormat.java new file mode 100755 index 0000000..3f4b1a4 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/PixelFormat.java @@ -0,0 +1,103 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.*; + +public class PixelFormat implements Encodable { + + private final int bitsPerPixel; + private final int depth; + private final boolean bigEndian; + private final boolean trueColour; + private final int redMax; + private final int greenMax; + private final int blueMax; + private final int redShift; + private final int greenShift; + private final int blueShift; + + public PixelFormat(int bitsPerPixel, int depth, boolean bigEndian, boolean trueColour, int redMax, + int greenMax, int blueMax, int redShift, int greenShift, int blueShift) { + this.bitsPerPixel = bitsPerPixel; + this.depth = depth; + this.bigEndian = bigEndian; + this.trueColour = trueColour; + this.redMax = redMax; + this.greenMax = greenMax; + this.blueMax = blueMax; + this.redShift = redShift; + this.greenShift = greenShift; + this.blueShift = blueShift; + } + + public int getBitsPerPixel() { + return bitsPerPixel; + } + + public int getDepth() { + return depth; + } + + public boolean isBigEndian() { + return bigEndian; + } + + public boolean isTrueColour() { + return trueColour; + } + + public int getRedMax() { + return redMax; + } + + public int getGreenMax() { + return greenMax; + } + + public int getBlueMax() { + return blueMax; + } + + public int getRedShift() { + return redShift; + } + + public int getGreenShift() { + return greenShift; + } + + public int getBlueShift() { + return blueShift; + } + + @Override + public void encode(OutputStream out) throws IOException { + DataOutput dataOutput = new DataOutputStream(out); + dataOutput.writeByte(bitsPerPixel); + dataOutput.writeByte(depth); + dataOutput.writeBoolean(bigEndian); + dataOutput.writeBoolean(trueColour); + dataOutput.writeShort(redMax); + dataOutput.writeShort(greenMax); + dataOutput.writeShort(blueMax); + dataOutput.writeByte(redShift); + dataOutput.writeByte(greenShift); + dataOutput.writeByte(blueShift); + dataOutput.write(new byte[3]); + } + + public static PixelFormat decode(InputStream in) throws IOException { + DataInputStream dataInput = new DataInputStream(in); + int bpp = dataInput.readUnsignedByte(); + int depth = dataInput.readUnsignedByte(); + boolean bigEndian = dataInput.readBoolean(); + boolean trueColour = dataInput.readBoolean(); + int readMax = dataInput.readUnsignedShort(); + int greenMax = dataInput.readUnsignedShort(); + int blueMax = dataInput.readUnsignedShort(); + int redShift = dataInput.readUnsignedByte(); + int greenShift = dataInput.readUnsignedByte(); + int blueShift = dataInput.readUnsignedByte(); + dataInput.readFully(new byte[3]); + return new PixelFormat(bpp, depth, bigEndian, trueColour, readMax, greenMax, blueMax, redShift, greenShift, blueShift); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/PointerEvent.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/PointerEvent.java new file mode 100755 index 0000000..e49c103 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/PointerEvent.java @@ -0,0 +1,39 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; + +public class PointerEvent implements Encodable { + + private final int x; + private final int y; + private final List buttons; + + public PointerEvent(int x, int y, List buttons) { + this.x = x; + this.y = y; + this.buttons = buttons; + } + + @Override + public void encode(OutputStream out) throws IOException { + DataOutput dataOutput = new DataOutputStream(out); + dataOutput.write(0x05); + dataOutput.write(buttonMask()); + dataOutput.writeShort(x); + dataOutput.writeShort(y); + } + + private byte buttonMask() { + byte mask = 0x00; + for (int i = 0; i < 8 && i < buttons.size(); i++) { + if (buttons.get(i)) { + mask |= (0x80 >> (7 - i)); + } + } + return mask; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/ProtocolVersion.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/ProtocolVersion.java new file mode 100755 index 0000000..9c419d0 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/ProtocolVersion.java @@ -0,0 +1,52 @@ +package com.shinyhut.vernacular.protocol.messages; + +import com.shinyhut.vernacular.client.exceptions.InvalidMessageException; +import com.shinyhut.vernacular.client.exceptions.VncException; + +import java.io.*; +import java.nio.charset.Charset; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static java.lang.Integer.parseInt; +import static java.lang.String.format; + +public class ProtocolVersion implements Encodable { + + private static final Pattern PROTOCOL_VERSION_MESSAGE = Pattern.compile("RFB (\\d{3})\\.(\\d{3})"); + + private final int major; + private final int minor; + + public ProtocolVersion(int major, int minor) { + this.major = major; + this.minor = minor; + } + + public int getMajor() { + return major; + } + + public int getMinor() { + return minor; + } + + @Override + public void encode(OutputStream out) throws IOException { + out.write(format("RFB %03d.%03d\n", major, minor).getBytes(Charset.forName("US-ASCII"))); + } + + public static ProtocolVersion decode(InputStream in) throws VncException, IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(in)); + String message = br.readLine(); + Matcher matcher = PROTOCOL_VERSION_MESSAGE.matcher(message); + if (matcher.matches()) { + String major = matcher.group(1); + String minor = matcher.group(2); + return new ProtocolVersion(parseInt(major), parseInt(minor)); + } else { + throw new InvalidMessageException("ProtocolVersion"); + } + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/Rectangle.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/Rectangle.java new file mode 100755 index 0000000..5811ce9 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/Rectangle.java @@ -0,0 +1,89 @@ +package com.shinyhut.vernacular.protocol.messages; + +import com.shinyhut.vernacular.client.exceptions.UnsupportedEncodingException; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; + +import static java.lang.System.arraycopy; + +public class Rectangle { + + private final int x; + private final int y; + private final int width; + private final int height; + private final Encoding encoding; + private final byte[] pixelData; + + public Rectangle(int x, int y, int width, int height, Encoding encoding, byte[] pixelData) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.encoding = encoding; + this.pixelData = pixelData; + } + + public int getX() { + return x; + } + + public int getY() { + return y; + } + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public Encoding getEncoding() { + return encoding; + } + + public byte[] getPixelData() { + return pixelData; + } + + public static Rectangle decode(InputStream in, int bitsPerPixel) throws UnsupportedEncodingException, IOException { + DataInputStream dataInput = new DataInputStream(in); + int x = dataInput.readUnsignedShort(); + int y = dataInput.readUnsignedShort(); + int width = dataInput.readUnsignedShort(); + int height = dataInput.readUnsignedShort(); + int encodingType = dataInput.readInt(); + Encoding encoding = Encoding.resolve(encodingType); + int bytesPerPixel = bitsPerPixel / 8; + byte[] pixelData; + switch (encoding) { + case DESKTOP_SIZE: + pixelData = new byte[0]; + break; + case RRE: + int subRecCount = dataInput.readInt(); + byte[] remaining = new byte[((bytesPerPixel + 8) * subRecCount) + bytesPerPixel]; + dataInput.readFully(remaining); + pixelData = new byte[remaining.length + 4]; + byte[] subRecCountBytes = ByteBuffer.allocate(4).putInt(subRecCount).array(); + arraycopy(subRecCountBytes, 0, pixelData, 0, subRecCountBytes.length); + arraycopy(remaining, 0, pixelData, 4, remaining.length); + break; + case COPYRECT: + pixelData = new byte[4]; + dataInput.readFully(pixelData); + break; + case RAW: + default: + pixelData = new byte[width * height * bytesPerPixel]; + dataInput.readFully(pixelData); + break; + } + return new Rectangle(x, y, width, height, encoding, pixelData); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityResult.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityResult.java new file mode 100755 index 0000000..15e7f5d --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityResult.java @@ -0,0 +1,44 @@ +package com.shinyhut.vernacular.protocol.messages; + +import com.shinyhut.vernacular.client.exceptions.AuthenticationFailedException; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; + +public class SecurityResult { + + private final boolean success; + private final String errorMessage; + + private SecurityResult(boolean success) { + this(success, null); + } + + private SecurityResult(boolean success, String errorMessage) { + this.success = success; + this.errorMessage = errorMessage; + } + + public boolean isSuccess() { + return success; + } + + public String getErrorMessage() { + return errorMessage; + } + + public static SecurityResult decode(InputStream in) throws AuthenticationFailedException, IOException { + DataInputStream dataInput = new DataInputStream(in); + int resultCode = dataInput.readInt(); + SecurityResult result; + if (resultCode == 1) { + ErrorMessage errorMessage = ErrorMessage.decode(in); + result = new SecurityResult(false, errorMessage.getMessage()); + } else { + result = new SecurityResult(true); + } + return result; + } + +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityType.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityType.java new file mode 100755 index 0000000..674b8ba --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/SecurityType.java @@ -0,0 +1,8 @@ +package com.shinyhut.vernacular.protocol.messages; + +public enum SecurityType { + + INVALID, + NONE, + VNC +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerCutText.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerCutText.java new file mode 100755 index 0000000..6f1e009 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerCutText.java @@ -0,0 +1,29 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +public class ServerCutText { + + private final String text; + + public ServerCutText(String text) { + this.text = text; + } + + public String getText() { + return text; + } + + public static ServerCutText decode(InputStream in) throws IOException { + DataInputStream dataInput = new DataInputStream(in); + dataInput.readFully(new byte[4]); + int textLength = dataInput.readInt(); + byte[] textBytes = new byte[textLength]; + dataInput.readFully(textBytes); + String text = new String(textBytes, Charset.forName("ISO-8859-1")); + return new ServerCutText(text); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerInit.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerInit.java new file mode 100755 index 0000000..fbdcd4f --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerInit.java @@ -0,0 +1,49 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; + +public class ServerInit { + + private final int framebufferWidth; + private final int framebufferHeight; + private final PixelFormat pixelFormat; + private final String name; + + private ServerInit(int framebufferWidth, int framebufferHeight, PixelFormat pixelFormat, String name) { + this.framebufferWidth = framebufferWidth; + this.framebufferHeight = framebufferHeight; + this.pixelFormat = pixelFormat; + this.name = name; + } + + public int getFramebufferWidth() { + return framebufferWidth; + } + + public int getFramebufferHeight() { + return framebufferHeight; + } + + public PixelFormat getPixelFormat() { + return pixelFormat; + } + + public String getName() { + return name; + } + + public static ServerInit decode(InputStream in) throws IOException { + DataInputStream dataInput = new DataInputStream(in); + int framebufferWidth = dataInput.readUnsignedShort(); + int framebufferHeight = dataInput.readUnsignedShort(); + PixelFormat pixelFormat = PixelFormat.decode(in); + int nameLength = dataInput.readInt(); + byte[] nameBytes = new byte[nameLength]; + dataInput.readFully(nameBytes); + String name = new String(nameBytes, Charset.forName("US-ASCII")); + return new ServerInit(framebufferWidth, framebufferHeight, pixelFormat, name); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerSecurityTypes.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerSecurityTypes.java new file mode 100755 index 0000000..a8dab9c --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/ServerSecurityTypes.java @@ -0,0 +1,43 @@ +package com.shinyhut.vernacular.protocol.messages; + +import com.shinyhut.vernacular.client.exceptions.HandshakingFailedException; + +import java.io.DataInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +public class ServerSecurityTypes { + + private final List securityTypes; + + private ServerSecurityTypes(List securityTypes) { + this.securityTypes = securityTypes; + } + + public List getSecurityTypes() { + return securityTypes; + } + + public static ServerSecurityTypes decode(InputStream in) throws HandshakingFailedException, IOException { + DataInputStream dataInput = new DataInputStream(in); + byte typeCount = dataInput.readByte(); + + if (typeCount == 0) { + ErrorMessage errorMessage = ErrorMessage.decode(in); + throw new HandshakingFailedException(errorMessage.getMessage()); + } + + List types = new ArrayList<>(); + + for (int i = 0; i < typeCount; i++) { + byte type = dataInput.readByte(); + if (type < SecurityType.values().length) { + types.add(SecurityType.values()[type]); + } + } + + return new ServerSecurityTypes(types); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/SetEncodings.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/SetEncodings.java new file mode 100755 index 0000000..7fbf5ab --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/SetEncodings.java @@ -0,0 +1,29 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.List; + +import static java.util.Arrays.asList; + +public class SetEncodings implements Encodable { + + private final List encodings; + + public SetEncodings(Encoding... encodings) { + this.encodings = asList(encodings); + } + + @Override + public void encode(OutputStream out) throws IOException { + DataOutputStream dataOutput = new DataOutputStream(out); + dataOutput.writeByte(0x02); + dataOutput.writeByte(0x00); + dataOutput.writeShort(encodings.size()); + for (Encoding encoding : encodings) { + dataOutput.writeInt(encoding.getCode()); + } + + } +} diff --git a/src/main/java/com/shinyhut/vernacular/protocol/messages/SetPixelFormat.java b/src/main/java/com/shinyhut/vernacular/protocol/messages/SetPixelFormat.java new file mode 100755 index 0000000..98b79d2 --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/protocol/messages/SetPixelFormat.java @@ -0,0 +1,20 @@ +package com.shinyhut.vernacular.protocol.messages; + +import java.io.IOException; +import java.io.OutputStream; + +public class SetPixelFormat implements Encodable { + + private final PixelFormat pixelFormat; + + public SetPixelFormat(PixelFormat pixelFormat) { + this.pixelFormat = pixelFormat; + } + + @Override + public void encode(OutputStream out) throws IOException { + out.write(0x00); + out.write(new byte[3]); + pixelFormat.encode(out); + } +} diff --git a/src/main/java/com/shinyhut/vernacular/utils/ByteUtils.java b/src/main/java/com/shinyhut/vernacular/utils/ByteUtils.java new file mode 100755 index 0000000..02e7d5f --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/utils/ByteUtils.java @@ -0,0 +1,23 @@ +package com.shinyhut.vernacular.utils; + +public class ByteUtils { + + private ByteUtils() { + } + + public static byte[] reverseBits(byte[] b) { + byte[] result = new byte[b.length]; + for (int i = 0; i < b.length; i++) { + result[i] = reverseBits(b[i]); + } + return result; + } + + public static byte reverseBits(byte input) { + byte result = 0x00; + for (int i = 0; i < 8; i++) { + result |= ((byte) ((input & (0x01 << i)) >>> i) << 7 - i); + } + return result; + } +} diff --git a/src/main/java/com/shinyhut/vernacular/utils/KeySyms.java b/src/main/java/com/shinyhut/vernacular/utils/KeySyms.java new file mode 100755 index 0000000..b82316b --- /dev/null +++ b/src/main/java/com/shinyhut/vernacular/utils/KeySyms.java @@ -0,0 +1,55 @@ +package com.shinyhut.vernacular.utils; + +import java.util.Map; +import java.util.Optional; +import java.util.concurrent.ConcurrentHashMap; + +import static java.awt.event.KeyEvent.*; + +public class KeySyms { + + private static final Map OVERRIDES = new ConcurrentHashMap<>(); + + static { + OVERRIDES.put(VK_BACK_SPACE, 0xff08); + OVERRIDES.put(VK_TAB, 0xff09); + OVERRIDES.put(VK_ENTER, 0xff0d); + OVERRIDES.put(VK_ESCAPE, 0xff1b); + OVERRIDES.put(VK_INSERT, 0xff63); + OVERRIDES.put(VK_DELETE, 0xffff); + OVERRIDES.put(VK_HOME, 0xff50); + OVERRIDES.put(VK_END, 0xff57); + OVERRIDES.put(VK_PAGE_UP, 0xff55); + OVERRIDES.put(VK_PAGE_DOWN, 0xff56); + OVERRIDES.put(VK_LEFT, 0xff51); + OVERRIDES.put(VK_UP, 0xff52); + OVERRIDES.put(VK_RIGHT, 0xff53); + OVERRIDES.put(VK_DOWN, 0xff54); + OVERRIDES.put(VK_F1, 0xffbe); + OVERRIDES.put(VK_F2, 0xffbf); + OVERRIDES.put(VK_F3, 0xffc0); + OVERRIDES.put(VK_F4, 0xffc1); + OVERRIDES.put(VK_F5, 0xffc2); + OVERRIDES.put(VK_F6, 0xffc3); + OVERRIDES.put(VK_F7, 0xffc4); + OVERRIDES.put(VK_F8, 0xffc5); + OVERRIDES.put(VK_F9, 0xffc6); + OVERRIDES.put(VK_F10, 0xffc7); + OVERRIDES.put(VK_F11, 0xffc8); + OVERRIDES.put(VK_F12, 0xffc9); + OVERRIDES.put(VK_SHIFT, 0xffe1); + OVERRIDES.put(VK_CONTROL, 0xffe3); + OVERRIDES.put(VK_META, 0xffe7); + OVERRIDES.put(VK_ALT, 0xffe9); + } + + public static Optional keySym(int keyCode, char symbol) { + if (OVERRIDES.containsKey(keyCode)) { + return Optional.of(OVERRIDES.get(keyCode)); + } + if (symbol != CHAR_UNDEFINED) { + return Optional.of((int) symbol); + } + return Optional.empty(); + } +} diff --git a/src/main/java/li/netcube/mcvm/CommonProxy.java b/src/main/java/li/netcube/mcvm/CommonProxy.java new file mode 100755 index 0000000..4831fcd --- /dev/null +++ b/src/main/java/li/netcube/mcvm/CommonProxy.java @@ -0,0 +1,86 @@ +package li.netcube.mcvm; + +import li.netcube.mcvm.common.blocks.Blocks; +import li.netcube.mcvm.common.items.*; +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.registry.GameRegistry; + +@Mod.EventBusSubscriber +public class CommonProxy { + + @SubscribeEvent + public static void registerBlocks(RegistryEvent.Register event) { + event.getRegistry().registerAll(Blocks.computer); + event.getRegistry().registerAll(Blocks.display); + GameRegistry.registerTileEntity(ComputerContainerTileEntity.class, MCVM.MODID + ":computerblock"); + } + + @SubscribeEvent + public static void registerItemBlocks(RegistryEvent.Register event) { + event.getRegistry().registerAll(new ItemBlock(Blocks.computer).setRegistryName(Blocks.computer.getRegistryName())); + event.getRegistry().registerAll(new ItemBlock(Blocks.display).setRegistryName(Blocks.display.getRegistryName())); + } + + @SubscribeEvent + public static void registerItems(RegistryEvent.Register event) { + event.getRegistry().register(Items.cdrom); + event.getRegistry().register(Items.floppy); + event.getRegistry().register(Items.harddisk); + event.getRegistry().register(Items.memory1); + event.getRegistry().register(Items.memory2); + + event.getRegistry().register(Items.pcb); + event.getRegistry().register(Items.ic); + event.getRegistry().register(Items.ic2); + event.getRegistry().register(Items.ic3); + event.getRegistry().register(Items.cpu); + event.getRegistry().register(Items.mainboard); + event.getRegistry().register(Items.cddrive); + event.getRegistry().register(Items.floppydrive); + event.getRegistry().register(Items.diskplatter); + + event.getRegistry().register(Items.nic_e1000); + event.getRegistry().register(Items.nic_rtl8139); + event.getRegistry().register(Items.nic_ne2k); + } + + @SubscribeEvent + public static void registerRenders(ModelRegistryEvent event) { + registerRender(Items.cdrom); + registerRender(Items.floppy); + registerRender(Items.harddisk); + registerRender(Items.memory1); + registerRender(Items.memory2); + + registerRender(Items.pcb); + registerRender(Items.ic); + registerRender(Items.ic2); + registerRender(Items.ic3); + registerRender(Items.cpu); + registerRender(Items.mainboard); + registerRender(Items.cddrive); + registerRender(Items.floppydrive); + registerRender(Items.diskplatter); + + registerRender(Items.nic_e1000); + registerRender(Items.nic_rtl8139); + registerRender(Items.nic_ne2k); + + registerRender(Item.getItemFromBlock(Blocks.computer)); + registerRender(Item.getItemFromBlock(Blocks.display)); + } + + private static void registerRender(Item item) { + ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation( item.getRegistryName(), "inventory")); + } + +} diff --git a/src/main/java/li/netcube/mcvm/MCVM.java b/src/main/java/li/netcube/mcvm/MCVM.java new file mode 100755 index 0000000..e3cd827 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/MCVM.java @@ -0,0 +1,277 @@ +package li.netcube.mcvm; + +import com.mojang.realmsclient.client.FileDownload; +import li.netcube.mcvm.server.commands.*; +import li.netcube.mcvm.common.ui.GuiProxy; +import li.netcube.mcvm.util.*; +import li.netcube.mcvm.util.vm.VirtualMachine; +import li.netcube.mcvm.util.vm.commands.ICommandParser; +import li.netcube.mcvm.util.vm.commands.RedstoneCommandParser; +import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventHandler; +import net.minecraftforge.fml.common.event.*; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.relauncher.Side; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.SystemUtils; +import org.apache.logging.log4j.Logger; +import scala.collection.parallel.ParSeqLike; + +import javax.annotation.Nullable; +import java.awt.*; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; +import java.util.ArrayList; + +@Mod(modid = MCVM.MODID, name = MCVM.NAME, version = "@VERSION@", useMetadata = true) +public class MCVM +{ + + public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel("mcvm"); + + public static final String MODID = "mcvm"; + public static final String NAME = "Minecraft Virtual Machines"; + + public static Logger logger; + + public static ArrayList virtualMachines = new ArrayList<>(); + + public static ArrayList registeredCommandParsers = new ArrayList<>(); + + public static IniFile modConfig; + + @Mod.Instance + public static MCVM instance; + + @EventHandler + public void preInit(FMLPreInitializationEvent event) + { + logger = event.getModLog(); + } + + @EventHandler + public void init(FMLInitializationEvent event) + { + NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiProxy()); + INSTANCE.registerMessage(VMControlMessageHandler.class, VMControlMessage.class, 0, Side.SERVER); + + ProgressBarWindow installProgress = null; + + if (!GraphicsEnvironment.isHeadless()) { + installProgress = new ProgressBarWindow(); + } + + if (installProgress != null) { + installProgress.createAndShowGUI(); + } + + boolean osIsCompatible = false; + + if (SystemUtils.IS_OS_WINDOWS) { + try { + File destinationFile = new File("mcvmRedistWin.zip"); + File fileHash = new File("mcvmRedistWin.md5"); + URL redistURL = new URL("https://netcube.li/mcvm/mcvmRedistWin.zip"); + URL hashURL = new URL("https://netcube.li/mcvm/getHash.php?filename=mcvmRedistWin.zip"); + updateRedistPackage(installProgress, destinationFile, fileHash, redistURL, hashURL); + osIsCompatible = true; + } catch (Exception ignored) {} + } else if (SystemUtils.IS_OS_LINUX) { + try { + File destinationFile = new File("mcvmRedistLinux.zip"); + File fileHash = new File("mcvmRedistLinux.md5"); + URL redistURL = new URL("https://netcube.li/mcvm/mcvmRedistLinux.zip"); + URL hashURL = new URL("https://netcube.li/mcvm/getHash.php?filename=mcvmRedistLinux.zip"); + updateRedistPackage(installProgress, destinationFile, fileHash, redistURL, hashURL); + osIsCompatible = true; + } catch (Exception ignored) {} + } + + if (installProgress != null) { + installProgress.closeWindow(); + } + + registerCommandParser(new RedstoneCommandParser()); + + File iniFile = new File("mcvm.ini"); + + try { + if (!iniFile.exists()) + { + iniFile.createNewFile(); + BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(iniFile)); + bufferedWriter.write("[VirtualMachine]\r\n"); + bufferedWriter.write("customArguments=\n\n"); + bufferedWriter.flush(); + bufferedWriter.close(); + } + modConfig = new IniFile("mcvm.ini"); + } catch (Exception ignored) {} + + } + + private void updateRedistPackage(@Nullable ProgressBarWindow installProgress, File destinationFile, File fileHash, URL redistURL, URL hashURL) { + String remote_md5 = ""; + String local_md5 = ""; + + if (destinationFile.exists()) { + + if (fileHash.exists()) { + fileHash.delete(); + } + + try { + if (installProgress != null) { + installProgress.setStatus("Downloading MD5..."); + } else { + logger.info("Downloading MD5..."); + } + FileDownloadHelper hashDownloadHelper = new FileDownloadHelper(hashURL, fileHash); + Thread downloadThread = new Thread() { + public void run() { + while (hashDownloadHelper.getStatus() == FileDownloadHelper.DOWNLOADING) { + if (installProgress != null) { + installProgress.setProgress((int) hashDownloadHelper.getProgress()); + } + logger.info((int)hashDownloadHelper.getProgress()); + try { + Thread.sleep(500); + } catch (Exception ignored) {} + } + } + }; + downloadThread.run(); + downloadThread.join(); + } catch (Exception e) { + e.printStackTrace(); + } + + if (installProgress != null) { + installProgress.setStatus("Checking MD5..."); + } else { + logger.info("Checking MD5..."); + } + + try { + if (fileHash.exists()) { + FileInputStream fis = new FileInputStream(fileHash); + byte[] data = new byte[(int) fileHash.length()]; + fis.read(data); + fis.close(); + + remote_md5 = new String(data, "UTF-8"); + } + } catch (Exception e) { + } + + try { + FileInputStream fis = new FileInputStream(destinationFile); + local_md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis); + fis.close(); + } catch (Exception e) { + } + } + + + if (!destinationFile.exists() || !remote_md5.equals(local_md5)) { + try { + if (destinationFile.exists()) { + destinationFile.delete(); + } + + if (installProgress != null) { + installProgress.setStatus("Downloading MCVM Redistributable..."); + } else { + logger.info("Downloading MCVM Redistributable..."); + } + + FileDownloadHelper fileDownloadHelper = new FileDownloadHelper(redistURL, destinationFile); + Thread downloadThread = new Thread() { + public void run() { + while (fileDownloadHelper.getStatus() == FileDownloadHelper.DOWNLOADING) { + if (installProgress != null) { + installProgress.setProgress((int) fileDownloadHelper.getProgress()); + } + logger.info((int)fileDownloadHelper.getProgress()); + try { + Thread.sleep(500); + } catch (Exception ignored) {} + } + } + }; + downloadThread.run(); + downloadThread.join(); + + if (installProgress != null) { + installProgress.setStatus("Extracting MCVM Redistributable..."); + } else { + logger.info("Extracting MCVM Redistributable..."); + } + + UnZipHelper unZipHelper = new UnZipHelper(destinationFile, new File(destinationFile.getAbsolutePath()).getParentFile()); + Thread extractThread = new Thread() { + public void run() { + while (unZipHelper.getStatus() == 0) { + if (installProgress != null) { + installProgress.setProgress((int) unZipHelper.getProgress()); + } + //logger.info(unZipHelper.getProgress()); + } + } + }; + extractThread.run(); + extractThread.join(); + + if (unZipHelper.getStatus() == -1) { + throw new java.io.IOException(); + } + } catch (Exception e) { + logger.fatal("Could not download/extract MCVM Redistributable! Mod will only work as client. (You can only play on a server)"); + e.printStackTrace(); + if (destinationFile.exists()) { + destinationFile.delete(); + } + } + } else { + if (installProgress != null) { + installProgress.setStatus("Latest MCVM Redistributable is installed! This is a good thing."); + } else { + logger.info("Latest MCVM Redistributable is installed! This is a good thing."); + } + } + } + + @EventHandler + public void serverLoad(FMLServerStartingEvent event) + { + // register server commands + //event.registerServerCommand(new createHDD()); //Removed: Should not be used! + event.registerServerCommand(new createCD()); + event.registerServerCommand(new createFLOPPY()); + } + + @EventHandler + public void serverStopping(FMLServerStoppingEvent event){ + while (virtualMachines.size() > 0) { + //System.out.println("Stopping VM... "); + VirtualMachine vm = virtualMachines.get(0); + virtualMachines.remove(0); + if (vm.isRunning()) { + vm.stop(); + } + } + } + + public static void registerCommandParser(ICommandParser commandParser) { + registeredCommandParsers.add(commandParser); + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/UsedUidData.java b/src/main/java/li/netcube/mcvm/UsedUidData.java new file mode 100755 index 0000000..cce1292 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/UsedUidData.java @@ -0,0 +1,102 @@ +package li.netcube.mcvm; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.storage.MapStorage; +import net.minecraft.world.storage.WorldSavedData; +import org.lwjgl.Sys; + +import java.util.ArrayList; +import java.util.Iterator; + +public class UsedUidData extends WorldSavedData{ + + private static final String IDENTIFIER = MCVM.MODID; + + private ArrayList usedUids = new ArrayList(); + + private UsedUidData() + { + this(IDENTIFIER); + } + + private UsedUidData(String parIdentifier) + { + super(parIdentifier); + markDirty(); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + // DEBUG + //System.out.println("WorldData readFromNBT"); + + usedUids = intArrayToList(nbt.getIntArray("usedUids")); + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound nbt) + { + // DEBUG + //System.out.println("MagicBeansWorldData writeToNBT"); + + nbt.setIntArray("usedUids", intListToArray(usedUids)); + + return nbt; + + } + + public static UsedUidData get(World world) + { + UsedUidData data = (UsedUidData) world.loadData(UsedUidData.class, IDENTIFIER); + if (data == null) + { + // DEBUG + //System.out.println("UsedUidData didn't exist so creating it"); + + data = new UsedUidData(); + world.setData(IDENTIFIER, data); + } + return data; + } + + public Integer getNextFree() { + //System.out.println(usedUids); + for (Integer i = 0; ; i++) { + if (!usedUids.contains(i)) { + usedUids.add(i); + //System.out.println(usedUids); + markDirty(); + return i; + } + } + } + + public void freeUid(Integer uid) { + //System.out.println(usedUids); + usedUids.remove(uid); + //System.out.println(usedUids); + markDirty(); + } + + private static int[] intListToArray(ArrayList integers) + { + int[] ret = new int[integers.size()]; + Iterator iterator = integers.iterator(); + for (int i = 0; i < ret.length; i++) + { + ret[i] = iterator.next(); + } + return ret; + } + + private static ArrayList intArrayToList(int integers[]) + { + ArrayList ret = new ArrayList(); + for (int i = 0; i < integers.length; i++) { + ret.add(integers[i]); + } + return ret; + } +} diff --git a/src/main/java/li/netcube/mcvm/client/creativeTabs/MCVM.java b/src/main/java/li/netcube/mcvm/client/creativeTabs/MCVM.java new file mode 100755 index 0000000..6a93af0 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/client/creativeTabs/MCVM.java @@ -0,0 +1,65 @@ +package li.netcube.mcvm.client.creativeTabs; + +import li.netcube.mcvm.common.blocks.Blocks; +import li.netcube.mcvm.common.items.Items; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +public class MCVM { + public static final CreativeTabs mcvmTab = new CreativeTabs("mcvm") { + @Override + public ItemStack getTabIconItem() { + return new ItemStack(Item.getItemFromBlock(Blocks.computer)); + } + + @Override @SideOnly(Side.CLIENT) + public void displayAllRelevantItems(NonNullList itemList) + { + super.displayAllRelevantItems(itemList); + + ItemStack cdromAlpineStandard = new ItemStack(Items.cdrom); + Items.cdrom.setFilename(cdromAlpineStandard, "shared/Alpine-3.8.1.iso"); + Items.cdrom.setType(cdromAlpineStandard, "CD"); + itemList.add(cdromAlpineStandard); + + ItemStack blankFloppy = new ItemStack(Items.floppy); + Items.floppy.setType(blankFloppy, "FD"); + itemList.add(blankFloppy); + + ItemStack blank4gHarddisk = new ItemStack(Items.harddisk); + Items.harddisk.setType(blank4gHarddisk, "HD"); + Items.harddisk.setSize(blank4gHarddisk, "4G"); + itemList.add(blank4gHarddisk); + + ItemStack blank8gHarddisk = new ItemStack(Items.harddisk); + Items.harddisk.setType(blank8gHarddisk, "HD"); + Items.harddisk.setSize(blank8gHarddisk, "8G"); + itemList.add(blank8gHarddisk); + + ItemStack blank16gHarddisk = new ItemStack(Items.harddisk); + Items.harddisk.setType(blank16gHarddisk, "HD"); + Items.harddisk.setSize(blank16gHarddisk, "16G"); + itemList.add(blank16gHarddisk); + + ItemStack blank32gHarddisk = new ItemStack(Items.harddisk); + Items.harddisk.setType(blank32gHarddisk, "HD"); + Items.harddisk.setSize(blank32gHarddisk, "32G"); + itemList.add(blank32gHarddisk); + + ItemStack blank64gHarddisk = new ItemStack(Items.harddisk); + Items.harddisk.setType(blank64gHarddisk, "HD"); + Items.harddisk.setSize(blank64gHarddisk, "64G"); + itemList.add(blank64gHarddisk); + + ItemStack blank128gHarddisk = new ItemStack(Items.harddisk); + Items.harddisk.setType(blank128gHarddisk, "HD"); + Items.harddisk.setSize(blank128gHarddisk, "128G"); + itemList.add(blank128gHarddisk); + + } + }; +} diff --git a/src/main/java/li/netcube/mcvm/client/rendering/renderEventHandler.java b/src/main/java/li/netcube/mcvm/client/rendering/renderEventHandler.java new file mode 100755 index 0000000..954ed4b --- /dev/null +++ b/src/main/java/li/netcube/mcvm/client/rendering/renderEventHandler.java @@ -0,0 +1,21 @@ +package li.netcube.mcvm.client.rendering; + +import li.netcube.mcvm.common.blocks.Blocks; +import net.minecraft.block.Block; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.client.event.RenderBlockOverlayEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +public class renderEventHandler { + @SubscribeEvent + public void renderOverlay(RenderBlockOverlayEvent event) + { + //if (event.getOverlayType() != RenderBlockOverlayEvent.OverlayType.WATER) + // return; + + Block target = event.getPlayer().getEntityWorld().getBlockState(event.getBlockPos()).getBlock(); + if (target != Blocks.display) + event.setCanceled(true); + } + +} diff --git a/src/main/java/li/netcube/mcvm/client/ui/DisplayGUI.java b/src/main/java/li/netcube/mcvm/client/ui/DisplayGUI.java new file mode 100755 index 0000000..dae11c0 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/client/ui/DisplayGUI.java @@ -0,0 +1,321 @@ +package li.netcube.mcvm.client.ui; + +import com.shinyhut.vernacular.client.VernacularClient; +import com.shinyhut.vernacular.client.VernacularConfig; +import com.shinyhut.vernacular.client.exceptions.AuthenticationFailedException; +import com.shinyhut.vernacular.client.rendering.ColorDepth; +import li.netcube.mcvm.MCVM; +//import li.netcube.mcvm.common.ui.TexturedButton; +import li.netcube.mcvm.common.ui.TexturedButton; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiLabel; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.lwjgl.input.Keyboard; +import org.lwjgl.input.Mouse; +import org.lwjgl.opengl.GL11; + +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayList; +import java.util.function.Supplier; + +import static li.netcube.mcvm.util.vnc.Keymap.keyConvert; + +@SideOnly(Side.CLIENT) +public class DisplayGUI extends GuiScreen { + private VernacularConfig config; + private VernacularClient client; + private Image lastFrame = null; + private DynamicTexture frame = null; + + private BufferedImage emptyImage; + + private static final ResourceLocation theWall = new ResourceLocation(MCVM.MODID, "textures/gui/display.png"); + + public Integer VNCPort; + public String VNCPassword; + + private int retryCounter = 5; + + private TexturedButton closeButton; + private TexturedButton ctrlAltDelButton; + + private Integer lastW=0, lastH=0, lastVW=0, lastVH=0; + + @Override + public void initGui() { + super.initGui(); + + if (!Minecraft.getMinecraft().world.isRemote) { + return; + } + + emptyImage = new BufferedImage(720, 400, BufferedImage.TYPE_INT_RGB); + Graphics2D g2d = emptyImage.createGraphics(); + g2d.setColor(Color.BLACK); + g2d.fillRect(0,0,720,400); + + closeButton = new TexturedButton(1, 0, 0, 11, 11, theWall, 118,11, 118, 22, 118,0, "Close"); + ctrlAltDelButton = new TexturedButton(2, 0, 0, 11, 11, theWall, 129,11, 129, 22, 129,0, "Send Ctrl+Alt+Del"); + + this.buttonList.add(closeButton); + this.buttonList.add(ctrlAltDelButton); + + config = new VernacularConfig(); + config.setColorDepth(ColorDepth.BPP_24); + config.setErrorListener(e -> { + MCVM.logger.error(e.getMessage()); + MCVM.logger.info(e.getClass()); + }); + config.setTargetFramesPerSecond(30); + config.setFramebufferUpdateListener(this::renderFrame); + config.setPasswordSupplier(new Supplier() { + @Override + public String get() { + return VNCPassword; + } + }); + client = new VernacularClient(config); + connect(); + + + Keyboard.enableRepeatEvents(true); + } + + public void connect() { + if (client.isRunning()) {client.stop();} + if (Minecraft.getMinecraft().isIntegratedServerRunning()) { + client.start("localhost", VNCPort); + //System.out.println("localhost:" + VNCPort); + } else { + client.start(Minecraft.getMinecraft().getCurrentServerData().serverIP.split(":")[0], VNCPort); + //System.out.println(Minecraft.getMinecraft().getCurrentServerData().serverIP.split(":")[0] + ":" + VNCPort); + } + } + + @Override + public void onGuiClosed() + { + try + { + client.stop(); + } catch (Exception ignored) {} + Keyboard.enableRepeatEvents(false); + } + + + @Override + protected void actionPerformed(GuiButton button) throws IOException { + switch (button.id) { + case 1: + mc.player.closeScreen(); + break; + case 2: + sendCtrlAltDel(); + break; + } + } + + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + this.drawDefaultBackground(); + int w = this.width; + int h = this.height; + + + if (client == null || !client.isRunning()) { + lastFrame = emptyImage; + } + + if (lastFrame != null) { + if (frame != null) { + frame.deleteGlTexture(); + } + + frame = new DynamicTexture((BufferedImage) lastFrame); + + GL11.glBindTexture(GL11.GL_TEXTURE_2D, frame.getGlTextureId()); + //GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + h = lastFrame.getHeight(null) / 2; + w = lastFrame.getWidth(null) / 2; + DisplayDrawTexturedModalRect((this.width - w)/2, (this.height - h)/2, w, h); + } + + int imgX = (this.width - w)/2; + int imgY = (this.height - h)/2; + + GL11.glEnable(GL11.GL_BLEND); + mc.getTextureManager().bindTexture(theWall); + + for (int x = imgX+5; x < imgX + w - 5; x++) { + drawTexturedModalRect(x, imgY-9, 56, 0, 1, 14); // Top + drawTexturedModalRect(x, imgY+h-5, 70, 0, 1, 14); // Bottom + } + + for (int y = imgY+5; y < imgY + h - 5; y++) { + drawTexturedModalRect(imgX-9, y, 28, 0, 14, 1); // Left + drawTexturedModalRect(imgX+w-5, y, 42, 0, 14, 1); // Right + } + + drawTexturedModalRect(imgX-9, imgY-9, 0, 0, 14, 14); // Top Left + drawTexturedModalRect(imgX+w-5, imgY-9, 14, 0, 14, 14); // Top Right + drawTexturedModalRect(imgX-9, imgY+h-5, 0, 14, 14, 14); // Bottom Left + drawTexturedModalRect(imgX+w-5, imgY+h-5, 14, 14, 14, 14); // Bottom Right + drawTexturedModalRect(imgX+w-25, imgY-19, 84, 0, 34, 13); // Button Bar + + + checkMouse((this.width - w), h, w*2, h*2); + + if (lastW != w || lastH != h || lastVW != this.width || lastVH != this.height) { + if (closeButton != null) { + closeButton.setX(imgX + w - 7); + closeButton.setY(imgY - 14); + } + + if (ctrlAltDelButton != null) { + ctrlAltDelButton.setX(imgX + w - 20); + ctrlAltDelButton.setY(imgY - 14); + } + lastW = w; + lastH = h; + lastVW = this.width; + lastVH = this.height; + } + + super.drawScreen(mouseX, mouseY, partialTicks); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } + + private void renderFrame(Image rawFrame) { + lastFrame = rawFrame; + } + + public void DisplayDrawTexturedModalRect(int x, int y, int width, int height) + { + Tessellator tessellator = Tessellator.getInstance(); + BufferBuilder vertexBuffer = tessellator.getBuffer(); + vertexBuffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); + vertexBuffer.pos(x, y+height, 0D).tex(0.0D, 1.0D).endVertex(); + vertexBuffer.pos(x + width, y+height, 0D).tex(1.0D, 1.0D).endVertex(); + vertexBuffer.pos(x + width, y, 0D).tex(1.0D, 0.0D).endVertex(); + vertexBuffer.pos(x, y, 0D).tex(0.0D, 0.0D).endVertex(); + tessellator.draw(); + } + + int lastMouseX = 0; + int lastMouseY = 0; + boolean lastMouseL = false; + boolean lastMouseM = false; + boolean lastMouseR = false; + + public void checkMouse(int bX, int bY, int bW, int bH) { + if (client != null && client.isRunning()) { + int mouseX = Mouse.getX(); + int mouseY = Mouse.getY(); + if (lastMouseX != mouseX || lastMouseY != mouseY) { + lastMouseY = mouseY; lastMouseX = mouseX; + + mouseY = this.height - mouseY; + + mouseX = mouseX - bX; + mouseY = mouseY + bY; + + mouseX = scaleMouseX(mouseX, bW, bW); + mouseY = scaleMouseY(mouseY, bH, bH); + + + if (mouseX < 0) {mouseX = 0;} + if (mouseX > bW) {mouseX = bW;} + if (mouseY < 0) {mouseY = 0;} + if (mouseY > bH) {mouseY = bH;} + + client.moveMouse(mouseX, mouseY); + } + + boolean mouseL = Mouse.isButtonDown(0); + if (lastMouseL != mouseL) { + client.updateMouseButton(0, mouseL); + lastMouseL = mouseL; + } + + boolean mouseR = Mouse.isButtonDown(1); + if (lastMouseR != mouseR) { + client.updateMouseButton(2, mouseR); + lastMouseR = mouseR; + } + + boolean mouseM = Mouse.isButtonDown(2); + if (lastMouseM != mouseM) { + client.updateMouseButton(1, mouseM); + lastMouseM = mouseM; + } + } + } + + @Override + protected void keyTyped(char ch, int key) throws IOException + {} + + + @Override + public void handleMouseInput() throws IOException + { + super.handleMouseInput(); + } + + + @Override + public void handleKeyboardInput() throws IOException + { + int key = Keyboard.getEventKey(); + int ch = Keyboard.getEventCharacter(); + + if (client != null && client.isRunning()) { + client.keyPress(keyConvert(key, ch), '\u0000', Keyboard.isKeyDown(Keyboard.getEventKey())); + } + } + + private void sendCtrlAltDel() { + if (client != null && client.isRunning()) { + client.keyPress(keyConvert(Keyboard.KEY_LCONTROL, '\u0000'), '\u0000', true); + client.keyPress(keyConvert(Keyboard.KEY_LMENU, '\u0000'), '\u0000', true); + client.keyPress(keyConvert(Keyboard.KEY_DELETE, '\u0000'), '\u0000', true); + try { + Thread.sleep(250); + } catch (InterruptedException e) { + e.printStackTrace(); + } + client.keyPress(keyConvert(Keyboard.KEY_LCONTROL, '\u0000'), '\u0000', false); + client.keyPress(keyConvert(Keyboard.KEY_LMENU, '\u0000'), '\u0000', false); + client.keyPress(keyConvert(Keyboard.KEY_DELETE, '\u0000'), '\u0000', false); + } + } + + private int scaleMouseX(int x, int frameW, int containerW) { + if (lastFrame == null) { + return x; + } + return (int) (x * ((double) frameW / containerW)); + } + + private int scaleMouseY(int y, int frameH, int containerH) { + if (lastFrame == null) { + return y; + } + return (int) (y * ((double) frameH / containerH)); + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/common/blocks/Blocks.java b/src/main/java/li/netcube/mcvm/common/blocks/Blocks.java new file mode 100755 index 0000000..50e057f --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/blocks/Blocks.java @@ -0,0 +1,9 @@ +package li.netcube.mcvm.common.blocks; + +import li.netcube.mcvm.client.creativeTabs.MCVM; +import net.minecraft.block.material.Material; + +public class Blocks { + public static ComputerBlock computer = new ComputerBlock("computer", Material.IRON, MCVM.mcvmTab); + public static DisplayBlock display = new DisplayBlock("display", Material.IRON, MCVM.mcvmTab); +} diff --git a/src/main/java/li/netcube/mcvm/common/blocks/ComputerBlock.java b/src/main/java/li/netcube/mcvm/common/blocks/ComputerBlock.java new file mode 100755 index 0000000..d5bae04 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/blocks/ComputerBlock.java @@ -0,0 +1,231 @@ +package li.netcube.mcvm.common.blocks; + +import li.netcube.mcvm.MCVM; +import li.netcube.mcvm.UsedUidData; +import li.netcube.mcvm.common.ui.ComputerContainer; +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import net.minecraft.block.Block; +import net.minecraft.block.BlockDirectional; +import net.minecraft.block.BlockRedstoneLight; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.EnumSkyBlock; +import net.minecraft.world.Explosion; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import javax.jws.soap.SOAPBinding; +import java.util.ArrayList; +import java.util.Random; + +public class ComputerBlock extends BlockDirectional implements ITileEntityProvider { + + public static class Properties + { + public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL); + public static final PropertyBool ON = PropertyBool.create("on"); + } + + public static final int GUI_ID = 1; + + public ComputerBlock(String name, Material material, CreativeTabs creativeTabs) { + super(material); + setUnlocalizedName(name); + setRegistryName(name); + setCreativeTab(creativeTabs); + setHardness(5); + setDefaultState( this.blockState.getBaseState() + .withProperty( Properties.FACING, EnumFacing.NORTH ) + .withProperty( Properties.ON, false ) + ); + } + + @Nonnull + @Override + protected BlockStateContainer createBlockState() + { + return new BlockStateContainer( this, Properties.FACING, Properties.ON ); + } + + @Nonnull + @Override + @Deprecated + public IBlockState getStateFromMeta( int meta ) + { + EnumFacing dir = EnumFacing.getFront( meta & 0x7 ); + if( dir.getAxis() == EnumFacing.Axis.Y ) + { + dir = EnumFacing.NORTH; + } + IBlockState state = getDefaultState().withProperty( Properties.FACING, dir ); + return state; + } + + @Override + public int getMetaFromState( IBlockState state ) + { + int meta = state.getValue( Properties.FACING ).getIndex(); + return meta; + } + + @Nonnull + @Override + @Deprecated + public IBlockState getActualState( @Nonnull IBlockState state, IBlockAccess world, BlockPos pos ) + { + TileEntity tile = world.getTileEntity( pos ); + if( tile != null && tile instanceof ComputerContainerTileEntity ) + { + ComputerContainerTileEntity computer = ((ComputerContainerTileEntity)tile); + if( computer != null && computer.poweredOn ) + { + return state.withProperty( Properties.ON, true ); + } + else + { + return state.withProperty( Properties.ON, false ); + } + } + return state.withProperty( Properties.ON, false ); + } + + @Override + public boolean isOpaqueCube(IBlockState state) { + return false; + } + + @Override + public boolean isFullCube(IBlockState state) { + return false; + } + + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + return new ComputerContainerTileEntity(); + } + + @Override + public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { + ComputerContainerTileEntity ccte = (ComputerContainerTileEntity)worldIn.getTileEntity(pos); + + try { + UsedUidData uud = UsedUidData.get(worldIn); + uud.freeUid(ccte.UID); + ccte.vm.stop(); + } catch (Exception e) {} + + for (int i = 0; i < 9; i++) { + if (!worldIn.isRemote) + { + EntityItem item = new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), ccte.getItemStackHandler().getStackInSlot(i)); + worldIn.spawnEntity(item); + } + } + super.breakBlock(worldIn, pos, state); + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, + float hitX, float hitY, float hitZ) { + // Only execute on the server + if (world.isRemote) { + return true; + } + TileEntity te = world.getTileEntity(pos); + if (!(te instanceof ComputerContainerTileEntity)) { + return false; + } + player.openGui(MCVM.instance, GUI_ID, world, pos.getX(), pos.getY(), pos.getZ()); + return true; + } + + @Override + public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing blockFaceClickedOn, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) + { + EnumFacing enumfacing = (placer == null) ? EnumFacing.NORTH : EnumFacing.fromAngle(placer.rotationYaw).getOpposite(); + return this.getDefaultState().withProperty(Properties.FACING, enumfacing); + } + + @Override + public void onBlockPlacedBy(World world, BlockPos pos, IBlockState state, EntityLivingBase player, ItemStack stack) { + super.onBlockPlacedBy(world, pos, state, player, stack); + ComputerContainerTileEntity ccte = (ComputerContainerTileEntity)world.getTileEntity(pos); + + if(ccte != null) + { + ccte.setWorld( world ); // Not sure why this is necessary + ccte.setPos( pos ); // Not sure why this is necessary + } + + UsedUidData uud = UsedUidData.get(world); + Integer uid = uud.getNextFree(); + ccte.setUID(uid); + ccte.setPassword(generatePassword()); + } + + public String generatePassword() { + Random rand = new Random(); + + String password = ""; + String charTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-_"; + for (int i = 0; i < 8; i++) { + password = password + (charTable.charAt(rand.nextInt(64))); + } + + //System.out.println("Passwd: " + password); + return password; + } + + @Override + public boolean canConnectRedstone(IBlockState state, IBlockAccess access, BlockPos pos, @Nullable EnumFacing facing) { + return true; + } + + @Override + public boolean canProvidePower(IBlockState iBlockState) + { + return true; + } + + @Override + public int getWeakPower(IBlockState state, IBlockAccess worldIn, BlockPos pos, EnumFacing side) + { + TileEntity tileentity = worldIn.getTileEntity(pos); + if (tileentity instanceof ComputerContainerTileEntity) { // prevent a crash if not the right type, or is null + return ((ComputerContainerTileEntity) tileentity).getOutputState(side); + } + + return 0; + } + + @Override + public int getStrongPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) + { + return 0; + } + + @Override + public void observedNeighborChange(IBlockState thisState, World world, BlockPos thisPos, Block changedBlock, BlockPos changedBlockPos) { + TileEntity tileentity = world.getTileEntity(thisPos); + if (tileentity instanceof ComputerContainerTileEntity) { + //((ComputerContainerTileEntity) tileentity).vm.serial.getOutputStream() + } + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/common/blocks/DisplayBlock.java b/src/main/java/li/netcube/mcvm/common/blocks/DisplayBlock.java new file mode 100755 index 0000000..759487b --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/blocks/DisplayBlock.java @@ -0,0 +1,145 @@ +package li.netcube.mcvm.common.blocks; + +import li.netcube.mcvm.MCVM; +import li.netcube.mcvm.common.items.Items; +import li.netcube.mcvm.common.items.VMStorageItem; +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import li.netcube.mcvm.client.ui.DisplayGUI; +import li.netcube.mcvm.util.VMControlMessage; +import li.netcube.mcvm.util.vm.VirtualMachine; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.properties.PropertyDirection; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.ItemStackHandler; +import org.lwjgl.Sys; + +import javax.annotation.Nonnull; +import java.io.File; +import java.util.ArrayList; + +public class DisplayBlock extends Block { + + public static final int GUI_ID = 1; + + public static class Properties + { + public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL); + } + + public DisplayBlock(String name, Material material, CreativeTabs creativeTabs) { + super(material); + setUnlocalizedName(name); + setRegistryName(name); + setCreativeTab(creativeTabs); + setHardness(5); + setDefaultState( this.blockState.getBaseState() + .withProperty( Properties.FACING, EnumFacing.NORTH ) + ); + } + + @Nonnull + @Override + protected BlockStateContainer createBlockState() + { + return new BlockStateContainer( this, Properties.FACING ); + } + + @Nonnull + @Override + @Deprecated + public IBlockState getStateFromMeta( int meta ) + { + EnumFacing dir = EnumFacing.getFront( meta & 0x7 ); + if( dir.getAxis() == EnumFacing.Axis.Y ) + { + dir = EnumFacing.NORTH; + } + IBlockState state = getDefaultState().withProperty( Properties.FACING, dir ); + return state; + } + + @Override + public int getMetaFromState( IBlockState state ) + { + int meta = state.getValue( Properties.FACING ).getIndex(); + return meta; + } + + @Override + public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing blockFaceClickedOn, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) + { + EnumFacing enumfacing = (placer == null) ? EnumFacing.NORTH : EnumFacing.fromAngle(placer.rotationYaw).getOpposite(); + return this.getDefaultState().withProperty(Properties.FACING, enumfacing); + } + + @Override + public boolean isOpaqueCube(IBlockState state) { + return false; + } + + @Override + public boolean isFullCube(IBlockState state) { + return false; + } + + @SideOnly(Side.CLIENT) + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, + float hitX, float hitY, float hitZ) { + + if (world.isRemote) { + BlockPos computer = getComputer(world, pos); + //MCVM.INSTANCE.sendToServer(new VMControlMessage(computer, 1)); + + if (computer != null) { + ComputerContainerTileEntity ccte = (ComputerContainerTileEntity) world.getTileEntity(computer); + if (ccte != null) { + if (ccte.poweredOn) { + DisplayGUI display = new DisplayGUI(); + display.VNCPort = ccte.vm.VNCPort; + display.VNCPassword = ccte.vm.password; + //System.out.println(display.VNCPassword); + Minecraft.getMinecraft().displayGuiScreen(display); + return true; + } + } + } + } + return true; + } + + public BlockPos getComputer(World world, BlockPos center) + { + ArrayList possibleLocations = new ArrayList<>(); + possibleLocations.add(new BlockPos(center.getX()+1, center.getY(), center.getZ())); + possibleLocations.add(new BlockPos(center.getX()-1, center.getY(), center.getZ())); + possibleLocations.add(new BlockPos(center.getX(), center.getY()+1, center.getZ())); + possibleLocations.add(new BlockPos(center.getX(), center.getY()-1, center.getZ())); + possibleLocations.add(new BlockPos(center.getX(), center.getY(), center.getZ()+1)); + possibleLocations.add(new BlockPos(center.getX(), center.getY(), center.getZ()-1)); + + for (BlockPos location : possibleLocations) { + if (world.getTileEntity(location) instanceof ComputerContainerTileEntity) { + return location; + } + } + return null; + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/common/items/ItemBasic.java b/src/main/java/li/netcube/mcvm/common/items/ItemBasic.java new file mode 100755 index 0000000..d476ffd --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/items/ItemBasic.java @@ -0,0 +1,13 @@ +package li.netcube.mcvm.common.items; + +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; + +public class ItemBasic extends Item { + + public ItemBasic(String name, CreativeTabs creativeTabs) { + setUnlocalizedName(name); + setRegistryName(name); + setCreativeTab(creativeTabs); + } +} diff --git a/src/main/java/li/netcube/mcvm/common/items/Items.java b/src/main/java/li/netcube/mcvm/common/items/Items.java new file mode 100755 index 0000000..d968a12 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/items/Items.java @@ -0,0 +1,49 @@ +package li.netcube.mcvm.common.items; + +import li.netcube.mcvm.client.creativeTabs.MCVM; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; + +import java.util.List; +import java.util.UUID; + +public class Items { + public static VMStorageItem cdrom = new VMStorageItem("cdrom"); + public static VMStorageItem floppy = new VMStorageItem("floppy"); + public static VMStorageItem harddisk = new VMStorageItem("harddisk"); + + public static ItemBasic memory1 = new ItemBasic("memory1", MCVM.mcvmTab) { + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, World world, List lores, ITooltipFlag b) + { + lores.add("256MB"); + } + }; + public static ItemBasic memory2 = new ItemBasic("memory2", MCVM.mcvmTab) { + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, World world, List lores, ITooltipFlag b) + { + lores.add("512MB"); + } + }; + + public static ItemBasic pcb = new ItemBasic("pcb", MCVM.mcvmTab); + public static ItemBasic ic = new ItemBasic("ic", MCVM.mcvmTab); + public static ItemBasic ic2 = new ItemBasic("ic2", MCVM.mcvmTab); + public static ItemBasic ic3 = new ItemBasic("ic3", MCVM.mcvmTab); + public static ItemBasic cpu = new ItemBasic("cpu", MCVM.mcvmTab); + public static ItemBasic mainboard = new ItemBasic("mainboard", MCVM.mcvmTab); + public static ItemBasic diskplatter = new ItemBasic("diskplatter", MCVM.mcvmTab); + + public static ItemBasic cddrive = new ItemBasic("cddrive", MCVM.mcvmTab); + public static ItemBasic floppydrive = new ItemBasic("floppydrive", MCVM.mcvmTab); + + public static NetworkCard nic_e1000 = new NetworkCard("nic_e1000", MCVM.mcvmTab, "e1000", "Intel Gigabit Ethernet 10/100/1000"); + public static NetworkCard nic_rtl8139 = new NetworkCard("nic_rtl8139", MCVM.mcvmTab, "rtl8139", "Realtek Fast Ethernet 10/100"); + public static NetworkCard nic_ne2k = new NetworkCard("nic_ne2k", MCVM.mcvmTab, "ne2k_pci", "NE2000 10"); +} diff --git a/src/main/java/li/netcube/mcvm/common/items/NetworkCard.java b/src/main/java/li/netcube/mcvm/common/items/NetworkCard.java new file mode 100755 index 0000000..2a63d59 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/items/NetworkCard.java @@ -0,0 +1,50 @@ +package li.netcube.mcvm.common.items; + +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import java.util.List; + +public class NetworkCard extends Item { + + private String type = ""; + private String description = ""; + + public NetworkCard(String name) { + setUnlocalizedName(name); + setRegistryName(name); + setMaxStackSize(1); + } + + public NetworkCard(String name, CreativeTabs tab, String type, String description) { + setUnlocalizedName(name); + setRegistryName(name); + setMaxStackSize(1); + setCreativeTab(tab); + + this.type = type; + this.description = description; + } + + public String getType() + { + return this.type; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, World world, List lores, ITooltipFlag b) + { + if (b.isAdvanced()) { + lores.add(description + " (" + type + ")"); + } else { + lores.add(description); + } + + } + +} diff --git a/src/main/java/li/netcube/mcvm/common/items/VMStorageItem.java b/src/main/java/li/netcube/mcvm/common/items/VMStorageItem.java new file mode 100755 index 0000000..1d02037 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/items/VMStorageItem.java @@ -0,0 +1,128 @@ +package li.netcube.mcvm.common.items; + +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +import java.io.File; +import java.util.regex.Pattern; + +import java.util.List; + +public class VMStorageItem extends Item { + + public VMStorageItem(String name) { + setUnlocalizedName(name); + setRegistryName(name); + setMaxStackSize(1); + } + + public VMStorageItem(String name, CreativeTabs tab) { + setUnlocalizedName(name); + setRegistryName(name); + setMaxStackSize(1); + setCreativeTab(tab); + } + + public static void setFilename(ItemStack stack, String filename) + { + NBTTagCompound nbt; + + if (stack.hasTagCompound()) { + nbt = stack.getTagCompound(); + } else { + nbt = new NBTTagCompound(); + } + + nbt.setString("filename", filename); + + stack.setTagCompound(nbt); + } + + public static String getFilename(ItemStack stack) + { + try { + NBTTagCompound nbt = stack.getTagCompound(); + return nbt.getString("filename"); + } catch (Exception e) { + return null; + } + } + + public static void setType(ItemStack stack, String type) + { + NBTTagCompound nbt; + + if (stack.hasTagCompound()) { + nbt = stack.getTagCompound(); + } else { + nbt = new NBTTagCompound(); + } + + nbt.setString("type", type); + + stack.setTagCompound(nbt); + } + + public static String getType(ItemStack stack) + { + try { + NBTTagCompound nbt = stack.getTagCompound(); + return nbt.getString("type"); + } catch (Exception e) { + return null; + } + } + + public static void setSize(ItemStack stack, String size) + { + NBTTagCompound nbt; + + if (stack.hasTagCompound()) { + nbt = stack.getTagCompound(); + } else { + nbt = new NBTTagCompound(); + } + + nbt.setString("size", size); + + stack.setTagCompound(nbt); + } + + public static String getSize(ItemStack stack) + { + try { + NBTTagCompound nbt = stack.getTagCompound(); + return nbt.getString("size"); + } catch (Exception e) { + return null; + } + } + + @Override + public void onCreated(ItemStack p_onCreated_1_, World p_onCreated_2_, EntityPlayer p_onCreated_3_) { + //System.out.println("onCreated!"); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, World world, List lores, ITooltipFlag b) + { + if (stack.hasTagCompound() && stack.getTagCompound().hasKey("size")) + { + lores.add(stack.getTagCompound().getString("size")+"B"); + } + if (stack.hasTagCompound() && stack.getTagCompound().hasKey("filename")) + { + if (b.isAdvanced()) { + lores.add(stack.getTagCompound().getString("filename")); + } else { + lores.add(new File(stack.getTagCompound().getString("filename")).getName()); + } + } + } +} diff --git a/src/main/java/li/netcube/mcvm/common/ui/ComputerContainer.java b/src/main/java/li/netcube/mcvm/common/ui/ComputerContainer.java new file mode 100755 index 0000000..9bd1284 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/ui/ComputerContainer.java @@ -0,0 +1,125 @@ +package li.netcube.mcvm.common.ui; + +import li.netcube.mcvm.common.items.Items; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import org.lwjgl.Sys; + +import javax.annotation.Nullable; + +public class ComputerContainer extends Container { + + private ComputerContainerTileEntity te; + + public ComputerContainer(IInventory playerInventory, ComputerContainerTileEntity te) { + this.te = te; + + // This container references items out of our own inventory (the 9 slots we hold ourselves) + // as well as the slots from the player inventory so that the user can transfer items between + // both inventories. The two calls below make sure that slots are defined for both inventories. + addOwnSlots(); + addPlayerSlots(playerInventory); + } + + private void addPlayerSlots(IInventory playerInventory) { + // Slots for the main inventory + for (int row = 0; row < 3; ++row) { + for (int col = 0; col < 9; ++col) { + int x = 8 + col * 18; + int y = row * 18 + 74; + this.addSlotToContainer(new Slot(playerInventory, col + row * 9 + 9, x, y)); + } + } + + // Slots for the hotbar + for (int row = 0; row < 9; ++row) { + int x = 8 + row * 18; + int y = 58 + 74; + this.addSlotToContainer(new Slot(playerInventory, row, x, y)); + } + } + + private void addOwnSlots() { + IItemHandler itemHandler = this.te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null); + int slotIndex = 0; + + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 26, 19, new Item[] {Items.harddisk})); slotIndex++; + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 26, 37, new Item[] {Items.harddisk})); slotIndex++; + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 44, 19, new Item[] {Items.memory1, Items.memory2})); slotIndex++; + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 44, 37, new Item[] {Items.memory1, Items.memory2})); slotIndex++; + + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 116, 19, new Item[] {Items.cdrom})); slotIndex++; + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 116, 37, new Item[] {Items.cdrom})); slotIndex++; + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 134, 19, new Item[] {Items.floppy})); slotIndex++; + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 134, 37, new Item[] {Items.floppy})); slotIndex++; + + addSlotToContainer(new ComputerSlot(itemHandler, slotIndex, 62, 19, new Item[] {Items.nic_e1000, Items.nic_rtl8139, Items.nic_ne2k})); slotIndex++; + } + + /** + * Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that. + */ + @Override + public ItemStack transferStackInSlot(EntityPlayer playerIn, int fromSlot) { + ItemStack previous = ItemStack.EMPTY; + Slot slot = this.inventorySlots.get(fromSlot); + //System.out.println(fromSlot); + //System.out.println(slot); + + if (slot != null && slot.getHasStack()) { + ItemStack current = slot.getStack(); + previous = current.copy(); + + if (slot instanceof ComputerSlot) { + if (!this.mergeItemStack(current, 9, 9+36, false)) + return ItemStack.EMPTY; + } else { + if (current.getItem() == Items.harddisk) { + if (!this.mergeItemStack(current, 0, 2, false)) + return ItemStack.EMPTY; + } else if (current.getItem() == Items.memory1 || current.getItem() == Items.memory2) { + if (!this.mergeItemStack(current, 2, 4, false)) + return ItemStack.EMPTY; + } else if (current.getItem() == Items.cdrom) { + if (!this.mergeItemStack(current, 4, 6, false)) + return ItemStack.EMPTY; + } else if (current.getItem() == Items.floppy) { + if (!this.mergeItemStack(current, 6, 8, false)) + return ItemStack.EMPTY; + } else if (current.getItem() == Items.nic_e1000 || current.getItem() == Items.nic_rtl8139 || current.getItem() == Items.nic_ne2k) { + if (!this.mergeItemStack(current, 8, 9, false)) + return ItemStack.EMPTY; + } else { + if (fromSlot >= 9 && fromSlot < 9+27) { + if (!this.mergeItemStack(current, 9+27, 9+36, false)) + return ItemStack.EMPTY; + } else { + if (!this.mergeItemStack(current, 9, 9+27, false)) + return ItemStack.EMPTY; + } + } + } + if (current.getCount() == 0) + slot.putStack(ItemStack.EMPTY); + else + slot.onSlotChanged(); + + if (current.getCount() == previous.getCount()) + return ItemStack.EMPTY; + } + + + return previous; + } + + @Override + public boolean canInteractWith(EntityPlayer playerIn) { + return te.canInteractWith(playerIn); + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/common/ui/ComputerContainerGUI.java b/src/main/java/li/netcube/mcvm/common/ui/ComputerContainerGUI.java new file mode 100755 index 0000000..f6c2b8a --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/ui/ComputerContainerGUI.java @@ -0,0 +1,111 @@ +package li.netcube.mcvm.common.ui; + +import li.netcube.mcvm.MCVM; +import li.netcube.mcvm.common.blocks.Blocks; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.client.FMLClientHandler; + +import javax.xml.soap.Text; +import java.io.IOException; +import java.util.List; + +public class ComputerContainerGUI extends GuiContainer { + public static final int WIDTH = 176; + public static final int HEIGHT = 156; + + private ComputerContainerTileEntity ccte; + + private static final ResourceLocation background = new ResourceLocation(MCVM.MODID, "textures/gui/computer.png"); + + private InventoryPlayer inventoryPlayer; + + private TexturedButton powerOnButton; + private TexturedButton powerOffButton; + private TexturedButton resetButton; + + public ComputerContainerGUI(ComputerContainerTileEntity tileEntity, ComputerContainer container, InventoryPlayer inventoryPlayer) { + super(container); + + this.inventoryPlayer = inventoryPlayer; + this.ccte = tileEntity; + xSize = WIDTH; + ySize = HEIGHT; + + + } + + @Override + public void initGui() + { + super.initGui(); + + powerOnButton = new TexturedButton( 1, guiLeft + 68, guiTop + 43, 20, 20, background, 176, 0, 176, 20, 176, 40, "Turn ON"); + powerOffButton = new TexturedButton( 2, guiLeft + 68, guiTop + 43, 20, 20, background, 196, 0, 196, 20, 196, 40, "Turn OFF"); + resetButton = new TexturedButton( 3, guiLeft + 88, guiTop + 43, 20, 20, background, 216, 0, 216, 20, 216, 40,"Reset"); + + this.buttonList.add(powerOnButton); + this.buttonList.add(powerOffButton); + this.buttonList.add(resetButton); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { + String name = I18n.format(Blocks.computer.getUnlocalizedName() + ".name"); + fontRenderer.drawString(name, xSize / 2 - fontRenderer.getStringWidth(name) / 2, 6, 0x404040); + fontRenderer.drawString(inventoryPlayer.getDisplayName().getUnformattedText(), 8, ySize - 94, 0x404040); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + super.drawScreen(mouseX, mouseY, partialTicks); + this.renderHoveredToolTip(mouseX, mouseY); + } + + @Override + protected void actionPerformed(GuiButton button) throws IOException { + switch (button.id) { + case 1: + ccte.powerOn(); + break; + case 2: + ccte.powerOff(); + break; + case 3: + ccte.resetSystem(); + break; + } + //super.actionPerformed(button); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { + mc.getTextureManager().bindTexture(background); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } + + @Override + public void updateScreen() { + if (ccte.poweredOn) { + powerOnButton.enabled = false; + powerOnButton.visible = false; + powerOffButton.enabled = true; + powerOffButton.visible = true; + resetButton.enabled = true; + } else { + powerOnButton.enabled = true; + powerOnButton.visible = true; + powerOffButton.enabled = false; + powerOffButton.visible = false; + resetButton.enabled = false; + } + super.updateScreen(); + } + + +} diff --git a/src/main/java/li/netcube/mcvm/common/ui/ComputerContainerTileEntity.java b/src/main/java/li/netcube/mcvm/common/ui/ComputerContainerTileEntity.java new file mode 100755 index 0000000..7597ce1 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/ui/ComputerContainerTileEntity.java @@ -0,0 +1,333 @@ +package li.netcube.mcvm.common.ui; + +import li.netcube.mcvm.MCVM; +import li.netcube.mcvm.common.items.Items; +import li.netcube.mcvm.common.items.NetworkCard; +import li.netcube.mcvm.common.items.VMStorageItem; +import li.netcube.mcvm.util.VMControlMessage; +import li.netcube.mcvm.util.vm.MachineManager; +import li.netcube.mcvm.util.vm.VirtualMachine; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.SPacketUpdateTileEntity; +import net.minecraft.server.MinecraftServer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.ITickable; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.ItemStackHandler; +import org.lwjgl.Sys; + +import javax.annotation.Nullable; +import java.io.File; +import java.util.UUID; + +public class ComputerContainerTileEntity extends TileEntity implements ITickable { + + public Integer UID = 0; + public String PASSWD = ""; + public boolean poweredOn = false; + public VirtualMachine vm = new VirtualMachine(this, UID, PASSWD, "4M", null,null,null,null,null,null, null, null); + + private boolean redstoneChanged = true; + + //UP, DOWN, N,E,S,W + public static int[] outPowerSides = {0,0,0,0,0,0}; + + public static final int SIZE = 9; + + // This item handler will hold our nine inventory slots + private ItemStackHandler itemStackHandler = new ItemStackHandler(SIZE) { + protected void onContentsChanged(int slot) { + // We need to tell the tile entity that something has changed so + // that the chest contents is persisted + + if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); + switch (slot) { + case 0: + ItemStack slot0 = itemStackHandler.getStackInSlot(0); + if (VMStorageItem.getFilename(slot0) == null) { + vm.hdd0 = null; + } else if (!MachineManager.checkImage(new File(VMStorageItem.getFilename(slot0)))) { + String uuid = UUID.randomUUID().toString(); + String imgFile = ""; + if (server.isDedicatedServer()) { + imgFile = server.getFolderName() + "/" + uuid + ".qcow2"; + } else { + imgFile = "saves/" + server.getFolderName() + "/" + uuid + ".qcow2"; + } + MachineManager.createHddImage(new File(imgFile), VMStorageItem.getSize(slot0)); + VMStorageItem.setFilename(slot0, imgFile); + vm.hdd0 = new File(imgFile); + } else { + vm.hdd0 = new File(VMStorageItem.getFilename(slot0)); + } + vm.stop(); + break; + case 1: + ItemStack slot1 = itemStackHandler.getStackInSlot(1); + if (VMStorageItem.getFilename(slot1) == null) { + vm.hdd1 = null; + } else if (!MachineManager.checkImage(new File(VMStorageItem.getFilename(slot1)))) { + String uuid = UUID.randomUUID().toString(); + String imgFile = ""; + if (server.isDedicatedServer()) { + imgFile = server.getFolderName() + "/" + uuid + ".qcow2"; + } else { + imgFile = "saves/" + server.getFolderName() + "/" + uuid + ".qcow2"; + } + MachineManager.createHddImage(new File(imgFile), VMStorageItem.getSize(slot1)); + VMStorageItem.setFilename(slot1, imgFile); + vm.hdd1 = new File(imgFile); + } else { + vm.hdd1 = new File(VMStorageItem.getFilename(slot1)); + } + vm.stop(); + break; + case 2: + case 3: + int memory = 0; + if (itemStackHandler.getStackInSlot(2).getItem() == Items.memory1) { + memory += 256; + } else if (itemStackHandler.getStackInSlot(2).getItem() == Items.memory2) { + memory += 512; + } + if (itemStackHandler.getStackInSlot(3).getItem() == Items.memory1) { + memory += 256; + } else if (itemStackHandler.getStackInSlot(3).getItem() == Items.memory2) { + memory += 512; + } + vm.memory = memory + "M"; + vm.stop(); + break; + case 4: + String cd0 = VMStorageItem.getFilename(itemStackHandler.getStackInSlot(4)); + vm.setCd0((cd0 == null) ? null : new File(cd0)); + break; + case 5: + String cd1 = VMStorageItem.getFilename(itemStackHandler.getStackInSlot(5)); + vm.setCd1((cd1 == null) ? null : new File(cd1)); + break; + case 6: + ItemStack slot6 = itemStackHandler.getStackInSlot(6); + if (VMStorageItem.getFilename(slot6) == null) { + vm.setFloppy0(null); + } else if (!MachineManager.checkImage(new File(VMStorageItem.getFilename(slot6)))) { + String uuid = UUID.randomUUID().toString(); + String imgFile = ""; + if (server.isDedicatedServer()) { + imgFile = server.getFolderName() + "/" + uuid + ".img"; + } else { + imgFile = "saves/" + server.getFolderName() + "/" + uuid + ".img"; + } + MachineManager.createFloppyImage(new File(imgFile)); + VMStorageItem.setFilename(slot6, imgFile); + vm.setFloppy0(new File(imgFile)); + } else { + vm.setFloppy0(new File(VMStorageItem.getFilename(slot6))); + } + break; + case 7: + ItemStack slot7 = itemStackHandler.getStackInSlot(7); + if (VMStorageItem.getFilename(slot7) == null) { + vm.setFloppy1(null); + } else if (!MachineManager.checkImage(new File(VMStorageItem.getFilename(slot7)))) { + String uuid = UUID.randomUUID().toString(); + String imgFile = ""; + if (server.isDedicatedServer()) { + imgFile = server.getFolderName() + "/" + uuid + ".img"; + } else { + imgFile = "saves/" + server.getFolderName() + "/" + uuid + ".img"; + } + MachineManager.createFloppyImage(new File(imgFile)); + VMStorageItem.setFilename(slot7, imgFile); + vm.setFloppy1(new File(imgFile)); + } else { + vm.setFloppy1(new File(VMStorageItem.getFilename(slot7))); + } + break; + case 8: + String nic = null; + if (!itemStackHandler.getStackInSlot(8).isEmpty()) { + nic = ((NetworkCard) itemStackHandler.getStackInSlot(8).getItem()).getType(); + } + vm.nic = nic; + vm.stop(); + break; + } + } + ComputerContainerTileEntity.this.markDirty(); + } + }; + + @Override + public void readFromNBT(NBTTagCompound compound) { + super.readFromNBT(compound); + if (compound.hasKey("items")) { + itemStackHandler.deserializeNBT((NBTTagCompound) compound.getTag("items")); + } + if (compound.hasKey("uid")) { + UID = compound.getInteger("uid"); + vm.setUid(UID); + //System.out.println("Read ID: " + UID); + } + if (compound.hasKey("passwd")) { + PASSWD = compound.getString("passwd"); + vm.setPassword(PASSWD); + //System.out.println("Read Passwd: " + PASSWD); + } + if (compound.hasKey("poweredOn")) { + poweredOn = compound.getBoolean("poweredOn"); + //System.out.println("Read poweredOn: " + poweredOn); + try { + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 3); + } catch (NullPointerException ignored) { + + } + } + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + super.writeToNBT(compound); + compound.setTag("items", itemStackHandler.serializeNBT()); + compound.setInteger("uid", UID); + compound.setString("passwd", PASSWD); + compound.setBoolean("poweredOn", poweredOn); + //System.out.println("Wrote poweredOn: " + poweredOn); + return compound; + } + + public boolean canInteractWith(EntityPlayer playerIn) { + // If we are too far away from this tile entity you cannot use it + return !isInvalid() && playerIn.getDistanceSq(pos.add(0.5D, 0.5D, 0.5D)) <= 64D; + } + + @Override + public boolean hasCapability(Capability capability, EnumFacing facing) { + if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + return true; + } + return super.hasCapability(capability, facing); + } + + @Override + public T getCapability(Capability capability, EnumFacing facing) { + if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(itemStackHandler); + } + return super.getCapability(capability, facing); + } + + public ItemStackHandler getItemStackHandler() { + return this.itemStackHandler; + } + + public int getOutputState(EnumFacing side) { + switch (side) { + case UP: return outPowerSides[0]; + case DOWN: return outPowerSides[1]; + case NORTH: return outPowerSides[2]; + case EAST: return outPowerSides[3]; + case SOUTH: return outPowerSides[4]; + case WEST: return outPowerSides[5]; + } + return 0; + } + + public void setOutputState(EnumFacing side, int value) { + switch (side) { + case UP: outPowerSides[0] = value; break; + case DOWN: outPowerSides[1] = value; break; + case NORTH: outPowerSides[2] = value; break; + case EAST: outPowerSides[3] = value; break; + case SOUTH: outPowerSides[4] = value; break; + case WEST: outPowerSides[5] = value; break; + } + redstoneChanged = true; + } + + + public void setUID(int id) { + vm.setUid(id); + //System.out.println("Set ID: " + id); + UID = id; + sendUpdates(); + } + + public void setPassword(String password) { + vm.setPassword(password); + //System.out.println("Set ID: " + id); + PASSWD = password; + sendUpdates(); + } + + public void setPoweredOn(boolean state) { + poweredOn = state; + //System.out.println("Set PoweredOn: " + state); + sendUpdates(); + } + + @Override + @Nullable + public SPacketUpdateTileEntity getUpdatePacket() { + return new SPacketUpdateTileEntity(this.pos, 3, this.getUpdateTag()); + } + + @Override + public NBTTagCompound getUpdateTag() { + return this.writeToNBT(new NBTTagCompound()); + } + + @Override + public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) { + super.onDataPacket(net, pkt); + handleUpdateTag(pkt.getNbtCompound()); + } + + private void sendUpdates() { + world.markBlockRangeForRenderUpdate(pos, pos); + world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 3); + world.scheduleBlockUpdate(pos,this.getBlockType(),0,0); + ComputerContainerTileEntity.this.markDirty(); + } + + public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) { + return oldState.getBlock() != newState.getBlock(); + } + + public void powerOn() { + MCVM.INSTANCE.sendToServer(new VMControlMessage(this.pos, 1)); + } + + public void powerOff() { + MCVM.INSTANCE.sendToServer(new VMControlMessage(this.pos, 2)); + } + + public void resetSystem() { + MCVM.INSTANCE.sendToServer(new VMControlMessage(this.pos, 3)); + } + + @Override + public void update() { + if (redstoneChanged) { + world.notifyNeighborsOfStateChange(this.pos, world.getBlockState(this.pos).getBlock(), true); + redstoneChanged = false; + } + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/common/ui/ComputerSlot.java b/src/main/java/li/netcube/mcvm/common/ui/ComputerSlot.java new file mode 100755 index 0000000..9ec17da --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/ui/ComputerSlot.java @@ -0,0 +1,32 @@ +package li.netcube.mcvm.common.ui; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.SlotItemHandler; + +import java.util.Arrays; + +public class ComputerSlot extends SlotItemHandler { + + public Item[] allowedItems; + + public ComputerSlot(IItemHandler itemHandler, int par2, int par3, int par4, Item[] allowedItems) { + super(itemHandler, par2, par3, par4); + this.allowedItems = allowedItems; + } + + @Override + public boolean isItemValid(ItemStack itemstack) { + //if (itemstack.getCount() <= 1) { + return Arrays.asList(allowedItems).contains(itemstack.getItem()); + //} else { + // return false; + //} + } + + @Override + public int getSlotStackLimit() { + return 1; + } +} diff --git a/src/main/java/li/netcube/mcvm/common/ui/GuiProxy.java b/src/main/java/li/netcube/mcvm/common/ui/GuiProxy.java new file mode 100755 index 0000000..d909af9 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/ui/GuiProxy.java @@ -0,0 +1,31 @@ +package li.netcube.mcvm.common.ui; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.common.network.IGuiHandler; + +public class GuiProxy implements IGuiHandler { + + @Override + public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + BlockPos pos = new BlockPos(x, y, z); + TileEntity te = world.getTileEntity(pos); + if (te instanceof ComputerContainerTileEntity) { + return new ComputerContainer(player.inventory, (ComputerContainerTileEntity) te); + } + return null; + } + + @Override + public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { + BlockPos pos = new BlockPos(x, y, z); + TileEntity te = world.getTileEntity(pos); + if (te instanceof ComputerContainerTileEntity) { + ComputerContainerTileEntity containerTileEntity = (ComputerContainerTileEntity) te; + return new ComputerContainerGUI(containerTileEntity, new ComputerContainer(player.inventory, containerTileEntity), player.inventory); + } + return null; + } +} diff --git a/src/main/java/li/netcube/mcvm/common/ui/TexturedButton.java b/src/main/java/li/netcube/mcvm/common/ui/TexturedButton.java new file mode 100755 index 0000000..68f9c13 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/common/ui/TexturedButton.java @@ -0,0 +1,89 @@ +package li.netcube.mcvm.common.ui; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.renderer.BufferBuilder; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +import java.util.ArrayList; +import java.util.List; + +public class TexturedButton extends GuiButton { + + private ResourceLocation texture; + private int defaultX, defaultY; + private int hoverX, hoverY; + private int disabledX, disabledY; + + private List toolTip = new ArrayList(); + + public int /*x,y,*/w,h; + + public TexturedButton(int buttonId, int x, int y, int w, int h, ResourceLocation texture, int defaultX, int defaultY, int hoverX, int hoverY, int disabledX, int disabledY, String toolTip) { + super(buttonId, x, y, w, h, ""); + this.texture = texture; + + this.x = x; + this.y = y; + this.w = w; + this.h = h; + + + this.defaultX = defaultX; + this.defaultY = defaultY; + + this.hoverX = hoverX; + this.hoverY = hoverY; + + this.disabledX = disabledX; + this.disabledY = disabledY; + + this.toolTip.add(toolTip); + } + + public void setX(int x) {this.x = x;} + + public void setY(int y) {this.y = y;} + + + @Override + public void drawButton(Minecraft mc, int mouseX, int mouseY, float partialTicks) { + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + this.hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height; + + GlStateManager.enableBlend(); + GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); + GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); + mc.getTextureManager().bindTexture(texture); + if (this.visible) { + if (!this.enabled) { + this.drawTexturedModalRect(this.x, this.y, this.disabledX, this.disabledY, this.w, this.h); + } else if (this.hovered) { + this.drawTexturedModalRect(this.x, this.y, this.hoverX, this.hoverY, this.w, this.h); + } else { + this.drawTexturedModalRect(this.x, this.y, this.defaultX, this.defaultY, this.w, this.h); + } + } + + this.mouseDragged(mc, mouseX, mouseY); + + //super.drawButton(mc, mouseX, mouseY, partialTicks); + } + + public void drawTexturedModalRect(int x, int y, int textureX, int textureY, int width, int height) { + float f = 0.00390625F; + float f1 = 0.00390625F; + Tessellator tessellator = Tessellator.getInstance(); + BufferBuilder bufferbuilder = tessellator.getBuffer(); + bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX); + bufferbuilder.pos((double) (x + 0), (double) (y + height), (double) this.zLevel).tex((double) ((float) (textureX + 0) * 0.00390625F), (double) ((float) (textureY + height) * 0.00390625F)).endVertex(); + bufferbuilder.pos((double) (x + width), (double) (y + height), (double) this.zLevel).tex((double) ((float) (textureX + width) * 0.00390625F), (double) ((float) (textureY + height) * 0.00390625F)).endVertex(); + bufferbuilder.pos((double) (x + width), (double) (y + 0), (double) this.zLevel).tex((double) ((float) (textureX + width) * 0.00390625F), (double) ((float) (textureY + 0) * 0.00390625F)).endVertex(); + bufferbuilder.pos((double) (x + 0), (double) (y + 0), (double) this.zLevel).tex((double) ((float) (textureX + 0) * 0.00390625F), (double) ((float) (textureY + 0) * 0.00390625F)).endVertex(); + tessellator.draw(); + } +} diff --git a/src/main/java/li/netcube/mcvm/server/commands/createCD.java b/src/main/java/li/netcube/mcvm/server/commands/createCD.java new file mode 100755 index 0000000..f663598 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/server/commands/createCD.java @@ -0,0 +1,49 @@ +package li.netcube.mcvm.server.commands; + +import li.netcube.mcvm.common.items.Items; +import li.netcube.mcvm.util.vm.MachineManager; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.text.TextComponentString; +import net.minecraftforge.common.DimensionManager; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.io.File; + + +public class createCD extends CommandBase { + @Override + public String getName() { + return "createCD"; + } + + @Override + public String getUsage(ICommandSender iCommandSender) { + return "createCD [path]"; + } + + @Override + public void execute(MinecraftServer server, ICommandSender ics, String[] args) throws CommandException { + if (args.length > 0) { + ics.sendMessage(new TextComponentString("Creating \"" + args[0] + "\" ...")); + ItemStack cdStack = new ItemStack(Items.cdrom); + String filename = DimensionManager.getCurrentSaveRootDirectory() + server.getFolderName() + "/" + args[0] + ".iso"; + if (args.length > 1) { + filename = args[1]; + } + if (MachineManager.checkImage(new File(filename))) { + Items.cdrom.setFilename(cdStack, filename); + getCommandSenderAsPlayer(ics).inventory.addItemStackToInventory(cdStack); + ics.sendMessage(new TextComponentString("Done!")); + } else { + ics.sendMessage(new TextComponentString("Failed: Not Found!")); + } + } else { + ics.sendMessage(new TextComponentString("/createCD [path]")); + } + } +} diff --git a/src/main/java/li/netcube/mcvm/server/commands/createFLOPPY.java b/src/main/java/li/netcube/mcvm/server/commands/createFLOPPY.java new file mode 100755 index 0000000..d2f0445 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/server/commands/createFLOPPY.java @@ -0,0 +1,50 @@ +package li.netcube.mcvm.server.commands; + +import li.netcube.mcvm.common.items.Items; +import li.netcube.mcvm.util.vm.MachineManager; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.text.TextComponentString; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.io.File; + + +public class createFLOPPY extends CommandBase { + @Override + public String getName() { + return "createFLOPPY"; + } + + @Override + public String getUsage(ICommandSender iCommandSender) { + return "createFLOPPY [path]"; + } + + @Override + public void execute(MinecraftServer server, ICommandSender ics, String[] args) throws CommandException { + if (args.length > 0) { + ics.sendMessage(new TextComponentString("Creating \"" + args[0] + "\" ...")); + ItemStack floppyStack = new ItemStack(Items.floppy); + + String filename = "saves/" + server.getFolderName() + "/" + args[0] + ".img"; + if (args.length > 1) { + filename = args[1]; + } + if (MachineManager.checkImage(new File(filename))) { + Items.cdrom.setFilename(floppyStack, filename); + getCommandSenderAsPlayer(ics).inventory.addItemStackToInventory(floppyStack); + ics.sendMessage(new TextComponentString("Done!")); + } + else { + ics.sendMessage(new TextComponentString("Failed: Not Found!")); + } + } else { + ics.sendMessage(new TextComponentString("/createFLOPPY [path]")); + } + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/server/commands/createHDD.java b/src/main/java/li/netcube/mcvm/server/commands/createHDD.java new file mode 100755 index 0000000..e67cf23 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/server/commands/createHDD.java @@ -0,0 +1,48 @@ +package li.netcube.mcvm.server.commands; + +import li.netcube.mcvm.common.items.Items; +import li.netcube.mcvm.util.vm.MachineManager; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.text.TextComponentString; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import java.io.File; + + +public class createHDD extends CommandBase { + @Override + public String getName() { + return "createHDD"; + } + + @Override + public String getUsage(ICommandSender iCommandSender) { + return "createHDD "; + } + + @Override + public void execute(MinecraftServer server, ICommandSender ics, String[] args) throws CommandException { + ics.sendMessage(new TextComponentString("Creating \"" + args[0] + "\" ...")); + if (server.isDedicatedServer()) { + MachineManager.createHddImage(new File(server.getFolderName() + "/" + args[0] + ".qcow2"), args[1]); + } else { + MachineManager.createHddImage(new File("saves/" + server.getFolderName() + "/" + args[0] + ".qcow2"), args[1]); + } + + + ItemStack harddiskStack = new ItemStack(Items.harddisk); + if (server.isDedicatedServer()) { + Items.harddisk.setFilename(harddiskStack, server.getFolderName() + "/" + args[0] + ".qcow2"); + } else { + Items.harddisk.setFilename(harddiskStack, "saves/" + server.getFolderName() + "/" + args[0] + ".qcow2"); + } + getCommandSenderAsPlayer(ics).inventory.addItemStackToInventory(harddiskStack); + + ics.sendMessage(new TextComponentString("Done!")); + } +} diff --git a/src/main/java/li/netcube/mcvm/util/FileDeleteHelper.java b/src/main/java/li/netcube/mcvm/util/FileDeleteHelper.java new file mode 100755 index 0000000..3355c20 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/FileDeleteHelper.java @@ -0,0 +1,15 @@ +package li.netcube.mcvm.util; + +import java.io.File; + +public class FileDeleteHelper { + public static boolean deleteDirectory(File directoryToBeDeleted) { + File[] allContents = directoryToBeDeleted.listFiles(); + if (allContents != null) { + for (File file : allContents) { + deleteDirectory(file); + } + } + return directoryToBeDeleted.delete(); + } +} diff --git a/src/main/java/li/netcube/mcvm/util/FileDownloadHelper.java b/src/main/java/li/netcube/mcvm/util/FileDownloadHelper.java new file mode 100755 index 0000000..4672d98 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/FileDownloadHelper.java @@ -0,0 +1,215 @@ +package li.netcube.mcvm.util; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.*; +import java.net.*; +import java.util.*; + +// This class downloads a file from a URL. +public class FileDownloadHelper extends Observable implements Runnable { + + // Max size of download buffer. + private static final int MAX_BUFFER_SIZE = 1024; + + // These are the status names. + public static final String STATUSES[] = {"Downloading", + "Paused", "Complete", "Cancelled", "Error"}; + + // These are the status codes. + public static final int DOWNLOADING = 0; + public static final int PAUSED = 1; + public static final int COMPLETE = 2; + public static final int CANCELLED = 3; + public static final int ERROR = 4; + + private File destinationFile; + + private URL url; // download URL + private int size; // size of download in bytes + private int downloaded; // number of bytes downloaded + private int status; // current status of download + + // Constructor for Download. + public FileDownloadHelper(URL url, File destinationFile) { + this.destinationFile = destinationFile; + this.url = url; + size = -1; + downloaded = 0; + status = DOWNLOADING; + + // Begin the download. + download(); + } + + // Get this download's URL. + public String getUrl() { + return url.toString(); + } + + // Get this download's size. + public int getSize() { + return size; + } + + // Get this download's progress. + public float getProgress() { + return ((float) downloaded / size) * 100; + } + + // Get this download's status. + public int getStatus() { + return status; + } + + // Pause this download. + public void pause() { + status = PAUSED; + stateChanged(); + } + + // Resume this download. + public void resume() { + status = DOWNLOADING; + stateChanged(); + download(); + } + + // Cancel this download. + public void cancel() { + status = CANCELLED; + stateChanged(); + } + + // Mark this download as having an error. + private void error() { + status = ERROR; + stateChanged(); + } + + // Start or resume downloading. + private void download() { + Thread thread = new Thread(this); + thread.start(); + } + + // Get file name portion of URL. + private String getFileName(URL url) { + String fileName = url.getFile(); + return fileName.substring(fileName.lastIndexOf('/') + 1); + } + + // Download file. + public void run() { + RandomAccessFile file = null; + InputStream stream = null; + + // Create a trust manager that does not validate certificate chains + TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + public void checkServerTrusted( + java.security.cert.X509Certificate[] certs, String authType) { + } + } + }; + + try { + SSLContext sc = SSLContext.getInstance("SSL"); + sc.init(null, trustAllCerts, new java.security.SecureRandom()); + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); + HttpsURLConnection connection = + (HttpsURLConnection) url.openConnection(); + + // Specify what portion of file to download. + connection.setRequestProperty("Range", + "bytes=" + downloaded + "-"); + + // Connect to server. + connection.connect(); + + // Make sure response code is in the 200 range. + if (connection.getResponseCode() / 100 != 2) { + error(); + } + + // Check for valid content length. + int contentLength = connection.getContentLength(); + if (contentLength < 1) { + error(); + } + + /* Set the size for this download if it + hasn't been already set. */ + if (size == -1) { + size = contentLength; + stateChanged(); + } + + // Open file and seek to the end of it. + file = new RandomAccessFile(destinationFile, "rw"); + file.seek(downloaded); + + stream = connection.getInputStream(); + while (status == DOWNLOADING) { + /* Size buffer according to how much of the + file is left to download. */ + byte buffer[]; + if (size - downloaded > MAX_BUFFER_SIZE) { + buffer = new byte[MAX_BUFFER_SIZE]; + } else { + buffer = new byte[size - downloaded]; + } + + // Read from server into buffer. + int read = stream.read(buffer); + if (read == -1) + break; + + // Write buffer to file. + file.write(buffer, 0, read); + downloaded += read; + stateChanged(); + } + + /* Change status to complete if this point was + reached because downloading has finished. */ + if (status == DOWNLOADING) { + status = COMPLETE; + stateChanged(); + } + } catch (Exception e) { + e.printStackTrace(); + error(); + } finally { + // Close file. + if (file != null) { + try { + file.close(); + } catch (Exception e) { + e.printStackTrace();} + } + + // Close connection to server. + if (stream != null) { + try { + stream.close(); + } catch (Exception e) { + e.printStackTrace();} + } + } + } + + // Notify observers that this download's status has changed. + private void stateChanged() { + setChanged(); + notifyObservers(); + } +} diff --git a/src/main/java/li/netcube/mcvm/util/IniFile.java b/src/main/java/li/netcube/mcvm/util/IniFile.java new file mode 100755 index 0000000..6a98c1a --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/IniFile.java @@ -0,0 +1,79 @@ +package li.netcube.mcvm.util; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class IniFile { + + private Pattern _section = Pattern.compile( "\\s*\\[([^]]*)\\]\\s*" ); + private Pattern _keyValue = Pattern.compile( "\\s*([^=]*)=(.*)" ); + private Map< String, + Map< String, + String >> _entries = new HashMap<>(); + + public IniFile( String path ) throws IOException { + load( path ); + } + + public void load( String path ) throws IOException { + try( BufferedReader br = new BufferedReader( new FileReader( path ))) { + String line; + String section = null; + while(( line = br.readLine()) != null ) { + Matcher m = _section.matcher( line ); + if( m.matches()) { + section = m.group( 1 ).trim(); + } + else if( section != null ) { + m = _keyValue.matcher( line ); + if( m.matches()) { + String key = m.group( 1 ).trim(); + String value = m.group( 2 ).trim(); + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + _entries.put( section, kv = new HashMap<>()); + } + kv.put( key, value ); + } + } + } + } + } + + public String getString( String section, String key, String defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return kv.get( key ); + } + + public int getInt( String section, String key, int defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return Integer.parseInt( kv.get( key )); + } + + public float getFloat( String section, String key, float defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return Float.parseFloat( kv.get( key )); + } + + public double getDouble( String section, String key, double defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return Double.parseDouble( kv.get( key )); + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/util/ProgressBarWindow.java b/src/main/java/li/netcube/mcvm/util/ProgressBarWindow.java new file mode 100755 index 0000000..661af12 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/ProgressBarWindow.java @@ -0,0 +1,69 @@ +package li.netcube.mcvm.util; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class ProgressBarWindow extends JPanel { + + private JProgressBar progressBar; + private JLabel statusLabel; + private JFrame frame; + + private String statusText; + private int progressValue; + + public ProgressBarWindow() { + super(new BorderLayout()); + progressBar = new JProgressBar(0, 100); + progressBar.setValue(0); + progressBar.setStringPainted(true); + progressBar.setPreferredSize( new Dimension (512, 32)); + + statusLabel = new JLabel(); + statusLabel.setText("Please Wait..."); + statusLabel.setPreferredSize( new Dimension (512, 32)); + + //JPanel panel = new JPanel(); + add(progressBar,BorderLayout.PAGE_START); + add(statusLabel,BorderLayout.PAGE_END); + + //add(panel, BorderLayout.PAGE_START); + setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); + } + + /** + * Create the GUI and show it. As with all GUI code, this must run + * on the event-dispatching thread. + */ + public void createAndShowGUI() { + //Create and set up the window. + frame = new JFrame("Minecraft Virtual Machines Redistributable Installer"); + frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + //Create and set up the content pane. + JComponent newContentPane = this; + newContentPane.setOpaque(true); //content panes must be opaque + frame.setContentPane(newContentPane); + + //Display the window. + frame.pack(); + frame.setVisible(true); + } + + public void setProgress(int value) { + progressValue = value; + ((ProgressBarWindow)frame.getContentPane()).progressBar.setValue(progressValue); + ((ProgressBarWindow)frame.getContentPane()).progressBar.repaint(); + } + + public void setStatus(String value) { + statusText = value; + ((ProgressBarWindow)frame.getContentPane()).statusLabel.setText(statusText); + } + + public void closeWindow() { + frame.dispose(); + } +} diff --git a/src/main/java/li/netcube/mcvm/util/UnZipHelper.java b/src/main/java/li/netcube/mcvm/util/UnZipHelper.java new file mode 100755 index 0000000..50fd79c --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/UnZipHelper.java @@ -0,0 +1,90 @@ +package li.netcube.mcvm.util; + +import org.apache.commons.compress.utils.IOUtils; +import org.lwjgl.Sys; + +import java.io.*; +import java.lang.reflect.Executable; +import java.nio.channels.FileChannel; +import java.util.Enumeration; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipInputStream; + +public class UnZipHelper { + private int progress; + private int status; + + + public UnZipHelper(File zipfile, File folder) { + Thread unzipThread = new Thread() { + public void run() { + try{ + + if(!folder.exists()){ + folder.mkdir(); + } + + int maxcount = 1; + int count = 1; + + ZipFile zipFile = new ZipFile(zipfile); + try { + Enumeration entries = zipFile.entries(); + while (entries.hasMoreElements()) + { + entries.nextElement(); + maxcount++; + } + + entries = zipFile.entries(); + while (entries.hasMoreElements()) { + ZipEntry entry = entries.nextElement(); + File entryDestination = new File(folder, entry.getName()); + progress = (maxcount/count)*100; + count++; + if (entryDestination.exists()) { + FileDeleteHelper.deleteDirectory(entryDestination); + } + if (entry.isDirectory()) { + entryDestination.mkdirs(); + } else { + entryDestination.getParentFile().mkdirs(); + InputStream in = zipFile.getInputStream(entry); + OutputStream out = new FileOutputStream(entryDestination); + + byte[] buf = new byte[512]; + int len = 0; + while ((len = in.read(buf)) >= 0) + { + out.write(buf, 0, len); + } + + in.close(); + out.close(); + } + } + } finally { + zipFile.close(); + } + + status = 1; + }catch(IOException ex){ + ex.printStackTrace(); + status = -1; + } + } + }; + status = 0; + unzipThread.run(); + } + + public int getProgress() { + return progress; + } + + public int getStatus() { + return status; + } +} + diff --git a/src/main/java/li/netcube/mcvm/util/VMControlMessage.java b/src/main/java/li/netcube/mcvm/util/VMControlMessage.java new file mode 100755 index 0000000..76ea825 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/VMControlMessage.java @@ -0,0 +1,33 @@ +package li.netcube.mcvm.util; + +import io.netty.buffer.ByteBuf; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; + +public class VMControlMessage implements IMessage { + + public VMControlMessage(){} + + public BlockPos computer; + public int command; + + + public VMControlMessage(BlockPos computer, int command) { + this.computer = computer; + this.command = command; + } + + @Override public void toBytes(ByteBuf buf) { + // Writes the int into the buf + buf.writeInt(computer.getX()); + buf.writeInt(computer.getY()); + buf.writeInt(computer.getZ()); + buf.writeInt(command); + } + + @Override public void fromBytes(ByteBuf buf) { + // Reads the int back from the buf. Note that if you have multiple values, you must read in the same order you wrote. + computer = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt()); + command = buf.readInt(); + } +} diff --git a/src/main/java/li/netcube/mcvm/util/VMControlMessageHandler.java b/src/main/java/li/netcube/mcvm/util/VMControlMessageHandler.java new file mode 100755 index 0000000..79de5d3 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/VMControlMessageHandler.java @@ -0,0 +1,95 @@ +package li.netcube.mcvm.util; + +import li.netcube.mcvm.common.items.NetworkCard; +import li.netcube.mcvm.common.items.VMStorageItem; +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import li.netcube.mcvm.util.vm.VirtualMachine; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.network.simpleimpl.IMessage; +import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; +import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; +import net.minecraftforge.items.ItemStackHandler; + +import java.io.File; + +public class VMControlMessageHandler implements IMessageHandler { + @Override + public IMessage onMessage(VMControlMessage message, MessageContext ctx) { + // This is the player the packet was sent to the server from + EntityPlayerMP serverPlayer = ctx.getServerHandler().player; + // The value that was sent + BlockPos computer = message.computer; + int command = message.command; + // Execute the action on the main server thread by adding it as a scheduled task + + serverPlayer.getServerWorld().addScheduledTask(() -> { + ComputerContainerTileEntity ccte = (ComputerContainerTileEntity) serverPlayer.getServerWorld().getTileEntity(computer); + if (ccte != null) { + switch (command) { + case 1: + if (!ccte.vm.isRunning()) { + ItemStackHandler ish = ccte.getItemStackHandler(); + String hdd0 = VMStorageItem.getFilename(ish.getStackInSlot(0)); + String hdd1 = VMStorageItem.getFilename(ish.getStackInSlot(1)); + int memory = 0; + if (ish.getStackInSlot(2).getItem() == li.netcube.mcvm.common.items.Items.memory1) { + memory += 256; + } else if (ish.getStackInSlot(2).getItem() == li.netcube.mcvm.common.items.Items.memory2) { + memory += 512; + } + if (ish.getStackInSlot(3).getItem() == li.netcube.mcvm.common.items.Items.memory1) { + memory += 256; + } else if (ish.getStackInSlot(3).getItem() == li.netcube.mcvm.common.items.Items.memory2) { + memory += 512; + } + String cd0 = VMStorageItem.getFilename(ish.getStackInSlot(4)); + String cd1 = VMStorageItem.getFilename(ish.getStackInSlot(5)); + String floppy0 = VMStorageItem.getFilename(ish.getStackInSlot(6)); + String floppy1 = VMStorageItem.getFilename(ish.getStackInSlot(7)); + + String nic = null; + + if (!ish.getStackInSlot(8).isEmpty()) { + nic = ((NetworkCard) ish.getStackInSlot(8).getItem()).getType(); + } + + File fHdd0 = (hdd0 == null) ? null : new File(hdd0); + File fHdd1 = (hdd1 == null) ? null : new File(hdd1); + File fCd0 = (cd0 == null) ? null : new File(cd0); + File fCd1 = (cd1 == null) ? null : new File(cd1); + File fFloppy0 = (floppy0 == null) ? null : new File(floppy0); + File fFloppy1 = (floppy1 == null) ? null : new File(floppy1); + + + ccte.vm = new VirtualMachine(ccte, ccte.vm.id, ccte.PASSWD, memory + "M", fHdd0, fHdd1, fFloppy0, fFloppy1, fCd0, fCd1, nic, computer); + ccte.vm.start(); + } + break; + + case 2: + if (ccte.vm.isRunning()) { + ccte.vm.stop(); + } + break; + + case 3: + if (ccte.vm.isRunning()) { + ccte.vm.reset(); + } + break; + + default: + break; + + } + + } + }); + // No response packet + return null; + } +} diff --git a/src/main/java/li/netcube/mcvm/util/tcpClient/TCPClient.java b/src/main/java/li/netcube/mcvm/util/tcpClient/TCPClient.java new file mode 100755 index 0000000..2a36782 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/tcpClient/TCPClient.java @@ -0,0 +1,25 @@ +package li.netcube.mcvm.util.tcpClient; + +import java.io.*; +import java.net.*; + +public class TCPClient { + + private Socket client; + + public TCPClient(String host, int port) throws IOException { + client = new Socket(host, port); + } + + public void close() throws IOException { + client.close(); + } + + public InputStream getInputStream() throws IOException { + return client.getInputStream(); + } + + public OutputStream getOutputStream() throws IOException { + return client.getOutputStream(); + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java b/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java new file mode 100755 index 0000000..4fedc9a --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java @@ -0,0 +1,90 @@ +package li.netcube.mcvm.util.vm; + +import li.netcube.mcvm.MCVM; +import org.apache.commons.io.FileUtils; +import net.minecraft.server.MinecraftServer; +import org.apache.commons.lang3.SystemUtils; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; + +public class MachineManager { + // Images + + + + public static boolean createHddImage(File img_file, String size) { + Process process; + Runtime r = Runtime.getRuntime(); + boolean success = false; + try { + ProcessBuilder builder = new ProcessBuilder(); + File gameFolder = new File("."); + if (SystemUtils.IS_OS_WINDOWS) { + process = Runtime.getRuntime().exec("bin\\qemu\\qemu-img.exe create -f qcow2 " + "\"" + img_file + "\" " + size, null, gameFolder); + process.waitFor(); + } else if (SystemUtils.IS_OS_LINUX) { + process = Runtime.getRuntime().exec("qemu-img create -f qcow2 \"" + img_file + "\" " + size, null, gameFolder); + process.waitFor(); + } + //builder.redirectOutput(new File("syslog.txt")); + //builder.redirectError(new File("errlog.txt")); + + success = img_file.exists(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + return success; + } + + public static boolean createFloppyImage(File img_file) { + Runtime r = Runtime.getRuntime(); + boolean success = false; + File blank_img = new File("resource/blank.img"); + try { + FileUtils.copyFile(blank_img, img_file); + success = true; + } catch (IOException e) { + e.printStackTrace(); + } + return success; + } + + public static boolean checkImage(File img_file) { + return img_file.exists(); + } + + // End Images + + + // Image Tools + + public static File getImageFile(String filename, String type, MinecraftServer server) { + if (server.isDedicatedServer()) { + return new File(server.getFolderName() + "/" + filename + type); + } else { + return new File("saves/" + server.getFolderName() + "/" + filename + type); + } + } + + // End Image Tools + + + // Machines + + public static void startMachine(VirtualMachine vm) { + vm.start(); + } + + public static void stopMachine(VirtualMachine vm) { + vm.stop(); + } + + // End Machines + +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java b/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java new file mode 100755 index 0000000..102bcff --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java @@ -0,0 +1,342 @@ +package li.netcube.mcvm.util.vm; + +import li.netcube.mcvm.MCVM; + +import java.io.*; +import java.util.concurrent.TimeUnit; + +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import li.netcube.mcvm.util.tcpClient.*; +import li.netcube.mcvm.util.vm.commands.ICommandParser; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.apache.commons.lang3.SystemUtils; +import org.lwjgl.Sys; + + +public class VirtualMachine { + public File hdd0 = null; + public File hdd1 = null; + + public File floppy0 = null; + public File floppy1 = null; + + public File cd0 = null; + public File cd1 = null; + + public String memory; + + public Process process = null; + + public String nic = null; + + public int id = 0; + + public int VNCPort = 40000; + public int MONPort = 40100; + public int COMPort = 40200; + + public String password; + + public TCPClient monitor; + public TCPClient serial; + + public BlockPos computerPos; + + private Thread serialThread; + private Thread processWatcherThread; + + private ComputerContainerTileEntity ccte; + + + public VirtualMachine(ComputerContainerTileEntity ccte, int id, String password, String memory, File hdd0, File hdd1, File floppy0, File floppy1, File cd0, File cd1, String nic, BlockPos computerPos) { + this.ccte = ccte; + + this.id = id; + + this.VNCPort = 40000 + id; + this.MONPort = 40100 + id; + this.COMPort = 40200 + id; + + this.memory = memory; + this.hdd0 = hdd0; + this.hdd1 = hdd1; + this.floppy0 = floppy0; + this.floppy1 = floppy1; + this.cd0 = cd0; + this.cd1 = cd1; + + this.nic = nic; + + this.computerPos = computerPos; + + this.password = password; + } + + public void setUid(int id) { + + this.id = id; + + this.VNCPort = 40000 + id; + this.MONPort = 40100 + id; + this.COMPort = 40200 + id; + } + + public void setPassword(String password) { + this.password = password; + //System.out.println(this.password); + } + + public void start() { + if (this.process == null || !this.process.isAlive()) { + if (!(this.memory.contains("256") || this.memory.contains("512") || this.memory.contains("768") || this.memory.contains("1024"))) { + return; + } + + //If qemu is already running try to stop it. + try { + TCPClient tmpMon = new TCPClient("127.0.0.1", this.MONPort); + tmpMon.getOutputStream().write(("quit\n").getBytes("UTF-8")); + tmpMon.getOutputStream().flush(); + tmpMon.close(); + } catch (Exception ignored) {} + + //-accel hax + //-accel tcg,thread=multi + + String commandLine = "-vga std -smp 4 -usbdevice tablet -k bin/qemu/keymaps/mcvm -boot menu=on,splash=resource/splash.bmp,splash-time=2500 -monitor tcp::" + MONPort + ",server,nowait -serial tcp::" + COMPort + ",server,nowait -vnc :" + (VNCPort - 5900) + ",password"; + + if (!MCVM.modConfig.getString("VirtualMachine", "customArguments", "").equals("")) { + commandLine += " " + MCVM.modConfig.getString("VirtualMachine","customArguments", ""); + } + + if (this.nic != null) commandLine = commandLine + " -netdev user,id=n0 -device " + this.nic + ",netdev=n0"; + else commandLine = commandLine + " -net none"; + + if (this.hdd0 != null) commandLine = commandLine + " -drive if=ide,index=0,media=disk,file=\"" + this.hdd0 + "\""; + if (this.hdd1 != null) commandLine = commandLine + " -drive if=ide,index=1,media=disk,file=\"" + this.hdd1 + "\""; + commandLine = commandLine + " -drive if=ide,index=2,media=cdrom" + ((this.cd0 != null) ? ",file=\"" + this.cd0 + "\"" : ""); + commandLine = commandLine + " -drive if=ide,index=3,media=cdrom" + ((this.cd1 != null) ? ",file=\"" + this.cd1 + "\"" : ""); + + commandLine = commandLine + " -drive if=floppy,index=0" + ((this.floppy0 != null) ? ",file=\"" + this.floppy0 + "\"" : ""); + commandLine = commandLine + " -drive if=floppy,index=1" + ((this.floppy1 != null) ? ",file=\"" + this.floppy1 + "\"" : ""); + + commandLine = commandLine + " -m " + this.memory; + + Runtime r = Runtime.getRuntime(); + try { + ProcessBuilder builder = new ProcessBuilder(); + File gameFolder = new File(new File("./").getAbsolutePath()).getParentFile(); + if (SystemUtils.IS_OS_WINDOWS) { + this.process = Runtime.getRuntime().exec("bin/qemu/qemu-system-x86_64w.exe " + commandLine, null, gameFolder); + } else if (SystemUtils.IS_OS_LINUX) { + this.process = Runtime.getRuntime().exec("qemu-system-x86_64 " + commandLine, null, gameFolder); + } + builder.directory(gameFolder); + //System.out.println(commandLine); + //builder.redirectOutput(new File("vmlog.txt")); + //builder.redirectError(new File("errlog.txt")); + //System.out.println(); + + MCVM.virtualMachines.add(this); + + Thread.sleep(500); + + this.monitor = new TCPClient("127.0.0.1", this.MONPort); + this.serial = new TCPClient("127.0.0.1", this.COMPort); + + this.monitor.getOutputStream().write(("change vnc password" + "\n").getBytes("UTF-8")); + this.monitor.getOutputStream().write((this.password + "\n").getBytes("UTF-8")); + //System.out.println(this.password); + this.monitor.getOutputStream().flush(); + + serialThread = new Thread() { + public void run() { + try { + InputStream is = serial.getInputStream(); + OutputStream os = serial.getOutputStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); + String lastCommand; + + while (process.isAlive()) { + try { + lastCommand = br.readLine(); + bw.write(parseCommand(lastCommand)); + bw.newLine(); + bw.flush(); + } catch (Exception ignored) {} + } + + } catch (Exception ignored) {} + } + }; + serialThread.start(); + + processWatcherThread = new Thread() { + public void run() { + while (process.isAlive()) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + TileEntity tileEntity = ccte; + if (tileEntity instanceof ComputerContainerTileEntity) { + ((ComputerContainerTileEntity) tileEntity).outPowerSides = new int[] {0,0,0,0,0,0}; + ccte.setPoweredOn(false); + ccte.getWorld().notifyNeighborsOfStateChange(computerPos, ccte.getWorld().getBlockState(computerPos).getBlock(), true); + } + } + }; + processWatcherThread.start(); + + ccte.setPoweredOn(true); + + ccte.getWorld().scheduleBlockUpdate(computerPos, ccte.getWorld().getBlockState(computerPos).getBlock(), 4, 1); + + } catch (Exception ignored) { + //ignored.printStackTrace(); + } + } + } + + public void stop() { + try { + if (this.isRunning()) { + //this.monitor.getOutputStream().write("quit\n".getBytes("UTF-8")); + //this.monitor.getOutputStream().flush(); + //this.process.waitFor(5, TimeUnit.SECONDS); + if (this.isRunning()) { + this.process.destroyForcibly(); + } + MCVM.virtualMachines.remove(this); + serialThread.stop(); + processWatcherThread.stop(); + serial.close(); + monitor.close(); + ccte.setPoweredOn(false); + } + } catch (Exception ignored) {} + } + + public void reset() { + //system_reset + try { + if (this.isRunning()) { + this.monitor.getOutputStream().write(("system_reset\n").getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setFloppy0(File file) { + try { + this.floppy0 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f floppy0\n".getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + if (this.floppy0 != null) { + this.monitor.getOutputStream().write(("change floppy0 \"" + this.floppy0.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + } + //System.out.println("FLOPPY0 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setFloppy1(File file) { + try { + this.floppy1 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f floppy1\n".getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + if (this.floppy1 != null) { + this.monitor.getOutputStream().write(("change floppy1 \"" + this.floppy1.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + } + //System.out.println("FLOPPY1 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setCd0(File file) { + try { + this.cd0 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f ide1-cd0\n".getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + if (this.cd0 != null) { + this.monitor.getOutputStream().write(("change ide1-cd0 \"" + this.cd0.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + } + //System.out.println("IDE1-CD0 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setCd1(File file) { + try { + this.cd1 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f ide1-cd1\n".getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + if (this.cd1 != null) { + this.monitor.getOutputStream().write(("change ide1-cd1 \"" + this.cd1.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); + this.monitor.getOutputStream().flush(); + } + //System.out.println("IDE1-CD1 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public boolean isRunning() { + if (this.process == null) { + return false; + } + if (this.process.isAlive()) { + return true; + } + return false; + } + + public String parseCommand(String command) { + TileEntity tileEntity = ccte; + World world = ccte.getWorld(); + if (tileEntity instanceof ComputerContainerTileEntity) { + for (ICommandParser commandParser : MCVM.registeredCommandParsers) { + if (commandParser.canHandleCommand(command, (ComputerContainerTileEntity)tileEntity)) { + return commandParser.parseCommand(command, (ComputerContainerTileEntity)tileEntity); + } + } + } + return "error.unknown.command"; + } +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java b/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java new file mode 100755 index 0000000..31833bb --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java @@ -0,0 +1,8 @@ +package li.netcube.mcvm.util.vm.commands; + +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; + +public interface ICommandParser { + boolean canHandleCommand(String command, ComputerContainerTileEntity computerTileEntity); + String parseCommand(String command, ComputerContainerTileEntity computerTileEntity); +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java b/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java new file mode 100755 index 0000000..004fb0e --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java @@ -0,0 +1,117 @@ +package li.netcube.mcvm.util.vm.commands; + +import li.netcube.mcvm.common.blocks.ComputerBlock; +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; + +public class RedstoneCommandParser implements ICommandParser { + @Override + public boolean canHandleCommand(String command, ComputerContainerTileEntity computerTileEntity) { + String[] commandParts = command.split("\\."); + if (commandParts.length >= 2) { + if (commandParts[0].equals("redstone") && (commandParts[1].equals("get") || commandParts[1].equals("set"))) { + return true; + } + } + return false; + } + + @Override + public String parseCommand(String command, ComputerContainerTileEntity computerTileEntity) { + String[] commandParts = command.split("\\."); + if (commandParts.length >= 2) switch (commandParts[0] + "." + commandParts[1] + "." + commandParts[2]) { + case "redstone.set.up": + computerTileEntity.setOutputState(EnumFacing.UP, Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.down": + computerTileEntity.setOutputState(EnumFacing.DOWN, Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.north": + computerTileEntity.setOutputState(EnumFacing.NORTH.getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.east": + computerTileEntity.setOutputState(EnumFacing.EAST.getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.south": + computerTileEntity.setOutputState(EnumFacing.SOUTH.getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.west": + computerTileEntity.setOutputState(EnumFacing.WEST.getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.top": + computerTileEntity.setOutputState(EnumFacing.UP, Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.bottom": + computerTileEntity.setOutputState(EnumFacing.DOWN, Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.front": + computerTileEntity.setOutputState(convertDirectionToFace("front", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.back": + computerTileEntity.setOutputState(convertDirectionToFace("back", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.left": + computerTileEntity.setOutputState(convertDirectionToFace("left", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + case "redstone.set.right": + computerTileEntity.setOutputState(convertDirectionToFace("right", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); + return "ok"; + + case "redstone.get.up": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.UP), EnumFacing.UP.getOpposite())); + case "redstone.get.down": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.DOWN), EnumFacing.DOWN.getOpposite())); + case "redstone.get.north": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.NORTH), EnumFacing.NORTH.getOpposite())); + case "redstone.get.east": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.EAST), EnumFacing.EAST.getOpposite())); + case "redstone.get.south": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.SOUTH), EnumFacing.SOUTH.getOpposite())); + case "redstone.get.west": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.WEST), EnumFacing.WEST.getOpposite())); + case "redstone.get.top": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.UP), EnumFacing.UP.getOpposite())); + case "redstone.get.bottom": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.DOWN), EnumFacing.DOWN.getOpposite())); + case "redstone.get.front": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("front", computerTileEntity)), convertDirectionToFace("front", computerTileEntity).getOpposite())); + case "redstone.get.back": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("back", computerTileEntity)), convertDirectionToFace("back", computerTileEntity).getOpposite())); + case "redstone.get.left": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("left", computerTileEntity)), convertDirectionToFace("left", computerTileEntity).getOpposite())); + case "redstone.get.right": + return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("right", computerTileEntity)), convertDirectionToFace("right", computerTileEntity).getOpposite())); + } + return "error.parse.failed"; + } + + + public EnumFacing convertDirectionToFace(String dir, ComputerContainerTileEntity computerContainerTileEntity) { + World world = computerContainerTileEntity.getWorld(); + EnumFacing computerFacing = world.getBlockState(computerContainerTileEntity.getPos()).getValue(ComputerBlock.Properties.FACING); + + switch (dir.toLowerCase()) { + case "up": return EnumFacing.UP; + case "down": return EnumFacing.DOWN; + case "left": + switch (computerFacing) { + case NORTH: return EnumFacing.EAST; + case EAST: return EnumFacing.SOUTH; + case SOUTH: return EnumFacing.WEST; + case WEST: return EnumFacing.NORTH; + } break; + case "right": + switch (computerFacing) { + case NORTH: return EnumFacing.WEST; + case EAST: return EnumFacing.NORTH; + case SOUTH: return EnumFacing.EAST; + case WEST: return EnumFacing.SOUTH; + } break; + case "front": return computerFacing; + case "back": return computerFacing.getOpposite(); + } + + return computerFacing; + } +} \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/util/vnc/Keymap.java b/src/main/java/li/netcube/mcvm/util/vnc/Keymap.java new file mode 100755 index 0000000..ec7ec00 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/vnc/Keymap.java @@ -0,0 +1,165 @@ +package li.netcube.mcvm.util.vnc; + +import org.lwjgl.input.Keyboard; + +import java.security.Key; + +public class Keymap { + /*public static int oldKeyConvert(int key, char ch) { + //System.out.println("Key: " + key); + //System.out.println(" Ch: " + ch); + switch (key) { + case Keyboard.KEY_BACK: return 0xff08; + case Keyboard.KEY_TAB: return 0xff09; + case Keyboard.KEY_RETURN: return 0xff0d; + case Keyboard.KEY_ESCAPE: return 0xff1b; + case Keyboard.KEY_INSERT: return 0xff63; + case Keyboard.KEY_DELETE: return 0xffff; + case Keyboard.KEY_HOME: return 0xff50; + case Keyboard.KEY_END: return 0xff57; + case 201: return 0xff55; //PG UP + case 209: return 0xff56; //PG DN + case Keyboard.KEY_LEFT: return 0xff51; + case Keyboard.KEY_UP: return 0xff52; + case Keyboard.KEY_RIGHT: return 0xff53; + case Keyboard.KEY_DOWN: return 0xff54; + case Keyboard.KEY_F1: return 0xffbe; + case Keyboard.KEY_F2: return 0xffbf; + case Keyboard.KEY_F3: return 0xffc0; + case Keyboard.KEY_F4: return 0xffc1; + case Keyboard.KEY_F5: return 0xffc2; + case Keyboard.KEY_F6: return 0xffc3; + case Keyboard.KEY_F7: return 0xffc4; + case Keyboard.KEY_F8: return 0xffc5; + case Keyboard.KEY_F9: return 0xffc6; + case Keyboard.KEY_F10: return 0xffc7; + case Keyboard.KEY_F11: return 0xffc8; + case Keyboard.KEY_F12: return 0xffc9; + case Keyboard.KEY_LSHIFT: return 0xffe1; + case Keyboard.KEY_RSHIFT: return 0xffe1; + case Keyboard.KEY_LCONTROL: return 0xffe3; + case Keyboard.KEY_RCONTROL: return 0xffe3; + case Keyboard.KEY_LMETA: return 0xffe7; + case Keyboard.KEY_RMETA: return 0xffe7; + case 56: return 0xffe9; //ALT + } + return ch; + }*/ + + public static int keyConvert(int key, int ch) { + switch (key) { + case Keyboard.KEY_ESCAPE: return 0xFF1B; + case Keyboard.KEY_1: return 0x31; + case Keyboard.KEY_2: return 0x32; + case Keyboard.KEY_3: return 0x33; + case Keyboard.KEY_4: return 0x34; + case Keyboard.KEY_5: return 0x35; + case Keyboard.KEY_6: return 0x36; + case Keyboard.KEY_7: return 0x37; + case Keyboard.KEY_8: return 0x38; + case Keyboard.KEY_9: return 0x39; + case Keyboard.KEY_0: return 0x30; + case 26: return 0x2D; //MINUS + case 27: return 0x3D; //EQUALS + case Keyboard.KEY_BACK: return 0xFF08; + case Keyboard.KEY_TAB: return 0xFF09; + case Keyboard.KEY_Q: if (isUpperCase(ch)) return 0x51; else return 0x71; + case Keyboard.KEY_W: if (isUpperCase(ch)) return 0x57; else return 0x77; + case Keyboard.KEY_E: if (isUpperCase(ch)) return 0x45; else return 0x65; + case Keyboard.KEY_R: if (isUpperCase(ch)) return 0x52; else return 0x72; + case Keyboard.KEY_T: if (isUpperCase(ch)) return 0x54; else return 0x74; + case Keyboard.KEY_Y: if (isUpperCase(ch)) return 0x59; else return 0x79; + case Keyboard.KEY_U: if (isUpperCase(ch)) return 0x55; else return 0x75; + case Keyboard.KEY_I: if (isUpperCase(ch)) return 0x49; else return 0x69; + case Keyboard.KEY_O: if (isUpperCase(ch)) return 0x4F; else return 0x6F; + case Keyboard.KEY_P: if (isUpperCase(ch)) return 0x50; else return 0x70; + case 39: return 0x5B; //LBRACKET + case 13: return 0x5D; //RBRACKET + case Keyboard.KEY_RETURN: return 0xFF0D; + case Keyboard.KEY_LCONTROL: return 0xFFE3; + case Keyboard.KEY_A: if (isUpperCase(ch)) return 0x41; else return 0x61; + case Keyboard.KEY_S: if (isUpperCase(ch)) return 0x53; else return 0x73; + case Keyboard.KEY_D: if (isUpperCase(ch)) return 0x44; else return 0x64; + case Keyboard.KEY_F: if (isUpperCase(ch)) return 0x46; else return 0x66; + case Keyboard.KEY_G: if (isUpperCase(ch)) return 0x47; else return 0x67; + case Keyboard.KEY_H: if (isUpperCase(ch)) return 0x48; else return 0x68; + case Keyboard.KEY_J: if (isUpperCase(ch)) return 0x4A; else return 0x6A; + case Keyboard.KEY_K: if (isUpperCase(ch)) return 0x4B; else return 0x6B; + case Keyboard.KEY_L: if (isUpperCase(ch)) return 0x4C; else return 0x6C; + case 41: return 0x3B; //SEMICOLON + case Keyboard.KEY_APOSTROPHE: return 0x27; + case 43: return 0x60; //GRAVE + case Keyboard.KEY_LSHIFT: return 0xFFE1; + case 53: return 0x5C; //BACKSLASH + case Keyboard.KEY_Z: if (isUpperCase(ch)) return 0x5A; else return 0x7A; + case Keyboard.KEY_X: if (isUpperCase(ch)) return 0x58; else return 0x78; + case Keyboard.KEY_C: if (isUpperCase(ch)) return 0x43; else return 0x63; + case Keyboard.KEY_V: if (isUpperCase(ch)) return 0x56; else return 0x76; + case Keyboard.KEY_B: if (isUpperCase(ch)) return 0x42; else return 0x62; + case Keyboard.KEY_N: if (isUpperCase(ch)) return 0x4E; else return 0x6E; + case Keyboard.KEY_M: if (isUpperCase(ch)) return 0x4D; else return 0x6D; + case Keyboard.KEY_COMMA: return 0x2C; + case Keyboard.KEY_PERIOD: return 0x2E; + case 12: return 0x2F; //SLASH + case Keyboard.KEY_RSHIFT: return 0xFFE2; + case Keyboard.KEY_MULTIPLY: return 0xFFAA; + case Keyboard.KEY_LMENU: return 0xFFE9; + case Keyboard.KEY_SPACE: return 0x20; + case Keyboard.KEY_CAPITAL: return 0xFFE5; + case Keyboard.KEY_F1: return 0xFFBE; + case Keyboard.KEY_F2: return 0xFFBF; + case Keyboard.KEY_F3: return 0xFFC0; + case Keyboard.KEY_F4: return 0xFFC1; + case Keyboard.KEY_F5: return 0xFFC2; + case Keyboard.KEY_F6: return 0xFFC3; + case Keyboard.KEY_F7: return 0xFFC4; + case Keyboard.KEY_F8: return 0xFFC5; + case Keyboard.KEY_F9: return 0xFFC6; + case Keyboard.KEY_F10: return 0xFFC7; + case Keyboard.KEY_NUMLOCK: return 0xFF7F; + case Keyboard.KEY_SCROLL: return 0xFF14; + case Keyboard.KEY_NUMPAD7: if (isNumber(ch)) return 0x37; else return 0xFF95; + case Keyboard.KEY_NUMPAD8: if (isNumber(ch)) return 0x38; else return 0xFF97; + case Keyboard.KEY_NUMPAD9: if (isNumber(ch)) return 0x39; else return 0xFF9A; + case Keyboard.KEY_SUBTRACT: return 0xFFAD; + case Keyboard.KEY_NUMPAD4: if (isNumber(ch)) return 0x34; else return 0xFF96; + case Keyboard.KEY_NUMPAD5: if (isNumber(ch)) return 0x35; else return 0xFF9D; + case Keyboard.KEY_NUMPAD6: if (isNumber(ch)) return 0x36; else return 0xFF98; + case Keyboard.KEY_ADD: return 0xFFAB; + case Keyboard.KEY_NUMPAD1: if (isNumber(ch)) return 0x31; else return 0xFF9C; + case Keyboard.KEY_NUMPAD2: if (isNumber(ch)) return 0x32; else return 0xFF99; + case Keyboard.KEY_NUMPAD3: if (isNumber(ch)) return 0x33; else return 0xFF9B; + case Keyboard.KEY_NUMPAD0: if (isNumber(ch)) return 0x30; else return 0xFF9E; + case Keyboard.KEY_NUMPADCOMMA: if (ch == 0x2C) return 0x2C; else return 0xFF9F; + case Keyboard.KEY_F11: return 0xFFC8; + case Keyboard.KEY_F12: return 0xFFC9; + case Keyboard.KEY_CONVERT: return 0xFF23; + case Keyboard.KEY_NUMPADENTER: return 0xFF8D; + case Keyboard.KEY_RCONTROL: return 0xFFE4; + case Keyboard.KEY_DIVIDE: return 0xFFAF; + case Keyboard.KEY_RMENU: return 0xFFEA; + case Keyboard.KEY_HOME: return 0xFF50; + case Keyboard.KEY_UP: return 0xFF52; + case Keyboard.KEY_PRIOR: return 0xFF55; + case Keyboard.KEY_LEFT: return 0xFF51; + case Keyboard.KEY_RIGHT: return 0xFF53; + case Keyboard.KEY_END: return 0xFF57; + case Keyboard.KEY_DOWN: return 0xFF54; + case Keyboard.KEY_NEXT: return 0xFF56; + case Keyboard.KEY_INSERT: return 0xFF63; + case Keyboard.KEY_DELETE: return 0xFFFF; + case Keyboard.KEY_LMETA: return 0xFFE7; + case Keyboard.KEY_RMETA: return 0xFFE8; + case Keyboard.KEY_APPS: return 0xFF67; + default: return ch; + } + } + + private static boolean isUpperCase(int ch) { + return (ch >= 0x41 && ch <= 0x5A); + } + + private static boolean isNumber(int ch) { + return (ch >= 0x30 && ch <= 0x39); + } +} diff --git a/src/main/resources/assets/mcvm/blockstates/computer.json b/src/main/resources/assets/mcvm/blockstates/computer.json new file mode 100755 index 0000000..68f4f1e --- /dev/null +++ b/src/main/resources/assets/mcvm/blockstates/computer.json @@ -0,0 +1,35 @@ +{ + "variants": { + "facing=north,on=false": { + "model": "mcvm:computer" + }, + "facing=east,on=false": { + "model": "mcvm:computer", + "y": 90 + }, + "facing=south,on=false": { + "model": "mcvm:computer", + "y": 180 + }, + "facing=west,on=false": { + "model": "mcvm:computer", + "y": 270 + }, + "facing=north,on=true": { + "model": "mcvm:computer_on" + }, + "facing=east,on=true": { + "model": "mcvm:computer_on", + "y": 90 + }, + "facing=south,on=true": { + "model": "mcvm:computer_on", + "y": 180 + }, + "facing=west,on=true": { + "model": "mcvm:computer_on", + "y": 270 + } + } +} + diff --git a/src/main/resources/assets/mcvm/blockstates/display.json b/src/main/resources/assets/mcvm/blockstates/display.json new file mode 100755 index 0000000..2ae198a --- /dev/null +++ b/src/main/resources/assets/mcvm/blockstates/display.json @@ -0,0 +1,20 @@ +{ + "variants": { + "facing=north": { + "model": "mcvm:display" + }, + "facing=east": { + "model": "mcvm:display", + "y": 90 + }, + "facing=south": { + "model": "mcvm:display", + "y": 180 + }, + "facing=west": { + "model": "mcvm:display", + "y": 270 + } + } +} + diff --git a/src/main/resources/assets/mcvm/lang/en_us.lang b/src/main/resources/assets/mcvm/lang/en_us.lang new file mode 100755 index 0000000..16eb6ef --- /dev/null +++ b/src/main/resources/assets/mcvm/lang/en_us.lang @@ -0,0 +1,21 @@ +itemGroup.mcvm=Minecraft Virtual Machines +itemGroup.storage=Storage +tile.computer.name=Computer +tile.display.name=Monitor +item.cdrom.name=Compact Disk +item.harddisk.name=Hard Disk +item.floppy.name=Floppy Disk +item.memory1.name=Memory +item.memory2.name=Memory +item.pcb.name=Printed Circuit Board +item.ic.name=Integrated Circuit Tier 1 +item.ic2.name=Integrated Circuit Tier 2 +item.ic3.name=Integrated Circuit Tier 3 +item.cpu.name=Processor +item.mainboard.name=Mainboard +item.cddrive.name=CD Drive +item.floppydrive.name=Floppy Drive +item.diskplatter.name=Disk Platter +item.nic_ne2k.name=Network Card +item.nic_rtl8139.name=Network Card +item.nic_e1000.name=Network Card \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/block/computer.json b/src/main/resources/assets/mcvm/models/block/computer.json new file mode 100755 index 0000000..2c15197 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/block/computer.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "north": "mcvm:blocks/computer_front", + "south": "mcvm:blocks/computer_back", + "west": "mcvm:blocks/computer_side", + "east": "mcvm:blocks/computer_side", + "up": "mcvm:blocks/computer_top", + "down": "mcvm:blocks/computer_top", + "particle": "mcvm:blocks/computer_back" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/block/computer_on.json b/src/main/resources/assets/mcvm/models/block/computer_on.json new file mode 100755 index 0000000..007160f --- /dev/null +++ b/src/main/resources/assets/mcvm/models/block/computer_on.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "north": "mcvm:blocks/computer_front_on", + "south": "mcvm:blocks/computer_back_on", + "west": "mcvm:blocks/computer_side_on", + "east": "mcvm:blocks/computer_side_on", + "up": "mcvm:blocks/computer_top", + "down": "mcvm:blocks/computer_top", + "particle": "mcvm:blocks/computer_back" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/block/display.json b/src/main/resources/assets/mcvm/models/block/display.json new file mode 100755 index 0000000..337b478 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/block/display.json @@ -0,0 +1,12 @@ +{ + "parent": "block/cube", + "textures": { + "north": "mcvm:blocks/display_front", + "south": "mcvm:blocks/display_back", + "west": "mcvm:blocks/display_side", + "east": "mcvm:blocks/display_side", + "up": "mcvm:blocks/computer_top", + "down": "mcvm:blocks/computer_top", + "particle": "mcvm:blocks/display_back" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/cddrive.json b/src/main/resources/assets/mcvm/models/item/cddrive.json new file mode 100755 index 0000000..9b5cf7a --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/cddrive.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/cddrive" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/cdrom.json b/src/main/resources/assets/mcvm/models/item/cdrom.json new file mode 100755 index 0000000..fdaa83c --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/cdrom.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/cdrom" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/computer.json b/src/main/resources/assets/mcvm/models/item/computer.json new file mode 100755 index 0000000..63e6b50 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/computer.json @@ -0,0 +1,3 @@ +{ + "parent": "mcvm:block/computer" +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/cpu.json b/src/main/resources/assets/mcvm/models/item/cpu.json new file mode 100755 index 0000000..fd19b98 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/cpu.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/cpu" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/diskplatter.json b/src/main/resources/assets/mcvm/models/item/diskplatter.json new file mode 100755 index 0000000..014959b --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/diskplatter.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/diskplatter" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/display.json b/src/main/resources/assets/mcvm/models/item/display.json new file mode 100755 index 0000000..4394eb1 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/display.json @@ -0,0 +1,3 @@ +{ + "parent": "mcvm:block/display" +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/floppy.json b/src/main/resources/assets/mcvm/models/item/floppy.json new file mode 100755 index 0000000..a598a6e --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/floppy.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/floppy" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/floppydrive.json b/src/main/resources/assets/mcvm/models/item/floppydrive.json new file mode 100755 index 0000000..e41006c --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/floppydrive.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/floppydrive" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/harddisk.json b/src/main/resources/assets/mcvm/models/item/harddisk.json new file mode 100755 index 0000000..10a19fe --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/harddisk.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/harddisk" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/ic.json b/src/main/resources/assets/mcvm/models/item/ic.json new file mode 100755 index 0000000..2e8891c --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/ic.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/ic" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/ic2.json b/src/main/resources/assets/mcvm/models/item/ic2.json new file mode 100755 index 0000000..9e65757 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/ic2.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/ic2" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/ic3.json b/src/main/resources/assets/mcvm/models/item/ic3.json new file mode 100755 index 0000000..b541fc4 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/ic3.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/ic3" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/mainboard.json b/src/main/resources/assets/mcvm/models/item/mainboard.json new file mode 100755 index 0000000..309175b --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/mainboard.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/mainboard" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/memory1.json b/src/main/resources/assets/mcvm/models/item/memory1.json new file mode 100755 index 0000000..3327cc7 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/memory1.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/memory1" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/memory2.json b/src/main/resources/assets/mcvm/models/item/memory2.json new file mode 100755 index 0000000..e5f372d --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/memory2.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/memory2" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/nic_e1000.json b/src/main/resources/assets/mcvm/models/item/nic_e1000.json new file mode 100755 index 0000000..6cf132c --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/nic_e1000.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/nic" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/nic_ne2k.json b/src/main/resources/assets/mcvm/models/item/nic_ne2k.json new file mode 100755 index 0000000..6cf132c --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/nic_ne2k.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/nic" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/nic_rtl8139.json b/src/main/resources/assets/mcvm/models/item/nic_rtl8139.json new file mode 100755 index 0000000..6cf132c --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/nic_rtl8139.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/nic" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/models/item/pcb.json b/src/main/resources/assets/mcvm/models/item/pcb.json new file mode 100755 index 0000000..9eb2779 --- /dev/null +++ b/src/main/resources/assets/mcvm/models/item/pcb.json @@ -0,0 +1,19 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "mcvm:items/pcb" + }, + + "display": { + "thirdperson": { + "rotation": [-90,0,0], + "translation": [0,1,-3], + "scale": [0.55,0.55,0.55] + }, + "firstperson": { + "rotation": [0,-135,25], + "translation": [0,4,2], + "scale": [1.7,1.7,1.7] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/alpinecd.json b/src/main/resources/assets/mcvm/recipes/alpinecd.json new file mode 100755 index 0000000..0e93c18 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/alpinecd.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " ", + "IPI", + "CCC" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "minecraft:dye", + "data": 6 + }, + "C": { + "item": "minecraft:glass_pane" + } + }, + "result": { + "item": "mcvm:cdrom", + "nbt": { + "type": "CD", + "filename": "shared/Alpine-3.8.1.iso" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/cddrive.json b/src/main/resources/assets/mcvm/recipes/cddrive.json new file mode 100755 index 0000000..56dbe5f --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/cddrive.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ABA", + "CDC", + "CCC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic2" + }, + "C": { + "item": "minecraft:iron_ingot" + }, + "D": { + "item": "minecraft:redstone_lamp" + } + }, + "result": {"item": "mcvm:cddrive"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/computer.json b/src/main/resources/assets/mcvm/recipes/computer.json new file mode 100755 index 0000000..9489c7e --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/computer.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ABA", + "CDC", + "ABA" + ], + "key": { + "A": { + "item": "minecraft:iron_ingot" + }, + "B": { + "item": "mcvm:floppydrive" + }, + "C": { + "item": "mcvm:cddrive" + }, + "D": { + "item": "mcvm:mainboard" + } + }, + "result": {"item": "mcvm:computer"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/cpu.json b/src/main/resources/assets/mcvm/recipes/cpu.json new file mode 100755 index 0000000..378c558 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/cpu.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ADA", + "DCD", + "ADA" + ], + "key": { + "A": { + "item": "minecraft:gold_nugget" + }, + "C": { + "item": "mcvm:ic3" + }, + "D": { + "item": "mcvm:pcb" + } + }, + "result": {"item": "mcvm:cpu"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/diskplatter.json b/src/main/resources/assets/mcvm/recipes/diskplatter.json new file mode 100755 index 0000000..ee98213 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/diskplatter.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " A ", + "A A", + " A " + ], + "key": { + "A": { + "item": "minecraft:iron_ingot" + } + }, + "result": {"item": "mcvm:diskplatter"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/display.json b/src/main/resources/assets/mcvm/recipes/display.json new file mode 100755 index 0000000..5a759a3 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/display.json @@ -0,0 +1,35 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ABA", + "CDE", + "FGF" + ], + "key": { + "A": { + "item": "mcvm:ic3" + }, + "B": { + "item": "minecraft:redstone_lamp" + }, + "C": { + "item": "minecraft:stained_glass_pane", + "data": 14 + }, + "D": { + "item": "minecraft:stained_glass_pane", + "data": 13 + }, + "E": { + "item": "minecraft:stained_glass_pane", + "data": 11 + }, + "F": { + "item": "minecraft:iron_ingot" + }, + "G": { + "item": "minecraft:glass_pane" + } + }, + "result": {"item": "mcvm:display"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/floppy.json b/src/main/resources/assets/mcvm/recipes/floppy.json new file mode 100755 index 0000000..c65d7bb --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/floppy.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " C ", + "DBD", + " D " + ], + "key": { + "B": { + "item": "minecraft:redstone" + }, + "C": { + "item": "minecraft:iron_ingot" + }, + "D": { + "item": "minecraft:stone", + "data": 0 + } + }, + "result": { + "item": "mcvm:floppy", + "count": 4, + "nbt": { + "CompoundTag": { + "type": "FD" + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/floppydrive.json b/src/main/resources/assets/mcvm/recipes/floppydrive.json new file mode 100755 index 0000000..594b44b --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/floppydrive.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ABA", + "CDC", + "CCC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic" + }, + "C": { + "item": "minecraft:iron_ingot" + }, + "D": { + "item": "minecraft:redstone" + } + }, + "result": {"item": "mcvm:floppydrive"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/hdd128gb.json b/src/main/resources/assets/mcvm/recipes/hdd128gb.json new file mode 100755 index 0000000..94adff0 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/hdd128gb.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "IPI", + "GPG", + "MCM" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "mcvm:diskplatter" + }, + "M": { + "item": "mcvm:ic3" + }, + "C": { + "item": "mcvm:pcb" + }, + "G": { + "item": "minecraft:gold_ingot" + } + }, + "result": { + "item": "mcvm:harddisk", + "nbt": { + "type": "HD", + "size": "128G" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/hdd16gb.json b/src/main/resources/assets/mcvm/recipes/hdd16gb.json new file mode 100755 index 0000000..88b5a83 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/hdd16gb.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " ", + "IPI", + "MCM" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "mcvm:diskplatter" + }, + "M": { + "item": "mcvm:ic2" + }, + "C": { + "item": "mcvm:pcb" + } + }, + "result": { + "item": "mcvm:harddisk", + "nbt": { + "type": "HD", + "size": "16G" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/hdd32gb.json b/src/main/resources/assets/mcvm/recipes/hdd32gb.json new file mode 100755 index 0000000..1fe6050 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/hdd32gb.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "IPI", + "GPG", + "MCM" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "mcvm:diskplatter" + }, + "M": { + "item": "mcvm:ic2" + }, + "C": { + "item": "mcvm:pcb" + }, + "G": { + "item": "minecraft:gold_ingot" + } + }, + "result": { + "item": "mcvm:harddisk", + "nbt": { + "type": "HD", + "size": "32G" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/hdd4gb.json b/src/main/resources/assets/mcvm/recipes/hdd4gb.json new file mode 100755 index 0000000..b789ad7 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/hdd4gb.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " ", + "IPI", + "MCM" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "mcvm:diskplatter" + }, + "M": { + "item": "mcvm:ic" + }, + "C": { + "item": "mcvm:pcb" + } + }, + "result": { + "item": "mcvm:harddisk", + "nbt": { + "type": "HD", + "size": "4G" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/hdd64gb.json b/src/main/resources/assets/mcvm/recipes/hdd64gb.json new file mode 100755 index 0000000..1a6356f --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/hdd64gb.json @@ -0,0 +1,29 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " ", + "IPI", + "MCM" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "mcvm:diskplatter" + }, + "M": { + "item": "mcvm:ic3" + }, + "C": { + "item": "mcvm:pcb" + } + }, + "result": { + "item": "mcvm:harddisk", + "nbt": { + "type": "HD", + "size": "64G" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/hdd8gb.json b/src/main/resources/assets/mcvm/recipes/hdd8gb.json new file mode 100755 index 0000000..60a9813 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/hdd8gb.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "IPI", + "GPG", + "MCM" + ], + "key": { + "I": { + "item": "minecraft:iron_ingot" + }, + "P": { + "item": "mcvm:diskplatter" + }, + "M": { + "item": "mcvm:ic" + }, + "C": { + "item": "mcvm:pcb" + }, + "G": { + "item": "minecraft:gold_ingot" + } + }, + "result": { + "item": "mcvm:harddisk", + "nbt": { + "type": "HD", + "size": "8G" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/ic.json b/src/main/resources/assets/mcvm/recipes/ic.json new file mode 100755 index 0000000..b537aa0 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/ic.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "CBC", + "AAA" + ], + "key": { + "A": { + "item": "minecraft:iron_nugget" + }, + "B": { + "item": "minecraft:redstone" + }, + "C": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "mcvm:ic", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/ic2.json b/src/main/resources/assets/mcvm/recipes/ic2.json new file mode 100755 index 0000000..d62a9c1 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/ic2.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "CBC", + "AAA" + ], + "key": { + "A": { + "item": "minecraft:gold_nugget" + }, + "B": { + "item": "minecraft:redstone" + }, + "C": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "mcvm:ic2", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/ic3.json b/src/main/resources/assets/mcvm/recipes/ic3.json new file mode 100755 index 0000000..cc22899 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/ic3.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "CBC", + "AAA" + ], + "key": { + "A": { + "item": "minecraft:gold_nugget" + }, + "B": { + "item": "minecraft:redstone" + }, + "C": { + "item": "minecraft:gold_ingot" + } + }, + "result": {"item": "mcvm:ic3"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/mainboard.json b/src/main/resources/assets/mcvm/recipes/mainboard.json new file mode 100755 index 0000000..37f3520 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/mainboard.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CBC", + "BAB", + "CBC" + ], + "key": { + "A": { + "item": "mcvm:cpu" + }, + "B": { + "item": "mcvm:ic2" + }, + "C": { + "item": "mcvm:pcb" + } + }, + "result": {"item": "mcvm:mainboard"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/memory1.json b/src/main/resources/assets/mcvm/recipes/memory1.json new file mode 100755 index 0000000..137a7f3 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/memory1.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ABC", + "A C", + "ABC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic2" + }, + "C": { + "item": "minecraft:gold_nugget" + } + }, + "result": {"item": "mcvm:memory1"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/memory2.json b/src/main/resources/assets/mcvm/recipes/memory2.json new file mode 100755 index 0000000..ae355e4 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/memory2.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "ABC", + "ABC", + "ABC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic2" + }, + "C": { + "item": "minecraft:gold_nugget" + } + }, + "result": {"item": "mcvm:memory2"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/nic_e1000.json b/src/main/resources/assets/mcvm/recipes/nic_e1000.json new file mode 100755 index 0000000..28318ea --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/nic_e1000.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "ABA", + "CCC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic3" + }, + "C": { + "item": "minecraft:gold_nugget" + } + }, + "result": {"item": "mcvm:nic_e1000"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/nic_ne2k.json b/src/main/resources/assets/mcvm/recipes/nic_ne2k.json new file mode 100755 index 0000000..043fea5 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/nic_ne2k.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "ABA", + "CCC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic" + }, + "C": { + "item": "minecraft:gold_nugget" + } + }, + "result": {"item": "mcvm:nic_ne2k"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/nic_rtl8139.json b/src/main/resources/assets/mcvm/recipes/nic_rtl8139.json new file mode 100755 index 0000000..1dc0f5d --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/nic_rtl8139.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "ABA", + "CCC" + ], + "key": { + "A": { + "item": "mcvm:pcb" + }, + "B": { + "item": "mcvm:ic2" + }, + "C": { + "item": "minecraft:gold_nugget" + } + }, + "result": {"item": "mcvm:nic_rtl8139"} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/recipes/pcb.json b/src/main/resources/assets/mcvm/recipes/pcb.json new file mode 100755 index 0000000..ec89524 --- /dev/null +++ b/src/main/resources/assets/mcvm/recipes/pcb.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AB", + "C " + ], + "key": { + "A": { + "item": "minecraft:gold_ingot" + }, + "B": { + "item": "minecraft:clay_ball" + }, + "C": { + "item": "minecraft:dye", + "data": 2 + } + }, + "result": {"item": "mcvm:pcb","count":4} +} \ No newline at end of file diff --git a/src/main/resources/assets/mcvm/textures/blocks/computer_back.png b/src/main/resources/assets/mcvm/textures/blocks/computer_back.png new file mode 100755 index 0000000000000000000000000000000000000000..63e3c9903077a9c4ccef15dd8feeeb1b06ccbf8e GIT binary patch literal 973 zcmV;;12X)HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E-_;&oJ#-z13pPaK~z{rZP!_D>p%=dQ7s}fGRMjOcc|br za0OcMM}bqZ$ZpBXd)wRF+y4Fiy?=du?H?Z>3w)4=a-W}{EB^WUS-4y-D_3tlaala} z{r&xl2e?~90O?F@s2JwJ=^G^0&ra0e&|*Cs0%r==H2okqQN7-B?0IOs-{0TmuLU@^ zcAb-)aH4_eT(-wRZ2FT=XZDD3*|k8$1}0+D{J+1yRTsAes6oBOQ%{^OqzlI*KnQXT z5EH`bmf}pCMm^#dh}W!q*dicnmh?#Y39u~@kMCA2#gE?tS$f5IaqHW9>mx^OpcvG| zQyfRXJi+t3RK7UB*e761%mB$C_xk#JG@Lp5T3)O+2ehnw%j2=d?0N@gfj>onZ&(Ap zL@X{CoCe#iq}L&VpYE}MXQ{|%E7p(?1l^20AJpgR=e4VyZ8dY&BbdoEvF+vZK|K(X zbMo|9Xi)uWgP!#(s9}mvqFUEq9U2JnvXcj5dAezfuYQIV8W!o6m}~A)1&>B=I`dJ2 zTDL`)#<4&mXTJr)6rG&%hRe-EWc}>U{NryyjVw&TMC7U`#1ft_q5K>I{ObAa`V}+) z67K|IF4-bexWz2O&Krnpsr+=d1WH7L^2DH165w}Axj6*lv2Lh^W)G|zC}_AGQdUl_ z0g0*cr^f6l=38P8E`R)!tb`(B0}bFqc|5i+VhhzD2OsD_j|ZoZ-}(?qM&i%7CcXxU zr}vznLtFlQWA*W`-hnC9fb12dH?W?o$Ef;6z!O&`K zx^R4oOCrx4ffiuBGkm;;)z>0mK|GjC>7N~IwMQ*ulK0)B))>kb*jd<1B^#~-L zY&J!h1JAzR`e%LS*=nq~N9nLve+wdrdlYh=EYb2f?Ci_psf*zj59j!wk;HsS6xnV? zT)pN_GJ9_6v@o=Eed`7y1u-HEeKa((iML#0ddh{gEtQX(_WBOgG>4Yc$ku4Edb#p! z3x>EYTi?97?f(9Le|mb_A08g|=jZ3;Pdn?6kB`g0g}8Cp vZO1P+ef4gs-g>feane#N$ND>Rxm@;tP0NI61N4VG00000NkvXXu0mjfHXhP= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/blocks/computer_back_on.png b/src/main/resources/assets/mcvm/textures/blocks/computer_back_on.png new file mode 100755 index 0000000000000000000000000000000000000000..ec8b0a439d636c5a9d1fbff2cac084a28b2cd9a3 GIT binary patch literal 963 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/blocks/computer_side.png b/src/main/resources/assets/mcvm/textures/blocks/computer_side.png new file mode 100755 index 0000000000000000000000000000000000000000..43e4fa3c3e63ca8b50454360a4dc7d5210c774d6 GIT binary patch literal 1072 zcmV-01kd}4P)N2bZe?^J zG%hhNF=Hy6O8@`^u1Q2eR9HuC*Jp0zFc5@MUBPi|!(p86e?%=Ffluhw?vFyVV--nB z9&g{@-}}$c&;IrGwO_B-{qys4t>53@mv0^J@9+1=$H!Ik@$s=gJUr}ocXzuPVse+u z<)|;Nwz;k2+FF1Hm@%jcArgc5$P%PS9{A?ydwqRfo2e%xa8oo1OQe=9h71yE?F8y8 zUmxPPx3^{M0qah9t2q&oPeH*IKyl=D9AQ^vZBBLU@9*!b6R%!;oj?slSeMME_T}Ye zzrDRZ;shYH)}KJNdc>O(F~7~S>lp|&Sf{oDV7E_CPe&c!b5LD=^XdcnMDg43x`Ki% zV)q8AmSZDmXm?(}yi-A>-rF?^6AB638dkCd%NH*nq2WjnLbXnZ0QJpco2RdM>vaMZ z3R>q!UL08uA>V0;@nPom1%8BPwpsT04phjuEw;>~L3VxF&f{&@zVbqzr1&CShm#9|1co#i)t3W3(~!TMVeSq*GY zvNbD@+`U)RjwA38_L?@Uxd|%H>RBh?Dr+; zL`qpltxyqRYy%KPC{BPcV?J_z8)$Cd12MkZ=B`gMC=#f-V#r5`L`+?8fnG7!L!ja6 z*-p24&6l%29zsr5L+aUTkbwc>)*U$!1bPO_i=7FZZL{q0*RT^nT5$qcL%MU%g_=$v z!t)i0MH)wbHGlme3B_1Pn2__A&wYz^1#)mEhq*EJVoN~7VTw_hU!&b36pyeIkeA~p zV9u1+!=L%%3bOOwSh4a5yYu`A)jEDLxkR>>x6XpT^%l7Mh7vHF#S>+CPq{qu?mRyM z{AQPD<))w|pgWnw`H;9CIzG(TPQDW|GXZk*&Ld{cKK>k+Wb?BSL4-gI$U!I42TaTx zQ~o>;)^{K^C8i+jc3{VLC{e)(9Zyr-Mr2^eSx qa@HUR1`;uQ%wyXN2bZe?^J zG%hhNF=Hy6O8@`^vq?ljR9Hu4*GFy~K@ddI*-=}1f}k0?qe*9zPT9gM;Wv`4MIb9} zM44$(r;m@1?ep_&*-? zx%>P3y}r2G=C+RO)B-fXj6qEZkr>2BmLNUyz&A(V)6>)1Og$liCq^&x(KeqOd7uyp{j zK0ZEfS65eioB)K@`V**Dk9cz;=C@gPy@61Jb!r;`cKh(~u-EaugX;2|S0BhHirma`Vw#yZ&o`O^S0CB zHL$&8YgQh)d#|P)N8l0mGi_FL6I7hlvrfQQN>G5$D$v}g6p%S~HIM+c<@*&tWO8$Z zaV!B6DP`2sv2|sb{M}1_p>*cjQD6=na$?I}$eAX4(B;!%hHc#R*^y>CU|i zHJw0&$14(xG>-ggzWqTGim{F`A;&MD`xfg87oGGt|KlA$)WaquHV&xHb=lKz;b^Ky-iEJ%zodtdCSK#g&O2BLuPn6-ka(U$4 zd42-;%`VT%O+iaQcQT3dA#puAKFpt;d?#dP0_5hMN6ebN|8rcD&Cfyv5dtwF2c1YC zFfqTF^2d3wz5}T#F$Gz-13R`uG2jzby_{c0Ga#b5R@+Z`{~2~y(48v?^NzdEPNX+9 zuW0t0Kd+hXs@LBG1ryND=X*%N@!Rhdm~BC2EC#5#eT#Duv6zP|?$mM6fc zH=)QO0`Nbh`jLxe&0cSy0u~6FM+T1B4hc9C*6T{jgSa`Z+da-|))fds1pz6mP*VaL zfP6km*E8Qp0-DPvB;M1-&)?gRpMSRO5i@^r$Q?0jT7R4SYu5g=`+rRO%f~w9y>5Od vVApma*A>Wt_uvF(k9lmn=XWCK^LhIVxRr!MVTJ?*00000NkvXXu0mjf0`B`7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/blocks/computer_top.png b/src/main/resources/assets/mcvm/textures/blocks/computer_top.png new file mode 100755 index 0000000000000000000000000000000000000000..dea892abb165f0556f0d12bcc8c479bfca73cd32 GIT binary patch literal 960 zcmV;x13&zUP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E-_;&oJ#-z12IWNK~z{rZPsaS8$k?&(Yb=-9q=M=_dlY7 zuYot9JNZ#&lPnfF?2+W-a=BbTKR>VU@9)=-kB^07udlBw-udh6YsL9&v6-83IzV4u z>_D!VMT!vQ=K1^kd)ZyEfp!gN!0CJrKwy#yY8HNee$EDJCcoIs2YH;VA(R_mJ z+uPeOfiQ*Rcg{L@ed?$7Zo@I3Kr`YIJw0Bz`J_9)Av%Y)B^Tu8AV+@$rm)x)G@z%A zQw>f}J|C!f{^YRL_Haj{8kfwL=sX9(Q5^COERGZAM$2hFbvpj-CZ9Z9+thozyAm2ri}+P zMr-D#4ZF@E7;bNGe_159!g5(6&NUC}DEpN)#oMl(0#>m6tn-AUkQTU{&bY@OwNj>~8FoHYm6 zBR}=>*B23|gaHuwHPfgVQ5?MB1&h;}UNE$pW8QzTx>jYya(pr8;!~qqS6Y6qo=$$b zgCjs7yWhX!VDMhznyD%7Jo)sq)rhT+q4lxWYn@h|E$92)N@>U!v+B9-P<;Ap0OZd8 z8+Ld50L3&VCYHsSLuGLrKAUcK4S+O@h-CeIYAUXlSTM-U(@$sm;nz1|MFsh`AZGQ7 zJI9$#arZ_v0eAfz=lEZVA}HWvj+YjKYxFE zc@R4X2o;v}-z`C8jk3;R*5DV*cV^|YYXdVdNsu2=d>2t;DCcbNM~H(DHn|4y79;M> z60D%7G)#zF&iev1G)W`y<>Q_|Mgg$|pFlBrLUHEsaT>;X=Ni5o-SY}cWPvXa`C$%J ioR72D=kK^&F4w=BU~KqkK{g8j0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E-_;&oJ#-z10+dAK~z{rZP!_D<4_PoQ7s2FzO`UZ*hvy1v0TCC@Wz*)hX)(>)v>h+dmuS4Vg{QMmLu>i-` zu5-x=CmM+EvONZ3>o1?q_K0!WV}XhdOvI-7zrVjnUEC6&2K5%No;Y1d7tTk35ab#l zCWO;1#aWw1J>nLK*Q|WFML^ap>5=dgU|S*{->q1RAHM~%^osG~)_3czj~uaqVo(#W zIF5dKg4cJcd~trUPrxlP10;jo%gf8zaOLQ0d9m6KXj%D|$774x;~m%ne?@?ASOdL8 zEG`(F2HUNq*CBzQ?zw-wuh10h~^c_5ajo3{AjXIPX!NGDj}p|n zExI($1roXXEf7|8IpqzP+e2ji?5_OtZ$XVLtY9K?)e~X~?@K7ZLx5jBpFMsB4S>Wu zLD(f*WQAMIBJAEkTubGrb4#E^Bq&b|Iwb*qrfu1mn+YH>1PSpDW!G0vu-#IXPX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/blocks/display_front.png b/src/main/resources/assets/mcvm/textures/blocks/display_front.png new file mode 100755 index 0000000000000000000000000000000000000000..5614f759831d4ee40ab09ef9a477997f508d1bcb GIT binary patch literal 1489 zcmV;?1upuDP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^Rc1q2o- zASl)=000007<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%hhNF=Hy6O8@``FG)l}R9Hv7 zm)Tk}I}k;A2$e}@Xy#c&0TJiv{hueNR;4SX5x;ZyUu=_3r>VuRs?g>tm5OUNo37Dl zxLU2IVvblxwpOp#^}5w+soL$fuGzEpjO}G)A7iyz&Fn+$%~=q{rqhiUlxq|RjOPU6 zn&%l~+4C0Eu6ZWM1}6P}-wg%>HyjRi9F0bqxrwz{cHf@0HAX&@@$`A_1EBy+pq@-7 zE|<&w6BP;tO&_rp06U=K=Hh1QZf;lZ_HOO&Hur9`-Ma0=&OJOny2q!3J3K$T=a(1v z^7`st-{0K(=ZEOieSCeo&+jkQ*Y~&A&$s*j`3d5h80B&~q$i{RYq;6%_gr7*!|}*X zrc*ba&)j^maLbz;0lQVO_5Gc~-ETJvx7$Am;9j*C(ER}&+#?cb)2BcY=w6EX7nyyl-HAZP7i zHPGpH(=><+l7@^6)W^zPFo=z&0*K8{ARd4)#V~uV7h;eCzI~_xXvX7l3Xpgg2Dl)t zbLxWD!Z8(bJy5Vf;D$N^i~-5`_VKPUip63UAW4#tf_BnzN$LV=7z)@}S~RW&pNdl_ zd`%odBrU)gkc@NAy1%uFf07BBSkeVI9nzxahNT5ZfKiPENMK?uq$`NQK@{51YQWmCECAO6P!VSWMA{hv zLb}7;;H-#2x&opadKnOFGwBKgAf~2(KR^V4>x#N?gz)tcAm|QWCL%Xt5K@x}$T`so z#5ns~U@0gGfI*OoiWQ|u(~-8Qxsh=Mn56640)#pOWa64mFbAymGzH|NE8l>d#ZuXo z%GVx5ok(lqj2jI=6h=T&S2#giog@`=ucl}q?MjS`i;KU13-ZO1E0juEkdT&afhr6R z3J`}E0t(el&6caFn$k6CjPxAPlMox?HoVLi+?6O_C}v=a3UjS6Aw@O$Pbw`|FP|#F zRC+D{Ii+(7l^B)+Ak+a!tOovt?43{@;14uCp)2ui<(x(w7Fb2T7!eOb&wX37bw=*R z>$aDX&$H*O2GjwoM#~BFc#QAk7V~qmy|%|*_w93${X53o_JuY?EN~qMWsK+Cw-2;u r?HLxMypO9qEd8yY2o1VT`uUq?9Hf00000NkvXXu0mjf6*!P| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/blocks/display_front_on.png b/src/main/resources/assets/mcvm/textures/blocks/display_front_on.png new file mode 100755 index 0000000000000000000000000000000000000000..2b8a3211fd646e66bf7ffd5701db2d0d72c7b4ff GIT binary patch literal 1975 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/gui/computer.png b/src/main/resources/assets/mcvm/textures/gui/computer.png new file mode 100755 index 0000000000000000000000000000000000000000..d840bc5edede931df90b0f518ea46235c9cbbda9 GIT binary patch literal 5918 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/gui/logo.png b/src/main/resources/assets/mcvm/textures/gui/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..bdaeb2fbcfb681aadc773adcf72d8cc704cd9d6a GIT binary patch literal 43638 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

_+QH2u(O^ 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 KMNUMnLSTZ@{~y2r literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/cddrive.png b/src/main/resources/assets/mcvm/textures/items/cddrive.png new file mode 100755 index 0000000000000000000000000000000000000000..dfd9cb88d8fa19c58fa9cb5d762e5dbd99469c63 GIT binary patch literal 479 zcmV<50U-W~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;2FkAZe8V00B=)L_t(IPo0r5OT$nUg)=xf8+wx;W|Npi@Wxjf0E7l3}{P-33jlWggu*t-NM!|lsG?%p2dP5@8FytCFBrbyB) z6ObL}NRRqr{TB#~S_Pj4%L zCeQOk)=!DeQ4}Ev0?9d!BYAqyF0YyZj?NcobX`}B1p2-&jY`b(6AS=1&GBeZ(qknq z(ExDMZRR!+a9R`-7a27qHJLmQ-C;|}`caRpdiS;P9yX2bNCI01Vafd2@9^$izC V%F}K8&;bAd002ovPDHLkV1i0>#s~la literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/cdrom.png b/src/main/resources/assets/mcvm/textures/items/cdrom.png new file mode 100755 index 0000000000000000000000000000000000000000..8a9e763bdfe972abc18c6e1ddc1fe91b6d5df30a GIT binary patch literal 417 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJtM=93Yk-ZrV4txIEGmG*G{q(YE}?vwOs37bnKkcWabK{*F1ZtPMtehX3D(4;Eq?34i8^g8I-i`a+go1hkk~#nLCC*y5nUj&F zVWN}UQHHd8vpZ`OQV%(Gw5BO=E!|<1;1tc_dhUK?;C*|g_QV^l=dT|>V%PI{hR+Xy zmTCPeo`p7jYXxIICj_W{{waH8LuN(elcIWfi`gFI2=lR!CbpuIRqHZu=u4EgPfd+!o(im#$dS1u7zAoJL1kpRx1cxvLMa zU%k3{-^C5<*Z0laz2^AYhWh%&3l=O~ckI!F)jJMd>F?`nTXe0uZ+&9hsmd9bcAURb z)VAv2shj`*{}0akybx%vY)Oz`Fp!HAFhsUJ&jKo}^K@|xskjw$&QqvGLBQqWk}gTs z^y&xyp6474u>Nsce5c0~wI`WX?x%SaxD~lPG-s|};54N|D?xS6Z>i)vGI;^+_bx{? zsx~bODsK+lvOnzA7tWXkCN>W;<2$DbA1K(T7gT@H=dOW{X0AFz;+w74{(f62aM5n- gqxHX>*KPORfP7!}MF4Ri^Er>mdKI;Vst0LO%=n*aa+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/diskplatter.png b/src/main/resources/assets/mcvm/textures/items/diskplatter.png new file mode 100755 index 0000000000000000000000000000000000000000..09b989b92772a518f1f6a27db3764af8d9364193 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fop#Yx{*KgmxJ$(4^#EBE1KY!k_W5@sh|F3($PzK7fl?3?( z1G)eIGi=_!WIs^E$uA&&Xn5Q{B4If4w{-8-sN$i;C$K&n%#644$rjF6*2UngDxY BPcZ-h literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/floppy.png b/src/main/resources/assets/mcvm/textures/items/floppy.png new file mode 100755 index 0000000000000000000000000000000000000000..666f4b612c87cdc8ba6e4c774c353f5e4a6d130b GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8q5z)|*L(Nw{r~@8LPA1YTiepoQc+P+RaI3|QqtMkSxZYx zLqo&f-u~IMXKHF{va+%=GBVGfKbM!6cX4sCv9Wpb8GzSloqydBil)vX;J!xIv1Y;3IjoMdEV6m?WhOiUCN71fNjHO=+)?aeGKER^-sWo2dU zLp}cg|G(z>vX4L)=#>Qd1p~Rn1BRyl;!vQ@&7LlfAr-em&bad(cHm$Q=xEF=yYqO` zz18pQ_dYnO<)KjFB)?3>)9&lVuch%XtqxB4a#cbroYj1rP~zdd%YA<`+IROJIG=M@ zX4_1^e~w`yTlVhjo>XDk94#)Jx_pz)Nw*c!O0#BrD6t5>FJ=?LQzhTWD|=`+vi z19Aerh7Z~}ww`6wpX->gJIJH?^8Y@8B5lDLq9%-cxCPf-Ww{dbU#g6&dv?dXo!^W2 gx+VW*{o*oU_#4iz&D*%~2hjNpp00i_>zopr0JR*;Z~y=R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/harddisk.png b/src/main/resources/assets/mcvm/textures/items/harddisk.png new file mode 100755 index 0000000000000000000000000000000000000000..ef3ca624617161b16eb8fab838af96378bbd8f15 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8#sHrX*Z=?j^YQV?%F6!u@x##2(8$Q>&Ye5=@87q!wqCbx zotc@Ll$6xIefzw| zMkYBqxwW-*)22;x=FHL4(_6DDb%DO()LhUMlg`caC(vM?f3tg zoLSRe&3<_Nx6Fgj<{Q>`zdhycEyezE^9g>=xhx+ym>zht@Q$<(!|k1Hhi&G(iOoJ0 z$9V1k6xm?@*p1&KtulTdUZZQo-g3Vp>N*p%&S3?qP6^8s&%WPSJVlG4@2}`ou7dTe iGNj8tY+ld6%rH|{@^04RrhPysF?hQAxvXF!YtC7UF(`029~3Bf_)lCc_d(?6%f6yN z#BU`WnHJro<+*?%Z_)vIh4n1mx%2n>d%HIc=~kT)vHUU zPMNZ2&z}GP{~P?cdkv_Lwv;L^ z`BWou>$>-Gse(_GZJJhk-{ezJ(q$CB5X3!$`43ZVTnxii>4a22G5fgt+DtqQf;pVc UH|#$A1DeL*>FVdQ&MBb@08`*tnE(I) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/ic3.png b/src/main/resources/assets/mcvm/textures/items/ic3.png new file mode 100755 index 0000000000000000000000000000000000000000..5d9f54b9f6b904af0f1b5899cd53c034f54f2f4d GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fo^#Gp`S1u7zAXD7Xc*D&*N}fJz*Q_~q?AW|Ha~55?wr9_t zsZ*x(96$5_|Njr$>^}q5@s*?YcQgN%NKbq@+0uPJ(mdKI;Vst09t}w761SM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/mainboard.png b/src/main/resources/assets/mcvm/textures/items/mainboard.png new file mode 100755 index 0000000000000000000000000000000000000000..6c82c19ca9ae2ce038b36b9ef23cf92ef7de69c3 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h86#+gWu2IR!94tb@!oso^vP|sk3JwaAhLRJSo8_$K&rW~poH^?1 z>eIWrX7%;$+_>?{v0x}jdl{qYG-sJbv&XA0J-J6y}LJyD=MyBKEGi725U#h6+3py%F0ShOaK4>-`nL2$fp)1L4LtN zE;)d~I!5pm(2UKVE{-7;w?a-o=W90LVM#b}P{rYtmb4f5-RjT(^25}Fw7V)U;;x@i%_#U-TUR`1lZ{gzNq8Fs6?b{orETsPb|L^emEhEUFk|4ie zAQu~8I4i983aBQ>)5S5Q;#N$bH{SsT4pzZ6UTd$_?fvh&TCb(VBgRMW(}I5u|0>=y zZrs!{w_{Pf%Z15n8gsc6vS&|Vak=a;wcv)kYLVVkH%sp8w=UH0Slqj-X>q%k!qUsL uwrgFi-mvDwi-VgEEet*^GRwb#ksSB<2Hh>aZCQWVwn%Liow&> K&t;ucLK6UB#Ag`* literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/nic.png b/src/main/resources/assets/mcvm/textures/items/nic.png new file mode 100755 index 0000000000000000000000000000000000000000..e3097fd929a1c3b6762e1904a1d8be02b42a5b6a GIT binary patch literal 388 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJtM=93Yk-ZioSTdIEGmGpY6BhI^-bI;w<2^aKS_tKbeCi;U7EgO+b5-K z*UWBpL>-mxcV&}Z~6nloi`1DkYr|90auJZqR9s0W?ZSu!hff{Or)!lHZXLdWWP zR?K4Ce9__Twu`d;h9xpOVcL#1`kYN{rw$87?YS}Y+=CCB5+y8llz&kZmYeu_l0waW zan?oqBf3_9xbgF&OSQoRK}(SG6%KFo!x^XU-fXG!Z)ruGP|NemfX|grxL8AG`v%^T z^*4B33NiOkdEoUxBi|4mZ-HNdLTt%B^S|FNHBZRtzMZR^_rl#%BGS`z^MtHA{wd;8 Xmgi0E9-OKM`k%qm)z4*}Q$iB}OC^v1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mcvm/textures/items/pcb.png b/src/main/resources/assets/mcvm/textures/items/pcb.png new file mode 100755 index 0000000000000000000000000000000000000000..9796feef23c502392bd1188234006bd6999f63e5 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!fog8-ipS5+@nH6Jwwc}8_Vb2K@wm22Uvlafbi@|9AUYtp(Xu666;Q9n`u*&a-o95vSE6bez zGWQ)mbEmk$<6-H}`Me%1>jZdaC^Ver4t)RD!YKOJ>E+%Hj11qeaeB_Jl Date: Sun, 2 Dec 2018 12:33:58 +0100 Subject: [PATCH 2/3] Setup DevEnv for Linux --- CREDITS-fml.txt | 28 - LICENSE-new.txt | 483 - MinecraftForge-Credits.txt | 26 - Paulscode IBXM Library License.txt | 10 - Paulscode SoundSystem CodecIBXM License.txt | 40 - README.txt | 0 build.gradle | 153 +- forge-1.12.2-14.23.4.2705-changelog.txt | 13829 ------------------ gradle.properties | 0 gradle/wrapper/gradle-wrapper.jar | Bin gradle/wrapper/gradle-wrapper.properties | 0 gradlew.bat | 180 +- 12 files changed, 167 insertions(+), 14582 deletions(-) delete mode 100755 CREDITS-fml.txt delete mode 100755 LICENSE-new.txt delete mode 100755 MinecraftForge-Credits.txt delete mode 100755 Paulscode IBXM Library License.txt delete mode 100755 Paulscode SoundSystem CodecIBXM License.txt mode change 100755 => 100644 README.txt mode change 100755 => 100644 build.gradle delete mode 100755 forge-1.12.2-14.23.4.2705-changelog.txt mode change 100755 => 100644 gradle.properties mode change 100755 => 100644 gradle/wrapper/gradle-wrapper.jar mode change 100755 => 100644 gradle/wrapper/gradle-wrapper.properties mode change 100755 => 100644 gradlew.bat diff --git a/CREDITS-fml.txt b/CREDITS-fml.txt deleted file mode 100755 index 97122f5..0000000 --- a/CREDITS-fml.txt +++ /dev/null @@ -1,28 +0,0 @@ -This is Forge Mod Loader. - -You can find the source code at all times at https://github.com/MinecraftForge/FML - -This minecraft mod is a clean open source implementation of a mod loader for minecraft servers -and minecraft clients. - -The code is authored by cpw. - -It began by partially implementing an API defined by the client side ModLoader, authored by Risugami. -http://www.minecraftforum.net/topic/75440- -This support has been dropped as of Minecraft release 1.7, as Risugami no longer maintains ModLoader. - -It also contains suggestions and hints and generous helpings of code from LexManos, author of MinecraftForge. -http://www.minecraftforge.net/ - -Additionally, it contains an implementation of topological sort based on that -published at http://keithschwarz.com/interesting/code/?dir=topological-sort - -It also contains code from the Maven project for performing versioned dependency -resolution. http://maven.apache.org/ - -It also contains a partial repackaging of the javaxdelta library from http://sourceforge.net/projects/javaxdelta/ -with credit to it's authors. - -Forge Mod Loader downloads components from the Minecraft Coder Pack -(http://mcp.ocean-labs.de/index.php/Main_Page) with kind permission from the MCP team. - diff --git a/LICENSE-new.txt b/LICENSE-new.txt deleted file mode 100755 index be2c9e6..0000000 --- a/LICENSE-new.txt +++ /dev/null @@ -1,483 +0,0 @@ -Minecraft Forge is licensed under the terms of the LGPL 2.1 found -here http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt and copied -below. - -A note on authorship: -All source artifacts are property of their original author, with -the exclusion of the contents of the patches directory and others -copied from it from time to time. Authorship of the contents of -the patches directory is retained by the Minecraft Forge project. -This is because the patches are partially machine generated -artifacts, and are changed heavily due to the way forge works. -Individual attribution within them is impossible. - -Consent: -All contributions to Forge must consent to the release of any -patch content to the Forge project. - -A note on infectivity: -The LGPL is chosen specifically so that projects may depend on Forge -features without being infected with its license. That is the -purpose of the LGPL. Mods and others using this code via ordinary -Java mechanics for referencing libraries are specifically not bound -by Forge's license for the Mod code. - - - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS diff --git a/MinecraftForge-Credits.txt b/MinecraftForge-Credits.txt deleted file mode 100755 index d0de5a5..0000000 --- a/MinecraftForge-Credits.txt +++ /dev/null @@ -1,26 +0,0 @@ -* Eloraam * - -* FlowerChild * - -* Hawkye * - -* MALfunction84 * - -Submitted the sleep handler code for his mod (Somnia) and others to use. - -* Scokeev9 * - -Gave permission for ScotTools API to be integrated into MCF, and also supported the Forge by converting his mods to use it. - -ScotTools Background: ScotTools was an API that enabled modders to add blocks to harvesting levels (and many other ease-of-use features to create new tools), and the first tool API that used block material for block breaking efficiency which allowed blocks from mods that didn't use ScotTools API to break with the correct speed. - -* SpaceToad * - -* LexManos * - -* cpw * - -* Minecraft Coder Pack (MCP) * -Forge Mod Loader and Minecraft Forge have permission to distribute and automatically download components of MCP and distribute MCP data files. -This permission is not transitive and others wishing to redistribute the Minecraft Forge source independently should seek permission of MCP or -remove the MCP data files and request their users to download MCP separately. diff --git a/Paulscode IBXM Library License.txt b/Paulscode IBXM Library License.txt deleted file mode 100755 index d4884b0..0000000 --- a/Paulscode IBXM Library License.txt +++ /dev/null @@ -1,10 +0,0 @@ -IBXM is copyright (c) 2007, Martin Cameron, and is licensed under the BSD License. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of mumart nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/Paulscode SoundSystem CodecIBXM License.txt b/Paulscode SoundSystem CodecIBXM License.txt deleted file mode 100755 index a68a494..0000000 --- a/Paulscode SoundSystem CodecIBXM License.txt +++ /dev/null @@ -1,40 +0,0 @@ -SoundSystem CodecIBXM Class License: - -You are free to use this class for any purpose, commercial or otherwise. -You may modify this class or source code, and distribute it any way you -like, provided the following conditions are met: - -1) You may not falsely claim to be the author of this class or any - unmodified portion of it. -2) You may not copyright this class or a modified version of it and then - sue me for copyright infringement. -3) If you modify the source code, you must clearly document the changes - made before redistributing the modified source code, so other users know - it is not the original code. -4) You are not required to give me credit for this class in any derived - work, but if you do, you must also mention my website: - http://www.paulscode.com -5) I the author will not be responsible for any damages (physical, - financial, or otherwise) caused by the use if this class or any - portion of it. -6) I the author do not guarantee, warrant, or make any representations, - either expressed or implied, regarding the use of this class or any - portion of it. - -Author: Paul Lamb -http://www.paulscode.com - - -This software is based on or using the IBXM library available from -http://www.geocities.com/sunet2000/ - - -IBXM is copyright (c) 2007, Martin Cameron, and is licensed under the BSD License. -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - -Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. -Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. -Neither the name of mumart nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.txt b/README.txt old mode 100755 new mode 100644 diff --git a/build.gradle b/build.gradle old mode 100755 new mode 100644 index 4b1d2ec..ae7d22c --- a/build.gradle +++ b/build.gradle @@ -1,76 +1,77 @@ -buildscript { - repositories { - jcenter() - maven { url = "http://files.minecraftforge.net/maven" } - } - dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' - } -} -apply plugin: 'net.minecraftforge.gradle.forge' -//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. - -version = "2.6" -group = "li.netcube.mcvm" // http://maven.apache.org/guides/mini/guide-naming-conventions.html -archivesBaseName = "mcvm" - -sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. -compileJava { - sourceCompatibility = targetCompatibility = '1.8' -} - -minecraft { - version = "1.12.2-14.23.4.2705" - runDir = "run" - - // the mappings can be changed at any time, and must be in the following format. - // snapshot_YYYYMMDD snapshot are built nightly. - // stable_# stables are built at the discretion of the MCP team. - // Use non-default mappings at your own risk. they may not always work. - // simply re-run your setup task after changing the mappings to update your workspace. - mappings = "snapshot_20171003" - // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. -} - -dependencies { - // you may put jars on which you depend on in ./libs - // or you may define them like so.. - //compile "some.group:artifact:version:classifier" - //compile "some.group:artifact:version" - - // real examples - //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env - //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env - - // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. - //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' - - // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, - // except that these dependencies get remapped to your current MCP mappings - //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' - //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' - - // for more info... - // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html - // http://www.gradle.org/docs/current/userguide/dependency_management.html - -} - -processResources { - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version - - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version - } - - // copy everything else except the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' - } -} +buildscript { + repositories { + jcenter() + maven { url = "https://files.minecraftforge.net/maven" } + } + dependencies { + classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT' + } +} +apply plugin: 'net.minecraftforge.gradle.forge' +//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. + + +version = "2.7" +group = "li.netcube.mcvm" // http://maven.apache.org/guides/mini/guide-naming-conventions.html +archivesBaseName = "modid" + +sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +compileJava { + sourceCompatibility = targetCompatibility = '1.8' +} + +minecraft { + version = "1.12.2-14.23.5.2794" + runDir = "run" + + // the mappings can be changed at any time, and must be in the following format. + // snapshot_YYYYMMDD snapshot are built nightly. + // stable_# stables are built at the discretion of the MCP team. + // Use non-default mappings at your own risk. they may not always work. + // simply re-run your setup task after changing the mappings to update your workspace. + mappings = "snapshot_20171003" + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. +} + +dependencies { + // you may put jars on which you depend on in ./libs + // or you may define them like so.. + //compile "some.group:artifact:version:classifier" + //compile "some.group:artifact:version" + + // real examples + //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env + + // the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + //provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided, + // except that these dependencies get remapped to your current MCP mappings + //deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev' + //deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // for more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html + +} + +processResources { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version + + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' + + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version + } + + // copy everything else except the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } +} diff --git a/forge-1.12.2-14.23.4.2705-changelog.txt b/forge-1.12.2-14.23.4.2705-changelog.txt deleted file mode 100755 index c6d98e4..0000000 --- a/forge-1.12.2-14.23.4.2705-changelog.txt +++ /dev/null @@ -1,13829 +0,0 @@ -Changelog: -Build 2705: - bs2609: Fix crash from search tree processing invalid recipes (#4942) - -Build 1.12.2-14.23.4.2704: - LexManos: - Fix names in JSON annotation data not matching expected format. Closes - #4953 - -Build 1.12.2-14.23.4.2703: - LexManos: - Add potential support for models defining 'vanilla like' rotations in - Forge's Modified Blockstate format. - LexManos: Bump version in prep for new RB. - -Build 1.12.2-14.23.3.2702: - LexManos: - Copy the Dedicated server's EULA checking to main() function so it can - exit earlier. Closes #3659, #3661 - -Build 1.12.2-14.23.3.2701: - bs2609: Fix Forge bucket not declaring all texture dependencies (#4930) - -Build 1.12.2-14.23.3.2700: - bs2609: Reuse multipart model instances across variants (#4791) - -Build 1.12.2-14.23.3.2699: - mezz: Fix language parsing for creating the java locale - -Build 1.12.2-14.23.3.2698: - thilo: Fixes parameter inconsistency in IFieldWrapper (Fixes #4325) (#4766) - -Build 1.12.2-14.23.3.2697: - latvianmodder: Added formatting support for status messages (#4925) - -Build 1.12.2-14.23.3.2696: - bs2609: Fix memory leaks in EnchantmentHelper (MC-128547) (#4880) - bs2609: Fix server-side data not being released (#4882) - -Build 1.12.2-14.23.3.2695: - bs2609: - Change composite models to fetch quads from submodels using full context - (#4809) - -Build 1.12.2-14.23.3.2694: - bs2609: Add an event to control nether portal formation (#4735) - bs2609: Check name prefix used for tile entity registrations (#4681) - 34900092+temp1011: Expand Villager Farmer AI to generic crops. (#4745) - -Build 1.12.2-14.23.3.2693: - bs2609: Allow custom models to have per-state lighting (#4732) - -Build 1.12.2-14.23.3.2692: - bs2609: Fix some light-emitting blocks letting light through (MC-119932) (#4642) - -Build 1.12.2-14.23.3.2691: - 34900092+temp1011: Preserve original ChunkPos for decoration events. (#4767) - -Build 1.12.2-14.23.3.2690: - LexManos: Fix library folder detection on various JVMs. - -Build 1.12.2-14.23.3.2689: - diesieben07: Add supports for redirects when doing mod version checks (#4826) - -Build 1.12.2-14.23.3.2688: - mezz: - Give immediate and complete error messages when there is a crash during - startup (#4869) - mezz: Fix imports - -Build 1.12.2-14.23.3.2686: - mezz: - Revert "Give immediate and complete error messages when there is a crash - during startup (#4869)" - This reverts commit a38f5fd6a24297490671cd300b5e4a9020189f63. - -Build 1.12.2-14.23.3.2685: - mezz: Remove invalid optimization in ItemStackHandler#setStackInSlot #3465 - -Build 1.12.2-14.23.3.2684: - mezz: - Give immediate and complete error messages when there is a crash during - startup (#4869) - -Build 1.12.2-14.23.3.2683: - bs2609: Clean up mod dependency checking code (#4922) - -Build 1.12.2-14.23.3.2682: - mezz: Fix version range check for required mods #4918 - -Build 1.12.2-14.23.3.2681: - mezz: Fix possible NPE when calling Loader.getIndexedModList #4919 - mezz: - Add javadoc note about minimum required Forge versions for old Forge. - Close #4918 - -Build 1.12.2-14.23.3.2680: - tterrag1098: Fix MC-12269 Various Particles glitchy movement (#4914) - -Build 1.12.2-14.23.3.2679: - bs2609: Fix deobfuscator not regenerating super maps (#4856) - -Build 1.12.2-14.23.3.2678: - cpw: Clean up broken aliases caused by registry bug #4894. (#4909) - -Build 1.12.2-14.23.3.2677: - LexManos: - Only revert to frozen data on server shutdown on client. Should fix race - condition exposed by #4904 - LexManos: Move registry snapshot read/write code to Snapshot class. Cleaner code. - -Build 1.12.2-14.23.3.2676: - LexManos: - Potentially fix issue with BungeeCord or other servers resetting the - registry mappings on the client while the game is running. Errors may - still occure if the client knows about world data beyond vanilla. - Servers should NEVER send world/registry invocations before they have - sent registry mappings. Closes #4901 - -Build 1.12.2-14.23.3.2675: - sfPlayer1: Reduce range requirement for World.checkLightFor from 17 to 16 (#4729) - -Build 1.12.2-14.23.3.2674: - bs2609: Fix typo in validation of vanilla registry wrappers (#4899) - -Build 1.12.2-14.23.3.2673: - josephcsible: Fix #4772: add an "isActivator" boolean to powered rails (#4774) - -Build 1.12.2-14.23.3.2672: - bs2609: Fix some code holding client world references longer than needed (#4881) - bs2609: - Add checks for undefined packet discriminators when sending messages - (#4890) - -Build 1.12.2-14.23.3.2671: - bs2609: Don't try to render removed tile entities. Fixes MC-123363 (#4811) - -Build 1.12.2-14.23.3.2670: - LexManos: Fix overrides typo in saving registry data. Closes #4894 - -Build 1.12.2-14.23.3.2669: - LexManos: Fix library path and soft fail when repository root is not found. - -Build 1.12.2-14.23.3.2668: - LexManos: - Fix libraries not being added to the modlist when using external - metadata. Closes #4879 - -Build 1.12.2-14.23.3.2666: - bs2609: - Fix dragon fight not initialising correctly under some circumstances - (#4868) - -Build 1.12.2-14.23.3.2665: - LexManos: - Cleanup some issues with the mod extraction to the memory modlist. - Closes #4874 #4875 - -Build 1.12.2-14.23.3.2664: - mezz: Improve missing mod dependency error screen (#4762) - -Build 1.12.2-14.23.3.2663: - bs2609: Fix biome dictionary's biome type detection (#4878) - -Build 1.12.2-14.23.3.2662: - bs2609: Clean up Reader/Writer handling to use a specified charset (#4872) - -Build 1.12.2-14.23.3.2661: - bs2609: - Suppress firing events at load time if an error has already occurred - (#4801) - -Build 1.12.2-14.23.3.2660: - AlexIIL: Fix FluidUtil.getFluidHandler skipping some fluid tile entities (#4854) - -Build 1.12.2-14.23.3.2659: - erlend: Parse contained dependency Timestamp as long instead of int (#4866) - -Build 1.12.2-14.23.3.2658: - LexManos: Fix Forge's metadata not being loaded. Closes #4865 - -Build 1.12.2-14.23.3.2657: - LexManos: Fix mods without ModSide meta value. - -Build 1.12.2-14.23.3.2656: - LexManos: Rewrite dependency extraction to use mod list system (#4841) - -Build 1.12.2-14.23.3.2655: - LexManos: Bump Forge version for new dev chunk. - -Build 1.12.2-14.23.2.2654: - LexManos: - Add support for World Workers skipping ticks without being removed from - the worker list. - LexManos: - Slow down Forge chunk gen worker when save queue is to high. Prevents - task from completing while tons of chunks are pending save. And add - minimum notification every 60 seconds. - LexManos: Fix vanilla duplication bug. - -Build 1.12.2-14.23.2.2653: - williewillus: Fix MC-88179 in a better way that avoids and closes #4824 (#4830) - -Build 1.12.2-14.23.2.2652: - bs2609: Improve the warning logged for cascading world generation (#4725) - -Build 1.12.2-14.23.2.2651: - bs2609: - New ITeleporter interface making dimensional teleportation easier. - (#4602) - -Build 1.12.2-14.23.2.2650: - williewillus: - Add a FML outbound target for all players tracking a point or entity in - the world. Closes #3677 (#4631) - -Build 1.12.2-14.23.2.2649: - mail: - Prevent EntityPlayer.attackEntityFrom from firing LivingAttackEvent - twice (#4661) - -Build 1.12.2-14.23.2.2648: - bs2609: Improve performance of some ExtendedBlockState methods (#4698) - 6081834+Yuudaari: Add a way to get a list of registered biome types (#4685) - -Build 1.12.2-14.23.2.2647: - bs2609: - Check for empty dimensions outside of chunk unloading loop, culling - worlds without needing chunk unloads to trigger it. (#4704) - bs2609: Optimise adding normal element to vertex formats (#4699) - -Build 1.12.2-14.23.2.2646: - CreativeMD: - Fixed Spectator mode particles and sounds computed from where you have - been before (MC-46445) (#4728) - Parker Young: - Update ItemHandlerHelper.giveItemToPlayer to allow player who picked up - the item to hear the sound as well (#4720) - josephcsible: Add description to Error raised by the server hang watchdog. (#4714) - Judge40: Create event for overriding mob griefing flag based on entity. (#4710) - -Build 1.12.2-14.23.2.2645: - matti.j.ruohonen: - Add a WorldProvider#canSleepHere() method to allow providers to control - sleeping in beds separately from re-spawning. (#4741) - -Build 1.12.2-14.23.2.2644: - bs2609: Fix some block connection logic not matching vanilla (#4781) - bs2609: Reduce memory usage of model transforms (#4753) - malte0811: - Fix FMLCommonHandler#exitJava printing useless/wrong calling info - (#4742) - -Build 1.12.2-14.23.2.2643: - 34900092+temp1011: Add fences and fence gates to ore dictionary (#4807) - TheCyberBrick: Added chunk instance to ChunkWatchEvent (#4805) - Bward7864: - Small performance improvement to ItemStack, by using Items.AIR directly - instead of getting it from the Block map. (#4786) - Mordenkainen: - Fix for the player inadvertently being removed from the Entity Tracker - when the chunk they were in unloads after they teleport out of it. - (#4784) - -Build 1.12.2-14.23.2.2642: - bs2609: Fix entities sometimes not rendering when out-of-world (#4823) - -Build 1.12.2-14.23.2.2641: - mezz: Fix issues with the test mods - -Build 1.12.2-14.23.2.2640: - marvinroesch99: Reorganise test mods into packages (#4706) - -Build 1.12.2-14.23.2.2639: - diesieben07: Fix servers crashing due to initializer on @SideOnly field (#4825) - -Build 1.12.2-14.23.2.2638: - Bward7864: - Cleaner TileEntityItemStackRenderers, now stored on the Item. Modders - should be careful and cache their renderers. (#4700) - -Build 1.12.2-14.23.2.2637: - mezz: - Add support for creator mod ID for modded enchanted books, potions, - arrows, and spawn eggs (#4810) - -Build 1.12.2-14.23.2.2636: - LexManos: Remove Mercurius from optional mods. - -Build 1.12.2-14.23.2.2635: - CreativeMD: Fixed sound engine crash when stopping streaming sounds (#4765) - -Build 1.12.2-14.23.2.2634: - LexManos: - Merge vanilla pre-decompile annotations with Forge's post-patching. - Fixes #4769 Crash detail classes causing class not found errors. - -Build 1.12.2-14.23.2.2633: - malte0811: - Fix NBT data loss when shift-clicking stacked items in the enchantment - table (MC-17431) (#4817) - -Build 1.12.2-14.23.2.2632: - mezz: Update docs for ItemTooltipEvent - -Build 1.12.2-14.23.2.2631: - ichttt: Fix some IResources being leaked (#4806) - -Build 1.12.2-14.23.2.2630: - mezz: - Fix server console logging issues - Closes #4808 - -Build 1.12.2-14.23.2.2629: - mezz: Fix up logging and log4j configuration (#4802) - -Build 1.12.2-14.23.2.2628: - josephcsible: Make lookupFluidForBlock work for flowing water and lava (#4675) - -Build 1.12.2-14.23.2.2627: - wynprice999: - Patched BlockInfo#updateLightMatrix to use - IBlockState#doesSideBlockRendering instead of - Block#doesSideBlockRendering (#4798) - -Build 1.12.2-14.23.2.2626: - bs2609: Fix integrated server crash not stopping client (#4796) - -Build 1.12.2-14.23.2.2625: - mezz: Fix #4792 TextComponentHelper handling for FakePlayers - -Build 1.12.2-14.23.2.2624: - ichttt: - Fix serverside startup failure when checking for vanilla acceptance - (#4783) - -Build 1.12.2-14.23.2.2623: - mezz: Prevent various vanilla blocks from loading unloaded chunks (#4689) - bs2609: Improve how smooth lighting code handles translucency (#4711) - -Build 1.12.2-14.23.2.2622: - mezz: - Improve the "Mod rejections" error message when connecting to a server - (#4761) - -Build 1.12.2-14.23.2.2621: - cpw: - Fix the ForgeChunkManager to use the writebehind FileIO thread for - writing (#4777) - the chunk file. Closes #4775 - This is a performance tweak - doing File IO on the server thread during - world saves causes significant lag spikes. This is one of many. - -Build 1.12.2-14.23.2.2620: - LexManos: - Fix vanilla crash classes not being preloaded. Closes #4769 Fix classes - not being aggregated for mods using the new annotation cache. - -Build 1.12.2-14.23.2.2619: - bs2609: Fix incorrect dimension ID being used for maps (#4690) - -Build 1.12.2-14.23.2.2618: - bs2609: Don't cull generated item models with non-default transforms (#4749) - -Build 1.12.2-14.23.2.2617: - bs2609: Maintain deterministic order in deserialised Forge blockstates (#4748) - -Build 1.12.2-14.23.2.2616: - goto.minecraft: Add function to BufferBuilder to directly insert byte data. Closes #4722 - -Build 1.12.2-14.23.2.2615: - bs2609: Clean up some GUI code and change magic numbers to GL constants (#4734) - -Build 1.12.2-14.23.2.2614: - mezz: Minor cleanup for TestAnnotationParser - -Build 1.12.2-14.23.2.2613: - LexManos: - Remove Mercurius from release JSON, Sadly it's dead we may address it at - a later date. - LexManos: - Initial implementation of JSON based annotation scanning. Disabled by - default for now, until proven to be fully function. Enable using - -Dfml.enableJsonAnnotations=true - -Build 1.12.2-14.23.2.2612: - mezz: Update Github Stale bot message to better explain how to un-stale issues - -Build 1.12.2-14.23.2.2611: - LexManos: Bump version for RB. - -Build 1.12.2-14.23.1.2610: - bs2609: New hook in WorldProvider to control client lighting re-checks (#4645) - bjfccb: Fix inconsistency between vanilla and modded glass. Closes #4679 (#4680) - bs2609: - Change chunk gen command to only keep the target dimension loaded - (#4705) - -Build 1.12.2-14.23.1.2609: - CreativeMD: - New hook to delegate some liquid related physics to the blocks - themselves. (#4604) - -Build 1.12.2-14.23.1.2608: - bartek.bok: Remove texture loads from SimpleModelFontRenderer (#4721) - -Build 1.12.2-14.23.1.2607: - bs2609: Fix some shapeless recipes using damageable items not working (#4713) - -Build 1.12.2-14.23.1.2606: - bs2609: - Use relative time offset, rather than absolute value, for animations - (#4635) - -Build 1.12.2-14.23.1.2605: - malte0811: - Fixed UV contraction for the texture in the top-left corner of the - texture map (0, 0), see sp614x/optifine#1024 (#4703) - -Build 1.12.2-14.23.1.2604: - Leviathan143: - Fix some test mods preventing Forge server-Vanilla client connections - (#4616) - -Build 1.12.2-14.23.1.2603: - mezz: - Fix errors in preInit being lost when followed by a crash in - fireRegistryEvents or objectHolder - -Build 1.12.2-14.23.1.2602: - SirWindfield: Added @Ignore to the annotation based Config system. (#4696) - -Build 1.12.2-14.23.1.2601: - mezz: Improve error message on server when a vanilla client connects (#4691) - -Build 1.12.2-14.23.1.2600: - malte0811: - Fixed pumpkins passing the wrong position to isSideSolid on placement - (#4686) - -Build 1.12.2-14.23.1.2599: - williewillus: Fix MusicType enumhelper not working (#4682) - -Build 1.12.2-14.23.1.2598: - williewillus: Expose CriteriaTriggers.register, closes #4109 (#4634) - mezz: - Make FluidUtil sounds server-side, add simulate option for - tryFill/EmptyContainerAndStow (#4623) - -Build 1.12.2-14.23.1.2597: - ichttt: Fix forge fluids being treated as solid blocks (#4606) - bs2609: Catch and log exceptions during model baking (#4609) - -Build 1.12.2-14.23.1.2596: - JDLogic: Fix default GUIConfig displaying child categories twice (#4599) - alexbobp: - Add MobSpawnerBaseLogic reference to SpecialSpawn and CheckSpawn events - (#4600) - -Build 1.12.2-14.23.1.2595: - bs2609: Add missing check for allowed values to recolorBlock() (#4579) - loopycoaster_8: - Moved firing the MinecartInteractEvent from individual subclasses up to - EntityMinecart, which as a result automatically supports - EntityMinecartMobSpawner and EntityMinecartTNT. (#4583) - Tyler Hancock: Added a tooltip color event. (#4595) - -Build 1.12.2-14.23.1.2594: - williewillus: Allow WorldProviders to specify in-game music (#4539) - bs2609: Make async chunk loading a config option (#4544) - mezz: Avoid copying Forge Registry keys, values, and entries (#4545) - -Build 1.12.2-14.23.1.2593: - Laughlan Coventry: Block::addRunningEffects (#4248) - -Build 1.12.2-14.23.1.2592: - Leviathan143: - [1.12.x] Implement hooks allowing mods to add horse armor. Partially - addresses #3975. (#3994) - -Build 1.12.2-14.23.1.2591: - LexManos: Fix debug flags for ClassPatchManager not working. Closes #3674 - -Build 1.12.2-14.23.1.2590: - mezz: Fix FML error logging for mods that crash during FMLLoadCompleteEvent - -Build 1.12.2-14.23.1.2589: - mezz: Minor code and documentation cleanup. (#4664) - -Build 1.11.2-13.20.1.2588: - bs2609: - [1.11] Fix dormant chunk cache allowing entity data to be overwritten - (#4672) - -Build 1.12.2-14.23.1.2587: - bs2609: Fix dormant chunk cache allowing entity data to be overwritten (#4528) - -Build 1.12.2-14.23.1.2586: - bs2609: Fix dimension data not being saved (#4667) - -Build 1.12.2-14.23.1.2585: - bartek.bok: Don't copy state from variant to multi-part model (#4629) - -Build 1.12.2-14.23.1.2584: - josephcsible: Fix vanilla giant jungle trees causing cascading generation (#4652) - -Build 1.12.2-14.23.1.2583: - knightminer4: Fix Beetroot crops don't break/drop when trampled (#4644) - -Build 1.12.2-14.23.1.2582: - bartek.bok: - Enhance crash message when custom models return null default state - (#4615) - -Build 1.12.2-14.23.1.2581: - mezz: Update Github StaleBot config to run on old Issues as well as PRs - -Build 1.12.2-14.23.1.2580: - LexManos: - Downgrade RegistryEntry's dangerous alternative prefix message to info - instead of BigWarning. This is still most likely a broken mod, but - nobody ever actually fixes themselves, and i'm tired of being blamed for - 'spamming' the logs. - -Build 1.11.2-13.20.1.2579: - bartek.bok: Fix invalid rendering of single-frame B3D models (#3917) - -Build 1.12.2-14.23.1.2578: - LexManos: - Fix missing call to release() in the event channel handler (#4513) - (reverted from commit cd99957627625f7baeff8761c6382b05db9699d3) - -Build 1.12.2-14.23.1.2577: - Leviathan143: - Add some extra context to Advancements/Minecart/Fishing/TileEntity loot - handlers.(#4443) - mccommanderminecraft: Added Custom Slime Block hook for Piston. (#4520) - -Build 1.12.2-14.23.1.2576: - bartek.bok: Fix animation of rotated block parts (#4156) - bartek.bok: Fix invalid rendering of single-frame B3D models (Fix #3815) - bs2609: Adjust diffuse light calculation to match vanilla facing values (#4305) - bs2609: Fix applyUVLock not preserving input order (#4336) - bs2609: Adjust light matrix calculations to use per-face logic (#4339) - -Build 1.12.2-14.23.1.2575: - tterrag1098: Fix BakedQuadRetextured not overriding getSprite (#4137) - -Build 1.12.2-14.23.1.2574: - bs2609: Fix missing call to release() in the event channel handler (#4513) - kashike: Delay egg creation to avoid null statistics (#4508) - arturzartdinov: - Added LivingKnockBackEvent event to allow better control over knock back - effects. (#4503) - -Build 1.12.2-14.23.1.2573: - mrkirby153: - Reimplemented TileEntity and Entity Update Profiling in the /forge track - command (#4521) - -Build 1.12.2-14.23.1.2572: - bs2609: Don't enforce IPv4 for clients connecting to IPv6-only servers (#4563) - JDLogic: [macOS] Fix missing text on loading error screens (#4532) - -Build 1.12.2-14.23.1.2571: - bs2609: Add an event for registering block/item colour handlers (#4565) - -Build 1.12.2-14.23.1.2570: - josephcsible: Deprecate passing a class to CapabilityManager::register (#4574) - josephcsible: - Make vanilla powered rails receive power from mods' custom powered rail - subclasses (#4573) - matthewprenger: Fix startIndex for /forge generate position parsing (#4572) - AlgorithmX2: BlockFlowerPot now checks solid top side instead of old method. (#4571) - AlgorithmX2: Fix: Anvil Bug with Custom Damage Items. (#4570) - -Build 1.12.2-14.23.1.2569: - mezz: - Change how chests check if they're blocked. (#4584) - Readd Vanilla Bug: https://bugs.mojang.com/browse/MC-378 - bs2609: Add missing nullability annotations to some Forge-added methods (#4578) - -Build 1.12.2-14.23.1.2568: - Billy Galbreath: - Allow EntityFishHook to spawn water particles in all liquids that use - Material.WATER (#4585) - -Build 1.12.2-14.23.1.2567: - gegy1000: Add Sound loading progress bar (#4593) - -Build 1.12.2-14.23.1.2566: - bs2609: Clean up capability checking for entities (#4591) - -Build 1.12.2-14.23.1.2565: - bs2609: Fix sometimes being unable to extract items from double chests (#4590) - -Build 1.12.2-14.23.1.2564: - josephcsible: - Fix item handler documentation that says returning ItemStack.EMPTY is - required (#4587) - -Build 1.11.2-13.20.1.2563: - bartek.bok: Fix invalid FastTESR quad ordering (#3900) - -Build 1.12.2-14.23.1.2562: - julian_abelar: Added color as field with setter to Fluid class. (#4460) - -Build 1.12.2-14.23.1.2561: - mezz: Prevent tooltips from going off the top of the screen. - -Build 1.12.2-14.23.1.2560: - Anthony Lomeli: [1.12] Add Advancement Event (#4467) - -Build 1.12.2-14.23.1.2559: - mezz: Update java docs for IItemHandler. Fix #4553 - -Build 1.12.2-14.23.1.2558: - LexManos: Re-enable Vanilla's Shapeless recipe matching. - LexManos: Restore binary compatibility in EntityItemPickupEvent - -Build 1.12.2-14.23.1.2557: - draco18s: - Fix for the EntityItemPickupEvent having 0 count item when event is - fired. (#4549) - -Build 1.12.2-14.23.1.2556: - bs2609: Don't force IPv4 network stack if IPv6 is specifically requested (#4547) - -Build 1.12.2-14.23.1.2555: - LexManos: Fix more bad shapeless recipe matching. Closes #4557 - -Build 1.12.2-14.23.1.2554: - LexManos: Version bump for Recommended Build. - -Build 1.12.2-14.23.0.2553: - williewillus: Add TAG_LONG_ARRAY to Constants.NBT (#4552) - -Build 1.12.2-14.23.0.2552: - LexManos: - Create custom shapeless recipe matching system. Should solve #4516 - damageable items in shapeless recipes. - -Build 1.12.2-14.23.0.2551: - mezz: Clean up old code for detecting BaseMods. Close #4530 (#4540) - -Build 1.12.2-14.23.0.2550: - Laughlan Coventry: Fix BufferBuilder not expanding under some conditions. (#4538) - -Build 1.12.2-14.23.0.2549: - mezz: Add support.yml for support bot on github. - -Build 1.12.2-14.23.0.2548: - bs2609: Fix errors caused by multi-target messages sent from LAN host (#4536) - -Build 1.12.2-14.23.0.2547: - bs2609: Fix server icon response leaking buffer (MC-122085) (#4534) - -Build 1.12.2-14.23.0.2546: - LexManos: Fix CompoundIngredents not working properly in shapeless recipes. - -Build 1.12.2-14.23.0.2545: - goto.minecraft: [1.12.x] Added BucketUse event to ForgeUniversal Bucket (#4454) - -Build 1.12.2-14.23.0.2544: - williewillus: - Non-player entities now respect WorldProvider.getMovementFactor, closes - #4470 (#4471) - -Build 1.12.2-14.23.0.2543: - bs2609: Fix entity spawn messages not handling buffer correctly (#4524) - -Build 1.12.2-14.23.0.2542: - LexManos: - Make Ingredient explode wildcard values like OreIngredient. Fixes some - issues related to Grums order fix for Shapeless recipes. Other more - advanced usages need to be documented and tested. - -Build 1.12.2-14.23.0.2541: - st.kupr: - Fix server incorrectly marked as stopped before forge's - handleServerStopped() (#4517) - -Build 1.12.2-14.23.0.2540: - bs2609: Fix network buffer leak with multi-part messages (#4511) - -Build 1.12.2-14.23.0.2539: - bs2609: Fix buffer leak in vanilla custom payload packet handling (#4512) - -Build 1.12.2-14.23.0.2538: - bs2609: Fix network buffers not being released in some places (#4510) - -Build 1.12.2-14.23.0.2537: - JDLogic: - Fix resource loading on some mac systems when SplashProgress is enabled - (#4082) - -Build 1.12.2-14.23.0.2536: - bs2609: Change item model alpha tests to match values used for rendering (#4490) - bs2609: Fix incorrect lighting of item models (#4493) - Billy Galbreath: Fix MC-51150 (#4495) - -Build 1.12.2-14.23.0.2535: - bartek.bok: Fix NPE when player tries to sleep without bed (#4487) - -Build 1.12.2-14.23.0.2534: - goto.minecraft: Added tint index of 0 to fluid models (#3938) - -Build 1.12.2-14.23.0.2533: - bartek.bok: Fix FastTESR quad sort (#4298) - -Build 1.12.2-14.23.0.2532: - zzzz: - Fix the incorrect matching algorithm in ShapelessRecipes and - ShapelessOreRecipe (#4472) - -Build 1.12.2-14.23.0.2531: - bs2609: Fix BlockDynamicLiquid using mismatched state/position pair (#4501) - -Build 1.11.2-13.20.1.2530: - bs2609: Recalculate chunk heightmap minimum (MC-117412) (#3888) - -Build 1.12.2-14.23.0.2529: - bs2609: Fix more test mod warnings (#4477) - -Build 1.12.2-14.23.0.2528: - bartek.bok: Add LivingDamageEvent (#4349) - -Build 1.12.2-14.23.0.2527: - Zaggy1024: Added a cloud renderer that uploads geometry to the GPU. (#4143) - bartek.bok: Add InputUpdateEvent (#4356) - yrsegal: - Create IRecipeContainer interface and implementation to allow RecipeBook - to work on custom GUIs (#4480) - -Build 1.12.2-14.23.0.2526: - bs2609: [1.12] Replace ThrowableImpactEvent with a more generic version (#4040) - -Build 1.12.2-14.23.0.2525: - bs2609: Clean up more deprecated library functions (#4283) - PProvenzano: Allow custom selector types to be defined (#4259) - ctmods01: Fix GameData#revert ignoring RegistryManager parameter (#4232) - joe.flatt: Fixed property losing state after rename. (#4123) - bs2609: Clean up BlockSnapshot code (#3737) - -Build 1.12.2-14.23.0.2524: - williewillus: Move reach distance to an attribute (#4331) - AEnterprise: Improve performance of World.collidesWithAnyBlock (#4286) - -Build 1.12.2-14.23.0.2523: - bs2609: Further reduce quad count of generated item models (#4448) - bs2609: Prevent fake players from making advancements (#4438) - mezz: Improve the Forge Bucket (#4435) - Bward7864: - Resolve a crash relating to plantFlower when biome has no flowers - (#4381) - -Build 1.12.2-14.23.0.2522: - bs2609: Recalculate chunk height map minimum on load (#4453) - bs2609: Fix killing blow causing combat tracker to lose data (MC-121048) (#4452) - -Build 1.12.2-14.23.0.2521: - bs2609: Improve performance of inserting into inventory wrappers (#4468) - julian_abelar: - Changed BlockFluidBase "fog" color use color from Fluid getColor() - method (#4462) - -Build 1.12.2-14.23.0.2520: - LexManos: - Fix some locations where State Sensitive Materials were not used. Closes - #4474 - -Build 1.12.2-14.23.0.2519: - bs2609: Add caching of data for flat lighting (#4358) - -Build 1.12.2-14.23.0.2518: - bs2609: - Fix spider/chicken jockeys being unable to spawn naturally (MC-103516) - (#4429) - -Build 1.12.2-14.23.0.2517: - mezz: Clean up Forge commands. Add HelpCommand. Fix #4444 (#4451) - -Build 1.11.2-13.20.1.2516: - bartek.bok: Fix stacked entity item rendering (#3886) - -Build 1.12.2-14.23.0.2515: - bs2609: Fix some more test mod warnings (#4469) - -Build 1.12.2-14.23.0.2514: - mincrmatt12: [1.12.x] [Animation API] Add rotation origin variable (#4466) - -Build 1.11.2-13.20.1.2513: - bs2609: Save/restore dormant chunk entity data from NBT (#3940) - -Build 1.12.2-14.23.0.2512: - bs2609: Fix some warnings produced by test mods (#4456) - -Build 1.10.2-12.18.3.2511: - mezz: Fix performance regression in FastTESR rendering - -Build 1.11.2-13.20.1.2510: - mezz: Fix performance regression in FastTESR rendering - -Build 1.12.2-14.23.0.2509: - mezz: Fix performance regression in FastTESR rendering - -Build 1.12.2-14.23.0.2508: - mezz: Fix outdated VersionParser javadoc link - -Build 1.11.2-13.20.1.2507: - PProvenzano: - Clean up Block.getLightValue(IBlockState, IBlockAccess, BlockPos) - (#4202) - -Build 1.11.2-13.20.1.2506: - p3pp3rf1y: Change to allow items to interact with villagers (#4194) - -Build 1.11.2-13.20.1.2505: - bs2609: - Add a hook to allow world providers to change the lightmap colours. - (#3922) - -Build 1.11.2-13.20.1.2504: - rasheeqhere: Add smarter getter for block slipperiness (#3620) - -Build 1.12.2-14.23.0.2503: - mezz: Add configuration for probot-stale for github - -Build 1.12.2-14.23.0.2502: - mezz: Update mcp mappings to 20171003 - -Build 1.12.2-14.23.0.2501: - mezz: [1.12] Add support for client & server dependencies for mods (#4403) - -Build 1.12.2-14.23.0.2500: - mezz: Add Item.getModId to show which mod is associated with a subitem (#4330) - -Build 1.12.2-14.23.0.2499: - erlend: Add Chunk capabilities (#4228) - -Build 1.12.2-14.23.0.2498: - python0429: Add hook to configure EntityEquipmentSlot for item. - bs2609: Fix block and torch placement logic not matching vanilla (#4210) - bs2609: Fix being unable to see with night vision under some conditions (#4383) - tterrag1098: Allow item models to use formats other than ITEM (#4273) - erlend: [1.12] Check both hands for sneak interaction bypass (#4256) - bs2609: Reduce the number of quads generated by ItemLayerModel (#4332) - bs2609: - Improve performance of vertex format mapping by caching hashcodes - (#4370) - bs2609: Fix some chunk data packets being created unnecessarily (#4414) - -Build 1.12.2-14.23.0.2497: - bs2609: Store entity data for dormant chunks using NBT (#4162) - -Build 1.12.2-14.23.0.2496: - williewillus: - Allow for MapDecoration to use alternate rendering, for example a custom - spritesheet (#4027) - -Build 1.12.2-14.23.0.2495: - LexManos: - Remove limitation of Shaped crafting recipes not being used on grids - larger than 3x3 - -Build 1.12.2-14.23.0.2494: - josephcsible: - Fix not being able to write in a blank, renamed Book and Quill (#4433) - https://bugs.mojang.com/browse/MC-1685 - -Build 1.12.2-14.23.0.2492: - LexManos: - Add new /forge entity list command for displaying a list of all entities - in world. As well as tracking down chunks with large amounts of - entities. - -Build 1.12.2-14.23.0.2491: - kashike: Prevent a mutable BlockPos leak in World#setBlockState (#4388) - flashfireex: Fix test mod shield JSON incorrect bottom face UV's (#4295) - -Build 1.12.2-14.23.0.2490: - ichttt: - Fix IngredientNBT comparing stackSize when checking if ingredient is - valid (#4418) - -Build 1.12.2-14.23.0.2489: - kashike: - Auto-detect registry namespace when using a legacy string id in - EntityEntryBuilder fixes #4410 (#4411) - -Build 1.10.2-12.18.3.2488: - LexManos: Fix max CustomPayload size, 1MB not 16MB. - Barteks2x: Fix splitting big packets skipping one byte per additional part (#4302) - Barteks2x: Fix netty warning spam when sending >1MB packets (#4363) - -Build 1.12.2-14.23.0.2487: - kashike: - Introduce entity entry builder, useful in the Register - event replacing needed calls to EntityRegistry. (#4408) - -Build 1.12.2-14.23.0.2486: - LexManos: MC 1.12.2 update. - -Build 1.12.1-14.22.1.2485: - paul.fulham0: Fix lightmap calculation vertex clamping (#4387) - -Build 1.12.1-14.22.1.2484: - Tyler Hancock: Fix chunk gen mobs not firing the CheckSpawn event. Closes #4394 (#4396) - -Build 1.12.1-14.22.1.2483: - thiakil: Add an extra error check for OBJ model materials (#4402) - -Build 1.12.1-14.22.1.2482: - bs2609: Fix up test mods (#4399) - -Build 1.12.1-14.22.1.2481: - LexManos: - Add new /forge gen command to generate large amounts of chunks. Usage: - /forge gen [dimension] [notifications] Position is in - Block Coords, and can be relative to the player. These will be converted - to chunk coords for you. Count is the number of chunks to load. This is - not a radius, actual total number of chunks. Dimension is optional, you - can use this to pregen other worlds. Notifications is the chunk interval - to inform you of the generating progress. This is optional and will be - 5% or 100 whichever is higher. - Added new config option to modify vanilla world gen to fix various - cascading issues. MC-117810 MC-114332 and more. This WILL change block - placement from vanilla world gen. So this is a opt-in value. Do not - report differences in worlds with this flag enabled. - -Build 1.12.1-14.22.1.2480: - LexManos: Fixed ShapedOre recipes not laying out correctly with the guidebook. - -Build 1.12.1-14.22.1.2479: - Tyler Hancock: Fixed search tabs using wrong contents. (#4393) - -Build 1.12.1-14.22.1.2478: - LexManos: Bump version for RB. - -Build 1.10.2-12.18.3.2477: - mezz: Fix MC-117075 lag spike when unloading many tile entities - -Build 1.11.2-13.20.1.2476: - mezz: Fix MC-117075 lag spike when unloading many tile entities - -Build 1.12.1-14.22.0.2475: - mezz: Fix #4386 Race condition when unloading chunks causes dead tile entities - -Build 1.12.1-14.22.0.2474: - bs2609: Improve generation of normals for vanilla models (#4313) - bs2609: Patch block model renderer to use location-aware light value (#4303) - -Build 1.12.1-14.22.0.2473: - bk1325: - Fix CustomModLoadingErrorDisplayScreen not being handled during init or - preinit. (#4320) - bs2609: Fix light sources rendering wrongly with night vision (MC-58177) (#4365) - marvinroesch99: Fire RenderGameOverlayEvent for vignette (#4360) - -Build 1.12.1-14.22.0.2472: - bs2609: Add missing bounds checks to ItemTextureQuadConverter (#4343) - dualspiral: Insert FML handler before Vanilla connection handshake completes (#4380) - -Build 1.12.1-14.22.0.2471: - williewillus: Fix vanilla map pixel data being used in various places (#4068) - bs2609: Adjust float (un)packing functions to be slightly more accurate (#4316) - marvinroesch99: - Add support instructions to be displayed when creating an issue on - Github (#4323) - blay09: - Allow custom GuiEditArrayEntries without having to recreate the object - in several places (#4329) - -Build 1.12.1-14.22.0.2470: - bs2609: - [1.12] Remove patches adding chunkExists() function, switch to vanilla - code (#4054) - -Build 1.12.1-14.22.0.2469: - Tyler Hancock: Added missing MapGen types to the InitMapGenEvent (#4322) - -Build 1.12.1-14.22.0.2468: - josephcsible: - Fix nether wart, pumpkins, and melons passing the new state as the - original state to CropGrowEvent.Post (#4377) - -Build 1.12.1-14.22.0.2467: - Choonster.2010: Fix FieldWrapper.MapWrapper initialising wrong category (#4335) - -Build 1.12.1-14.22.0.2466: - Choonster.2010: - Don't parse category names as regular expressions in - FieldWrapper.MapWrapper (#4334) - -Build 1.12.1-14.22.0.2465: - LexManos: Fix issue saving observers using different metadata then vanilla. - -Build 1.12.1-14.22.0.2464: - Barteks2x: Fix netty warning spam when sending >1MB packets (#4363) - -Build 1.12.1-14.22.0.2463: - Barteks2x: Fix FML handshake crash, fixes #4285 and #3974 (#4304) - -Build 1.12.1-14.22.0.2462: - LexManos: Fix recipe book auto-fill not working for OreDictionary ingredients. - -Build 1.12.1-14.22.0.2461: - molecularphylo: Fix KeyBindings reset buttons being inverted. - -Build 1.12.1-14.22.0.2460: - LexManos: - Fix for dummied server side registry entries while client has read - entries. - -Build 1.12.1-14.22.0.2459: - marvinroesch99: Tabulate crash report mod list and add signature information (#4251) - -Build 1.12.1-14.22.0.2458: - nedelosk: [1.12] Fix wood plank ore dictionary recipes (#4310) - -Build 1.12.1-14.22.0.2457: - codewarrior: - Fix UnknownFormatConversionException during erroring TE/Entity removal - (#4312) - -Build 1.12.1-14.22.0.2456: - LexManos: - Add support for server side only recipes, as well as detection of - vanilla client recipe book filter to prevent errors. - -Build 1.12.1-14.22.0.2455: - mezz: Fix typo in CapabiltyFluidHandler (#4306) - -Build 1.11.2-13.20.1.2454: - Barteks2x: Fix splitting big packets skipping one byte per additional part (#4302) - -Build 1.12.1-14.22.0.2453: - Barteks2x: Fix splitting big packets skipping one byte per additional part (#4301) - -Build 1.12.1-14.22.0.2452: - LexManos: Filter out scala libraries in forge dev workspace. - tterrag1098: Better descriptions on dependency version range error screen (#4284) - mezz: Fix MC-117075 lag spike when unloading many tile entities (#4281) - bs2609: - Add a hook to allow world providers to change the lightmap colours - (#4279) - Choonster.2010: - Continue loading mod recipes and advancements after encountering an - error (#4277) - bartek.bok: Fix invalid FastTESR quad ordering (#4267) - knightminer4: - Add support for running IModel.retexture() on models from blockstates - (#4200) - python0429: - Add support for oredict item predicates in advancements, and add a - registry for item predicates (#4188) - flashfireex: Add Ability to Override PotionEffect Default Sort Order (#4172) - ohai.iChun: Add PlayerSPPushOutOfBlocksEvent. (#4091) - LexManos: Fix tests - -Build 1.12.1-14.22.0.2447: - LexManos: - Cleanup some output and move the Jar-In-Jar extractor to before any - coremods/mods are loaded so. The intention is to rework this entire - thing to use maven style storage, IF we can get Mojang to pass in the - Libraries folder. - LexManos: Fixed missing line in logger. - LexManos: Fix odd NPE with list files for empty directories. - LexManos: Fix IOUtils import error caused by server/client libraries desync. - -Build 1.12.1-14.22.0.2446: - cpw: - Lex doesn't like this. - Revert "Fix up MC version compatibility checking to be a little less - verbose." - This reverts commit 1927fd76e20a1b3075cb841b09c2caeb57ebd242. - -Build 1.12.1-14.22.0.2445: - cpw: - Fix up MC version compatibility checking to be a little less verbose. If - people use properly formatted version compatibility strings, or the - default compiled in one, this will work exactly as before, but has less - dependence on specific formats for the mcversion string. So a mod - declaring [1.11, 1.12] will now be 1.12.1 compatible by default, for - example. - -Build 1.12.1-14.22.0.2444: - LexManos: - 1.12.1 Update, Not much modder facing changes, 1.12 mods should load and - run fine on this version. - -Build 1.12-14.21.1.2443: - rasheeqhere: - Add smarter getter for block slipperiness (#4116) - Fixed MC-119811, Boats rubber banding when dismounted. - -Build 1.12-14.21.1.2442: - Laughlan Coventry: Add GuiContainer Foreground render event. (#4127) - -Build 1.12-14.21.1.2441: - bs2609: - Use ClassValue to store tileentity names for profiler in lazy cache. - (#4021) - -Build 1.12-14.21.1.2440: - ichttt: Move client-only config options to client config (#4084) - -Build 1.12-14.21.1.2439: - goto.minecraft: - Added CriticalHitEvent to allow more control over whether a attack is a - critical or not, and what damage it does. - -Build 1.12-14.21.1.2438: - bartek.bok: - Fix stacked entity item rendering using the wrong transform for the - extra items. (#4158) - -Build 1.12-14.21.1.2437: - bk1325: Fix lopsided 'V' in FML icons. (#4179) - -Build 1.12-14.21.1.2436: - diesieben07: - Fixed bug where config categories errored if they contained regex - special characters. (#4187) - diesieben07: - Ignore neighbor changes for comparators on the client (Vanilla behavior) - (#4186) - xalcon: - Added pages to the advancements GUI to allow for unlimited root - advancements. (#4183) - -Build 1.12-14.21.1.2435: - InfinityRaider: Make LivingEntityUseItemEvent not abstract (#4208) - PProvenzano: - Clean up Block.getLightValue(IBlockState, IBlockAccess, BlockPos) - (#4203) - p3pp3rf1y: Allow sneaking to bypass villager interaction GUI. (#4193) - -Build 1.12-14.21.1.2434: - bs2609: - Replace hardcoded block check with isTopSolid method call for placing - button/lever (#4212) - -Build 1.12-14.21.1.2433: - python0429: - Added support for oredict dyes to Fireworks, Armors, and Shulker - recipes. (#4223) - -Build 1.12-14.21.1.2432: - p3pp3rf1y: Limit some server to client update packets for Item Capabilities (#4252) - -Build 1.12-14.21.1.2431: - williewillus: Fixed Armor bar disappear after changing dimension. MC-88179 (#4265) - -Build 1.12-14.21.1.2430: - mezz: Fix the firing location of InputEvent.MouseInputEvent (#4270) - -Build 1.11.2-13.20.1.2429: - mezz: - Allow the server to handle item-block interaction if onItemUse does not - return PASS (#3951) - -Build 1.12-14.21.1.2428: - bs2609: Fix some broken test mods (#4245) - -Build 1.12-14.21.1.2427: - rslink: Fixed swapping of finite fluids with negative densities. (#4237) - -Build 1.12-14.21.1.2426: - marvinroesch99: Fix overrides not being read from the server registry snapshot (#4224) - -Build 1.11.2-13.20.1.2425: - diesieben07: Ignore fortune for anything but seeds in crops (#3959) - -Build 1.12-14.21.1.2424: - marvinroesch99: Fix some test mods crashing server caused by model loading (#4225) - -Build 1.12-14.21.1.2423: - diesieben07: Fix FML handshake race condition, fixes #4219 (#4220) - -Build 1.10.2-12.18.3.2422: - mezz: Prevent player from dying infinitely due to zero max health (MC-119183) - -Build 1.11.2-13.20.1.2421: - mezz: Prevent player from dying infinitely due to zero max health (MC-119183) - -Build 1.12-14.21.1.2420: - mezz: Prevent player from dying infinitely due to zero max health (MC-119183) - -Build 1.12-14.21.1.2419: - malte0811: - [1.12] Allow the server to handle item-block interaction if onItemUse - doesn not return PASS (#3967) - -Build 1.12-14.21.1.2418: - Madsthunder: Allow support for custom Shields and Shield disabling weapons. - -Build 1.12-14.21.1.2417: - diesieben07: Ignore fortune for anything but seeds in crops (#4160) - ichttt: Log a warning if a coremod does not follow best practices (#4146) - python0429: Make Optional.Interface repeatable (#4138) - -Build 1.12-14.21.1.2416: - xalcon: Added support for vanilla "nbt strings" in json recipes (#4113) - -Build 1.12-14.21.1.2415: - LexManos: - Fix tripwire statemap not being complete when mappings change. Closes - #3924 - -Build 1.11.2-13.20.1.2414: - mezz: Fix unblockable damage being blocked by armor. (#3933) - -Build 1.12-14.21.1.2413: - LexManos: - Fixed invalid erroring case during loading Advancements form mods that - don't have advancements. - -Build 1.12-14.21.1.2412: - LexManos: - Fixed issue where rendered held items wouldn't properly update when the - reequip animations isnt shown. Closes #4175 - -Build 1.12-14.21.1.2411: - LexManos: Fire recipe registry event after json recipes are loaded. - LexManos: - Send remap event when data is frozen to notify modders to bake things. - Fixes search not working when connecting to vanilla servers. - -Build 1.12-14.21.1.2410: - bs2609: - Clean up uses of deprecated library functions (#4130) - Avoid catching and rethrowing runtime exceptions - to exceptions instead of the log - -Build 1.12-14.21.1.2409: - bs2609: Remove unneeded block patches (#4167) - -Build 1.12-14.21.1.2408: - mezz: Improve javadocs for Mod dependencies (#4168) - -Build 1.12-14.21.1.2407: - mezz: Fix errors in test mods - mezz: Add basic Github issue template - mezz: Stop "Binary patch set is missing" error log in dev environment - -Build 1.12-14.21.1.2406: - CrafterKina: Remove unnecessary maxStackSize restrictions on brewing potions. (#4155) - -Build 1.12-14.21.1.2405: - mezz: - Fix game freeze when resizing the window too small on the mods gui - (#4148) - -Build 1.12-14.21.1.2404: - williewillus: Allow advancement icons to have nbt (#4114) - maxanier: Adjust EnumHelper#addCreatureType to EnumType (#4089) - -Build 1.12-14.21.1.2403: - LexManos: - Fix MC-68754, Screen is not resizeable after exiting fullscreen due to - LWJGL bug - LexManos: - Attempt fix, or at least better debugging for RecipeBook accessing - unknown recipes. - -Build 1.12-14.21.1.2402: - mezz: Use Item's custom FontRenderer for tooltips in the Creative Gui (#4101) - -Build 1.12-14.21.1.2401: - mezz: Fix Recipe Toast crash when granted more than 5000 recipes (#4124) - -Build 1.12-14.21.1.2400: - mezz: - Throw packet encoding exceptions instead of suppressing them, to prevent - corrupt packets (#4144) - -Build 1.12-14.21.1.2399: - LexManos: Quiet down warning for missing translation files. - -Build 1.12-14.21.1.2398: - LexManos: Update JOpt version on the dedicated server to match client. - -Build 1.12-14.21.1.2397: - LexManos: Fix log spam when creating dummy blocks. - LexManos: Fix override duplication caused by bad comparison. - LexManos: Fix getting missing models for overridden Item registry entires - -Build 1.12-14.21.1.2396: - mezz: - Include location of the call when a mod uses System.out or System.err - (Fix #4135) - -Build 1.12-14.21.1.2394: - xalcon: Add isSpawner parameter to the CheckSpawn event (#4075) - mezz: Improve furnace fuel handling (#4083) - jmtalandar: Fix unblockable damage being blocked by armor. (#3933) (#4106) - -Build 1.11.2-13.20.1.2393: - ericmyllyoja: RenderLivingEvent now stores partialTick (#3822) - -Build 1.12-14.21.1.2392: - ericmyllyoja: - RenderLivingEvent now stores partialTick - 2 - -Build 1.11.2-13.20.1.2391: - mincrmatt12: Add rotation origin variable for animated models (#3875) - -Build 1.12-14.21.1.2390: - ichttt: Fix missing messages of missing models (#4120) - -Build 1.12-14.21.1.2389: - CrafterKina: Correct the default resource location of potion registry (#4117) - -Build 1.11.2-13.20.1.2388: - LexManos: - Add @ObjectHolder scanning to vanilla MobEffects, Biomes, Enchantments, - SoundEvents, and PotionTypes constants. Closes #4104 - LexManos: - Optimize ExtendedBlockState.getClean, cache the return value instead of - calculating it. Closes #3936 - LexManos: Fix BiomeDictionary not collecting correctly. - -Build 1.12-14.21.1.2387: - LexManos: Version bump for RB - -Build 1.11.2-13.20.1.2386: - LexManos: Version Bump for RB - -Build 1.12-14.21.0.2385: - Laughlan Coventry: - Added Block::getFogColor to allow custom blocks to control fog colors - while inside them. (#4090) - -Build 1.12-14.21.0.2384: - LexManos: - Optimize ExtendedBlockState.getClean, cache the return value instead of - calculating it. Closes #3936 - -Build 1.12-14.21.0.2383: - LexManos: - Add @ObjectHolder scanning to vanilla MobEffects, Biomes, Enchantments, - SoundEvents, and PotionTypes constants. Closes #4104 - LexManos: Squelch spam in EventBus register, Closes #4102 - -Build 1.12-14.21.0.2382: - mezz: Use lambdas for short anonymous methods - mezz: Use java 8 collection functions - -Build 1.12-14.21.0.2381: - mezz: - Use multiple catch, try-with-resources, replace system.out and - e.printStackTrace - -Build 1.12-14.21.0.2380: - LexManos: Fix the creative menu search function. Closes #4100 - -Build 1.12-14.21.0.2379: - LexManos: Fix MissingMapping REMAP action. Closes #4069 - -Build 1.12-14.21.0.2378: - LexManos: Fix Biome unit test - LexManos: - Repopulate client SearchTreeManager when registries are refreshed. - Closes #4094 - -Build 1.12-14.21.0.2377: - LexManos: Allow the recipe registry to be modified. - LexManos: Fix error when using RegistryBuilder and not specifying a max id number. - LexManos: Add support for loading mod advancements from the mod jar files. - -Build 1.12-14.21.0.2376: - LexManos: Fix BiomeDictionary not collecting correctly. - -Build 1.12-14.21.0.2375: - blay09: - Remove incorrect call to .toString() when instantiating custom config - array entries. (#4078) - -Build 1.12-14.21.0.2374: - vincent.lee: Remove outdated patch to BlockDoublePlant - -Build 1.12-14.21.0.2373: - LexManos: Fix ItemStack/Block/BlockSpecial not applying at runtime. - LexManos: More work on registry override ability. Closes #4079 - fry: Added dependencies and dependency ordering for textures. (#4070) - mezz: Remove the call to client.refreshResources during loading (#4032) - quadraxis: Remove some deprecated methods and clean up - LexManos: Fix substitution tests - -Build 1.12-14.21.0.2368: - bs2609: - Add a FluidUtil method to interact with an arbitrary IFluidHandler - (#4080) - -Build 1.12-14.21.0.2367: - ichttt: Further Java 8 cleanup (#4077) - -Build 1.11.2-13.20.0.2366: - LexManos: Fix ItemStackTransformer not applying at runtime. - -Build 1.12-14.21.0.2365: - LexManos: Fix ModelBlockAnimation expsing a private class. - LexManos: Fix missed side only on BlockFlower - -Build 1.12-14.21.0.2364: - LexManos: Make Block.getSubBlocks not client side only. - -Build 1.12-14.21.0.2363: - fry: - Cleanup of model system, taking advantage of java 8; replaced guava - Optional and Function with java 8 versions. - -Build 1.12-14.21.0.2362: - LexManos: Reload client recipe book after loading modded recipes. - -Build 1.12-14.21.0.2361: - LexManos: Make Dummy block an Air block. - -Build 1.12-14.21.0.2360: - LexManos: Fix minecraft:item_nbt ingredient type. - LexManos: Fix Emerald generation causing chunk loading. - LexManos: Make getSubItems non-client only. Use it for Ingredient iteration. - LexManos: Fix NPE in MissingMappings event. Closes #4067 - -Build 1.12-14.21.0.2359: - mezz: - Add Block.getDrops that uses NonNullList, deprecate the old method. Fix - #3567 (#3778) - -Build 1.12-14.21.0.2358: - mezz: Remove arrival/departure message methods from WorldProvider (#2733) - -Build 1.12-14.21.0.2357: - mezz: Clean up logging - -Build 1.11.2-13.20.0.2356: - kinglemming: Enable support for modded Fishing Rods. (#4011) - -Build 1.12-14.21.0.2355: - bs2609: - [1.12] Cleanup of files with old licence headers, Add missing LGPL 2.1 - licence headers (#4051) - kinglemming: Use instanceof ItemFishingRod instead of item equality (#4060) - -Build 1.12-14.21.0.2354: - Choonster.2010: - Fix uncaught ClassCastException from invalid recipe file (#4043) - A JsonSyntaxException will now be thrown, caught and logged when the - conditions property of a recipe isn't an array - -Build 1.12-14.21.0.2353: - TechnicianLP: - Fix onBlockClicked handler firing twice and Item.onArmorTick in the - wrong place (#4037) - -Build 1.12-14.21.0.2352: - quadraxis: Remove Java 8 warnings now that Minecraft requires it - mezz: Update MCP to 20170624 - -Build 1.12-14.21.0.2351: - bs2609: Fire AnimalTameEvent for parrots (#4003) - -Build 1.12-14.21.0.2350: - tterrag1098: Make ForgeRegistry iterator sorted. Closes #4058 (#4059) - -Build 1.12-14.21.0.2349: - LexManos: Loosen up registry locks until data freeze. - -Build 1.12-14.21.0.2348: - LexManos: - First pass of registry rewrite. Tests do not run yet. Things of note: - Removed the idea of substitutions, just register multiple items with the - same name they will override each other like a normal map. Decoupled - Forge registries from vanilla classes. They now use bouncer classes. - MODDERS SHOULD NEVER USE THESE Introduced more stringent registry - locking. As it sits things are only allowed to be registered during the - RegistryEvent.Registry phases! This is to force modders to split up - their registrations, and pave the way for calling these functions - multiple times during a single MC lifecycle. ObjectHolder, Missing - Mappings, etc... *should* now work for all registry types, nothing - should be special cased to Blocks/Items anymore. Added optional generic - dummy factory to registries, to allow registry creators the ability to - dummy more then just Blocks. Re-worked the ItemStack transformer and - applied it to ItemBlock and ItemBlockSpecial. Allowing us to cleanup - reflective hacks in Block callbacks. Registry onAdd callback is now only - fired on the ACTIVE registry, fixing any issues of temp registries - overriding active objects. - LexManos: - More work, game loads and runs now. Moved Registry events to directly - AFTER PreInit instead of before. This allows modders to register - handlers for it without @EventBusSubscriber. It also allows you to - register custom things needed before the construction of blocks or items - such as Fluids. TODO: Move Fluids to a real registry. @ObjectHolder can - now be used on private fields. Reworked FMLModIdMappingEvent to include - data for all registries. Tile Entities are now registrable. - LexManos: Fixup some registry tests, dummies are now persisted across syncing. - LexManos: - Disable substitution test, substitutions are not managed the way they - used to be. We do not care about substitutions, People who replace - entries should make them compatible with the existing item. - LexManos: - Implement override tracking and syncing. Overrides MUST be registered - within a tracked event so we know what mod it came from. This will allow - servers/saves to select which mod 'wins' and becomes to active entry. - This should also mean that when connecting to a vanilla server things - will revert. - LexManos: Fix conflicts - -Build 1.12-14.21.0.2347: - mezz: Fix Universal bucket handling for Fluids with NBT (Fix #3757) - -Build 1.12-14.21.0.2346: - diesieben07: - Clean up Logging (#3953) - # Conflicts: - # - patches/minecraft/net/minecraft/client/renderer/texture/Stitcher.java.patch - # - patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch - # patches/minecraft/net/minecraft/entity/EntityList.java.patch - # patches/minecraft/net/minecraft/tileentity/TileEntity.java.patch - # src/main/java/net/minecraftforge/oredict/OreDictionary.java - -Build 1.11.2-13.20.0.2345: - diesieben07: Clean up Logging (#3953) - -Build 1.12-14.21.0.2344: - mezz: Fix ShapedOreRecipe matching. #4038 - -Build 1.12-14.21.0.2343: - LexManos: Fix recipe names in packaged jars. Closes #4039 - -Build 1.12-14.21.0.2342: - bs2609: Update NoteBlockEvent with new instruments. Resolves #4018. (#4019) - -Build 1.12-14.21.0.2341: - mezz: Fix Chunk patch (#4036) - -Build 1.12-14.21.0.2340: - TechnicianLP: IRecipeConditions forge:and and forge:false (#4017) - -Build 1.12-14.21.0.2339: - mezz: Fix itemstack comparison with null - mezz: Fix patches in Chunk and Explosion (#4036) - -Build 1.12-14.21.0.2338: - LexManos: Fix loading recipe jsons from jar files. - -Build 1.12-14.21.0.2337: - lumien231: [1.12] Fixes Exception when getting modlist for a vanilla client (#4028) - williewillus: - Fix shapeless recipes not being able to use NBT on output, and fixed - issue with null groups. - -Build 1.12-14.21.0.2336: - bs2609: Remove unused patch to ItemRecord. Closes #2686. (#4035) - -Build 1.12-14.21.0.2335: - mezz: Add timeout to TestNetworkHandshake setup - mezz: Disable TestNetworkHandshake to make Travis work again - mezz: Log info on Travis tests - -Build 1.12-14.21.0.2334: - mezz: Clean up ShapedOreRecipe and ShapelessOreRecipe - mezz: Update mcp mappings to 20170611 - mezz: Update MCP mappings to 20170617 - mezz: Add missing Override annotations - -Build 1.12-14.21.0.2333: - shadowfacts: Allow condition factories to be registered from JSON (#4015) - -Build 1.12-14.21.0.2332: - cpw: - Patch a small bug in SPacketLoginSuccess that lets us emulate the - network handshake. This will be very useful as I rebuild the networking. - -Build 1.12-14.21.0.2331: - LexManos: - Filter any recipe starting with _, Such names are reserved for metadata. - Actually implement conditions for recipes. - -Build 1.12-14.21.0.2330: - LexManos: Fix NBT ItemStack support in json loader. Closes #4002 - -Build 1.12-14.21.0.2329: - LexManos: Fix OreIngredient comparing items in reverse. Closes #3999 - -Build 1.12-14.21.0.2328: - marvinroesch99: Make registries persist by default, fixes #3989 (#3998) - -Build 1.12-14.21.0.2327: - tterrag1098: - Fix exception in ShapedOreRecipe.checkMatch for recipes that don't fill - entire crafting grid (#3995) - -Build 1.12-14.21.0.2326: - LexManos: Fix parseShaped missing Empty slot item. Closes #3990 - -Build 1.12-14.21.0.2325: - LexManos: Fix CraftingHelper.parseShapred error. Closes #3979 - -Build 1.12-14.21.0.2324: - LexManos: Fix NPE in config menu with custom keybinds. Closes #3985 - -Build 1.12-14.21.0.2323: - LexManos: - In-progress Registry system enhancement. Needs cpw to take a look at - enabling removing/overriding in the registry stuff. But in theory it - loads json recipes for mods now. - -Build 1.12-14.21.0.2322: - LexManos: Update ASM for 5.2, and host it on Forge's maven now. - -Build 1.12-14.21.0.2321: - mezz: Fix log4j configuration - mezz: Fix log4j configuration - mezz: Fix log4j configuration - mezz: Update VanillaRegistryTests - -Build 1.10.2-12.18.3.2316: - mezz: Fix log4j configuration - -Build 1.11.2-13.20.0.2315: - mezz: Fix log4j configuration - -Build 1.11.2-13.20.0.2314: - Choonster.2010: Fix IItemHandler wrappers returned by EntityLivingBase (#3942) - -Build 1.11.2-13.20.0.2313: - mezz: Fix getShareTag replacing data on the server (#3776) Closes #3682 - -Build 1.11.2-13.20.0.2312: - LexManos: - Fix crashed caused by bad mods reflectively breaking the grass drop - list. Closes #3943 - -Build 1.11.2-13.20.0.2311: - Barteks2x: Make World.isValid and World.isOutsideBuildHeight public (#3919) - erlend: - Deprecate vanilla getExplosionResistance and properly annotate the forge - replacement (#3929) - bs2609: Make Teleporter fields accessible to subclasses (#3930) - rlonryan: - Changed Event.setCanceled To throw UnsupportedOperationException instead - of IllegalArgumetnException when called on a non-cancelable object - (#3926) - williewillus: Fix canRiderInteract being called on the wrong entity (#3934) - TechnicianLP: NBTTagList implements Iterable (#3884) - bs2609: Clean up MapData patch (#3905) - LexManos: Fix shaders not loading from mod domains Closes #3921 - -Build 1.11.2-13.20.0.2310: - mezz: Clean up formatting of Forge Test mods and disable noisy ones (#3908) - -Build 1.11.2-13.20.0.2309: - InsomniaKitten: Fix broken milk bucket model (#3925) - -Build 1.11.2-13.20.0.2308: - LexManos: Make hopper update accessible to subclasses. Closes #3849 - lukas172: Fix patches of GuiScreen(#3704) and ItemDye(#3736) (#3878) - -Build 1.11.2-13.20.0.2307: - Flaxbeard: Update EntityPlayer armor calculations and ISpecialArmor (#3838) - -Build 1.11.2-13.20.0.2306: - bs2609: - Fixes for PlayerDestroyItemEvent being called with empty itemstacks. - (#3728) - bs2609: - Tweak vertex lighter to avoid causing excess array initialisations - (#3771) - -Build 1.11.2-13.20.0.2305: - Madsthunder: [1.11.2] Added support for Village capabilities (#3648) - -Build 1.11.2-13.20.0.2304: - bluemonster122: - Fixes BlockLiquidWrapper placing a Static fluid where it should place a - Flowing one (#3893) - -Build 1.11.2-13.20.0.2303: - diesieben07: Disable frost walker enchantment on anything but vanilla water (#3906) - -Build 1.11.2-13.20.0.2302: - mattmess1221: Fix head being angled badly when riding mobs. Fixes MC-1207 (#3901) - -Build 1.11.2-13.20.0.2301: - mezz: - Print system details on startup without printing a full crash report - (#3909) - -Build 1.11.2-13.20.0.2300: - mezz: Reduce memory pressure from new objects during loading screen (#3907) - -Build 1.11.2-13.20.0.2299: - diesieben07: Add methods to write IForgeRegistryEntry to ByteBuf (#3806) - -Build 1.11.2-13.20.0.2298: - tterrag1098: - Fix normals not being generated for formats without normals (#3896) - Fix normals not being generated for formats without normals - -Build 1.10.2-12.18.3.2297: - mezz: - Fix MC-117087, prevent calling Class.getSimpleName on TEs unnecessarily - (#3887) - -Build 1.11.2-13.20.0.2296: - mezz: - Fix MC-117087, prevent calling Class.getSimpleName on TEs unnecessarily - (#3873) - -Build 1.11.2-13.20.0.2295: - ichttt: Add a configurable delay when unloading dimensions, fixes #3455 (#3679) - -Build 1.11.2-13.20.0.2294: - maxanier: - Changed custom entity selectors from event based to factory based. - (#3579) - -Build 1.11.2-13.20.0.2293: - ichttt: - Create ItemFishedEvent, the event is cancelable, but items are not - mutable. Use LootTables to control that. (#3705) - -Build 1.11.2-13.20.0.2292: - williewillus: Fix forge pipeline block shifts (#3789) - -Build 1.11.2-13.20.0.2291: - maxa.shen: Add pack.mcmeta to examplemod (#3813) - -Build 1.11.2-13.20.0.2290: - bs2609: - Relocate TileEntity#onLoad call to after it's added to the world instead - of the chunk so as to have a valid world reference (#3836) - -Build 1.11.2-13.20.0.2289: - diesieben07: - Allow client commands to control whether they can be invoked without - prefix. (#3847) - mezz: Improvements to FluidUtil (#3839) - -Build 1.11.2-13.20.0.2288: - mezz: - Remove splash.properties option for Mojang logo (has been disabled) - (#3859) - Fix backgound color being applied to the Forge logo - mezz: When the window is closed during loading, exit the game quickly (#3858) - -Build 1.11.2-13.20.0.2287: - ichttt: Fix GuiMultipleModsErrored ignoring scrolling with mouse wheel. (#3861) - -Build 1.11.2-13.20.0.2286: - Madsthunder: - [1.11.2] Fixed Zombie Villagers not setting and getting professions - correctly (#3678) - -Build 1.11.2-13.20.0.2285: - JDLogic: - Prevent NPE in ConfigManager and fix config gui being enabled for all - mods. Fixes #3856. (#3860) - -Build 1.11.2-13.20.0.2284: - LexManos: - Fix return value of ItemHandlerHelper.insertItem being incorrect when - destination was null. Closes #3840 - -Build 1.11.2-13.20.0.2283: - LexManos: - Fix vanilla inventory wrappers not properly calling markDirty. Closes - #3854 and #3810 Also updated IItemHandler javadocs to reflect returning - EMPTY instead of NULL. - -Build 1.11.2-13.20.0.2282: - cpw: - Add in a check to the splash screen. If the Display.update call takes - too long on average (over first 200 frames) we'll use a sleep based - timer to allow mods doing splash screen work some time on the LWJGL - global lock. - (cherry picked from commit 03d7eaa) - -Build 1.10.2-12.18.3.2281: - github: - Fix NumberFormatException being thrown for empty ItemStack - deserialization. Fixes #3828. (#3830) - -Build 1.11.2-13.20.0.2280: - LexManos: - Fix NumberFormatException being thrown for empty ItemStack - deserialization Thanks @gabizou, 1.11.2 version of #3830 - LexManos: Cleanup AccessTransformer debug output - -Build 1.11.2-13.20.0.2279: - kyo.se.llout: Fix Fluid models rendering with gaps (#3747) Closes #2993 - -Build 1.11.2-13.20.0.2278: - mezz: Fix mutable blockpos leak MC-114281 (#3742) - -Build 1.11.2-13.20.0.2276: - Leviathan143: - Fix typo in LootEntry.Serialiser causing incorrect serialisation. Closes - #2757, Fixes MC-115407 (#3823) - -Build 1.11.2-13.20.0.2274: - ikp10: - Add Item.canDestroyBlocksInCreative() allowing more items to not break - blocks in creative (#3805) - PProvenzano: Fix invulnerable items becoming invisible client side MC-53850 (#3807) - -Build 1.11.2-13.20.0.2273: - williewillus: - Allow result of PlayerInteractEvent to be changed when it's cancelled - (#3744) - bs2609: Added missing bounds check to ChunkCache.getBiome (#3752) - bs2609: Add AnimalTameEvent for handling animal taming (#3763) - mezz: - Skip loading models if there is a fatal mod dependency error (#3772) - Close #3768 - mezz: Add GenerateMinable event for mesa gold (#3774) Closes #3738 - CrafterKina: Fixed HarvestDropsEvent issue by fixed-length lists on getDrops (#3778) - diesieben07: Ignore calls to sendMessage for fake players. Fixes #3796. (#3798) - -Build 1.10.2-12.18.3.2272: - mezz: Fix Vanilla BlockPos memory leak MC-114281 (#3743) - -Build 1.11.2-13.20.0.2271: - Da-Technomancer: - Added a boolean flag for disabling Entity onUpdate (#3731) - The flag is false by default, and if true the Entity will not update. It - is saved and loaded from NBT, and is called updateBlocked. Modders are - responsible for managing this flag for entities they with to 'freeze' or - 'unfreeze'. - Choonster.2010: Add EnumHand and ItemStack to BonemealEvent (#3736) - -Build 1.11.2-13.20.0.2270: - egabriel: Fix EntityFallingBlock check for ITileEntityProvider (#3711) - paulo.siqueira: Add LootTableManager to the LootTableLoadEvent (#3717) - bs2609: Revert block snapshots in reverse order. Fixes #3608. - -Build 1.11.2-13.20.0.2269: - the.f1repl4ce: Added ClientChatEvent. Closes #1442 (#3704) - -Build 1.11.2-13.20.0.2268: - blay09: - Fix custom array entry class for config GUI being ignored when adding - new entries (#3697) - -Build 1.11.2-13.20.0.2267: - kashike: Use thread groups to detect the effective side (#3644) - -Build 1.11.2-13.20.0.2266: - Silly511: - New LivingDestroyBlockEvent for controlling if some entities can destroy - blocks (#3628) - -Build 1.11.2-13.20.0.2265: - LexManos: Fix arrays in map values for config system - LexManos: Fix breaking particles on dedicated server. Closes #3825 - -Build 1.11.2-13.20.0.2264: - LexManos: [MC-2518] Fixed missing break sound and particles. Closes #3821 - -Build 1.11.2-13.20.0.2263: - kirill.desirehd: - [1.11.x] Fix blank tab in creative inventory when additional tabs evenly - divisible by 10 (#3817) - JDLogic: Fix java 6/7 compatibility in GuiConfig (#3824) - -Build 1.11.2-13.20.0.2262: - thilo: - Adding config GUIs to the @Config based configuration System (#3735) - Lots of internal API that modders should not touch. See test mods for - example usages. - -Build 1.11.2-13.20.0.2261: - LexManos: - Fix vanilla bug where player reputations villages were reset on read. - Deprecated Username based API in favor of UUID based API. - -Build 1.11.2-13.20.0.2260: - LexManos: Add setter for default key in RegistryBuilder. Closes #3804 - -Build 1.11.2-13.20.0.2259: - LexManos: - Fix error when reading world info for old saves with missing dimensions. - Closes #3786 #3331 - -Build 1.11.2-13.20.0.2258: - mezz: - Detect and log cascading chunk generation issues during terrain - population (#3756) - -Build 1.11.2-13.20.0.2257: - mezz: - Fix #3733 Splash Screen memory bar background matches screen background - (#3775) - burtonjae: - Fix duplicate achievements getting added to the achievement list (#3770) - (#3779) - -Build 1.11.2-13.20.0.2256: - mattia.malonni: Add additional constructors to EnergyStorage to set values at load time. - -Build 1.11.2-13.20.0.2255: - diesieben07: Fix parameter-names for WorldProvider.shouldMapSpin (#3767) - -Build 1.10.2-12.18.3.2254: - cpw: - Add in a check to the splash screen. If the Display.update call takes - too long on average (over first 200 frames) we'll use a sleep based - timer to allow mods doing splash screen work some time on the LWJGL - global lock. - -Build 1.11.2-13.20.0.2253: - paul.fulham0: - Fix MC-112730 TE global renderer duplicate render (#3651) - * Fix TE global renderer duplicate render - -Build 1.11.2-13.20.0.2252: - bartek.bok: Fix entity write catch block (#3726) - -Build 1.11.2-13.20.0.2251: - Barteks2x: - Fixed TESR items not rendering correctly before entering world - (MC-112292) (#3666) - Fixed crash when rendering text in TESR items before entering world - -Build 1.11.2-13.20.0.2250: - josephcsible: - Fixed 'reset to defaults' button not working on some Forge config - fields. - -Build 1.11.2-13.20.0.2249: - gigaherz: - Allow mods to set other default "home dimensions" for respawning. - (#3528) - sjx233: Add DifficultyChangeEvent (#3525) - -Build 1.11.2-13.20.0.2248: - Guichaguri: Added Forge slot methods to creative container (#3581) - williewillus: - Persist PotionEffect curative items and initialize defaults from Potion - (#3573) - -Build 1.11.2-13.20.0.2247: - williewillus: Restore missing Biome GetWaterColor event. Closes #3164. (#3625) - -Build 1.11.2-13.20.0.2246: - dawn0966: Fixed Missing Furnace Fuels (#3627) - -Build 1.11.2-13.20.0.2245-3630: - vincent.lee: Fix category comments not working. Closes #3593 - bs2609: Prevent concurrent modification of ClassInheritanceMultiMap (#3632) - -Build 1.11.2-13.20.0.2244: - diesieben07: Start firing AttachCapabilitiesEvent (#3645) - bs2609: Fixed ChunkCache.getTileEntity creating tile entities off world thread. - ichttt: Improve exception messages during initialization. - -Build 1.11.2-13.20.0.2243: - LexManos: - Add @Name annotation to config system allowing you to use custom key for - value. Also added category option to root config to allow customization. - See examples/docs for information. - -Build 1.11.2-13.20.0.2242: - LexManos: Fix Poppy to Dandelion ratio - LexManos: Fixed Flower Forests not having proper flowers. Closes #3652 - -Build 1.11.2-13.20.0.2240: - bs2609: Use Forge setting to determine baby zombie chance. Fixes #3690. - aa1ronham: - Add a null check for the throwable message in - NetWorkDispatcher#exceptionCaught (#3688) - (cherry picked from commit 1be1bb59c5c4c7432c515ef07beb6bf7e1f6ef27) - williewillus: - Make getRGBDurabilityForDisplay use getDurailityForDisplay by default. - Closes #3670 (#3673) - bs2609: Fix bug caused by ItemMinecart patch (#3672) - CreativeMD: - Add implementation for Living Attack event on client-side for players - (#3667) - * Fixed unused import - williewillus: Fix forge:default-item missing case for FIXED transform (#3663) - -Build 1.10.2-12.18.3.2239: - aa1ronham: - Add a null check for the throwable message in - NetWorkDispatcher#exceptionCaught (#3688) - -Build 1.11.2-13.20.0.2238: - LexManos: - Properly fix IShearable implementation. Fixes shears taking damage - twice, mooshroom particles, and blocks dropping incorrect loot. - -Build 1.11.2-13.20.0.2237: - LexManos: Fix English injection for some mods on dedicated server. - -Build 1.11.2-13.20.0.2236: - LexManos: - Override Mojang's new logging config to re-enable our logging to text - file. The new launcher's GUI for logs WILL NOT WORK until they add - support on their end. - LexManos: Fix hoppers being able to insert shulker boxes into shulker boxes. - -Build 1.11.2-13.20.0.2235: - tehgeek: - Stop rotation of extended pistons, beds, and double chests Fixes #3634 - Fix rotation of repeaters and comparators - fry: - Added check for quad builder to always have the particle texture set, - and fixed where that wasn't true. Fixes #3653 - williewillus: Fix Item.doesSneakBypassUse being applied incorrectly. - williewillus: Fix ClientTickEvent Post firing inside another profiler section (#3715) - cordonfreeman: - Fix for bad decompile process on Particle.java that causes onGround flag - to not get set properly as well as motionX and motionZ not being set to - 0 when their axis has collision happening (#3716) - -Build 1.10.2-12.18.3.2234: - tehgeek: - Fixed TileEntity#getRenderBoundingBox not offsetting correctly causing - more TEs to render then needed (#3709) (#3712) - -Build 1.11.2-13.20.0.2233: - florian: - Fixed TileEntity#getRenderBoundingBox not offsetting correctly causing - more TEs to render then needed (#3709) - -Build 1.11.2-13.20.0.2232: - cordonfreeman: - [1.11.2] Make AbstractSkeleton implementable by fixing limited access on - getStepSound (#3702) - -Build 1.11.2-13.20.0.2231: - Choonster.2010: Fix extracted mods crash report file name for Windows (#3701) - -Build 1.11.2-13.20.0.2230: - tehgeek: - Remove dynamic lambda methods when inside of SideOnly methods - Clean signatures of ReflectionHelper methods. - -Build 1.11.2-13.20.0.2229: - LexManos: Fix world spawn fuzz. - LexManos: - Fix world spawn fuzz. (reverted from commit - 450c3a80c10c1dc27ef68a3f5e5f58af6a827fde) Protip Don't code while - groggy. - diesieben07: Fix spawn-fuzz formula (#3695) - -Build 1.11.2-13.20.0.2228: - diesieben07: - Fix some cases where world time is not passed through the WorldProvider. - (#3685) - -Build 1.11.2-13.20.0.2227: - lukas.tenbrink: - Replace listSubtypes with listSupertypes to match the intended behavior. - (#3564) - lukas.tenbrink: Fix addTypes not adding in the base types. (#3681) - -Build 1.11.2-13.20.0.2226: - goto.minecraft: this finaly fixes #2866 (#3656) - -Build 1.11.2-13.20.0.2225: - williewillus: Fix MC-111753 (#3655) - -Build 1.11.2-13.20.0.2224: - fry: Small bugfix in lighting logic. - fry: - Fix default missing model zoom text not being set to false on all - places. - -Build 1.11.2-13.20.0.2223: - fry: Added the variant name to the missing model. (#3328) - -Build 1.11.2-13.20.0.2222: - tehgeek: Fix #3635 MC-103403 fix ingredient count for ingot block recipes (#3640) - -Build 1.10.2-12.18.3.2221: - LexManos: - Cache entity constructors for a small performance optimization - (cherry picked from commit 50bf03b82b72866bd54e796a37707d45bcbf3d80) - LexManos: - New client config option to force all chunk rendering off the main - thread. This may help FPS issues, but may also result in world - holes/rendering issues. Also fix Forge configs not saving properly. - (cherry picked from commit 7da6c2d0e1b0056e520990d78f63a9be8d0db5ed) - -Build 1.11.2-13.20.0.2220: - LexManos: - New client config option to force all chunk rendering off the main - thread. This may help FPS issues, but may also result in world - holes/rendering issues. Also fix Forge configs not saving properly. - -Build 1.10.2-12.18.3.2219: - tehgeek: Skip first baking in ModelLoader (#3621) (#3638) - -Build 1.11.2-13.20.0.2218: - LexManos: Cache entity constructors for a small performance optimization - -Build 1.10.2-12.18.3.2217: - tehgeek: - Fix some resources that are never closed, close in a finally block - (#3637) - -Build 1.11.2-13.20.0.2216: - cpw: - Bypass forge chunk cache if it's configuratively disabled - (cherry picked from commit 9fe6385) - -Build 1.10.2-12.18.3.2215: - cpw: Bypass forge chunk cache if it's configuratively disabled - -Build 1.11.2-13.20.0.2214: - Choonster.2010: - Fix Biome#getSpawnableList returning an empty list for non-vanilla - EnumCreatureTypes (#3611) - -Build 1.11.2-13.20.0.2213: - williewillus: Skip first baking in ModelLoader (#3621) - -Build 1.11.2-13.20.0.2211: - diesieben07: Allow block to specify their type for AI pathfinding (#3546) - -Build 1.11.2-13.20.0.2210: - ichttt: Fix #3576 Unnecessary warning about totem being renamed (#3614) - liach: Removed an unsafe usage of `EntityMinecart.getType()` (#3592) - bs2609: Fix DungeonHooks method to use correct type (#3587) - bs2609: Fix ContainerRepair patch to prevent NPE (#3553) - modmuss50: Add Iron Nugget to OreDictionary (#3571) - JDLogic: Add missing patch to ItemStack isItemStackEqual (#3577) - tehgeek: Improve performance of inserting into inventory wrappers (#3622) - bs2609: Fix vanilla bug MC-98707 (#3565) - -Build 1.10.2-12.18.3.2209: - JDLogic: - [1.10.x] Fix ItemHandlerHelper canStack methods not checking - capabilities (#3105) - -Build 1.11.2-13.20.0.2208: - molecularphylo: Fix null check in BrewingRecipeRegistry (#3584) - williewillus: Fix IItemHandler's IStorage using nulls (#3580) - bs2609: Fix and clean up ItemBow.onPlayerStoppedUsing() patch (#3555) - bs2609: Small cleanup for PlayerInteractEvent (#3563) - tehgeek: Clean up null issues, add more annotations (#3590) - tehgeek: Fix #3596 Close jar sources safely in Java 6 (#3597) - williewillus: Fix milk not working on anything at all (#3574) - -Build 1.11.2-13.20.0.2207: - tehgeek: Use travis_wait to extend the timeout on gradlew build (#3610) - bs2609: Fix a couple more ItemStack null checks (#3586) - -Build 1.11.2-13.20.0.2206: - fry: - Fix super call to ItemOverrideList constructor inside - AnimationItemOverrideList, fixes #3264. - -Build 1.11.2-13.20.0.2205: - fry: Added caching for baked vanilla models, fixes #3594. - -Build 1.11.2-13.20.0.2204: - williewillus: Fix horse cap patch being reapplied in the wrong place (#3609) - -Build 1.11.2-13.20.0.2203: - tehgeek: - Add .travis.yml (#3598) - * Add .travis.yml - - * fix --refresh-dependencies - - * try java 8 - - * add build with stracktrace - - * Fix running test - - * try building with java 6 - - * try using simplified init.gradle - - * Revert "try using simplified init.gradle" - This reverts commit e56041e794e3b8c13453245eb2605118e4ac68ce. - - * Revert "try building with java 6" - This reverts commit 51795385f453fdd8a0e77c632b5463d8754b1ba4. - - * Fix running tests - - * skip createExe task - - * Test with broken debug mod - - * Revert "Test with broken debug mod" - This reverts commit 3b26700582ba4f4f5477f5927b0006ef0fe85bb0. - -Build 1.10.2-12.18.3.2202: - aa1ronham: Properly deobfuscate lambda expressions (#3532) - -Build 1.11.2-13.20.0.2201: - LexManos: Inital 1.11 update. - LexManos: Fix tests... - -Build 1.11-13.19.1.2199: - tehgeek: Fix #3561 import io.IOUtils instead of compress.utils.IOUtils (#3562) - -Build 1.11-13.19.1.2198: - tehgeek: Update MCP mappings to snapshot_nodoc_20161220 (#3551) - -Build 1.11-13.19.1.2197: - bs2609: [1.11] Fixes for Chunk.getBlockLightOpacity implementation (#3537) - tehgeek: - Fix some resources that are never closed, close in a finally block - (#3544) - tehgeek: - Add hook to allow any block to respond to filtered block updates like - the Observer block (#3547) - tehgeek: Add nullable annotations to IGuiHandler (#3550) - tehgeek: Properly deobfuscate lambda expressions (#3552) - -Build 1.11-13.19.1.2196: - JDLogic: - [1.11] Fix ItemHandlerHelper canStack and ItemStack areTagsEqual methods - not checking capabilities (#3500) - -Build 1.11-13.19.1.2195: - tehgeek: - Make NBSP character display as a space. MC-2595 (#3522) - Add easy getter for the Locale: MinecraftForgeClient.getLocale() - -Build 1.11-13.19.1.2194: - bs2609: - Patch EntityPlayerSP to use location-aware version of isNormalCube - (#3494) - tehgeek: - Fix uses of uppercase "Forge" where it fails Loader.isModLoaded(modID) - (#3513) - maxanier: [1.11] Made WalkNodeProcessor consider burning blocks (#3515) - tehgeek: Fix setting the world in TileEntity.addTileEntity (#2863) (#3517) - dawn0966: - Added Oak door to Ore Dictionary Exclusion list to fix able to craft it - with any wood type (#3519) - -Build 1.11-13.19.1.2193: - whs1999kr: reset repo to upstream and reapplied patches (#3434) - tehgeek: [1.11] Add memory display to loading screen (#3447) - -Build 1.11-13.19.1.2192: - rock: [1.11] Added EnchantmentLevelSetEvent (#3433) - -Build 1.11-13.19.1.2191: - minecrell: Register Minecraft mod container in FML loader (#3414) - -Build 1.11-13.19.1.2190: - LexManos: Fix modid field name for ProjectInjector. - LexManos: Small memory optimization in Registries. - -Build 1.11-13.19.1.2189: - LexManos: - Enable Enforcement of modid formatting. Must be lowercase and <= 64 - characters - -Build 1.11-13.19.1.2188: - LexManos: Bump version for RB. - -Build 1.11-13.19.0.2187: - mezz: [1.11.x] Refine fluid placement utilities (#3509) - -Build 1.11-13.19.0.2186: - LexManos: - Properly filter out annotations that are for multiple mods in the same - mod source. This prevents disabled mods from getting their proxies - injected. Also prevents mods from getting their proxies injected - multiple times. Effects the @EventBusSubscriber, @Instance, @Metadata, - @SidedProxy annotations. If the target modid is not in the annotation - data, and there are multiple mods in the source, it will attempt to find - it by matching the annotations's class names. This is a potentially - breaking change. Review your logs for "skipping" messages. - -Build 1.10.2-12.18.3.2185: - LexManos: Bump version number for new Recommended Build. - -Build 1.11-13.19.0.2184: - LexManos: - Prevent a crash when scheduling block updates for non-existing blocks - #3485 - -Build 1.10.2-12.18.2.2183: - LexManos: - Prevent a crash when scheduling block updates for non-existing blocks - #3485 - -Build 1.10.2-12.18.2.2182: - LexManos: - Make Container.mergeItemStack respect target slot's max size when slot - is non-empty. Closes #3498 Fix Shift clicking in Beacons with stacked - items when fuel slot is empty. - (cherry picked from commit c6bc4ec5a92b640ebe773bfa48732dfa7eb59a17) - LexManos: - Fix NPE when rendering missing mod screen with version bound - requirements. #3501 - (cherry picked from commit c1e832bff09c949bfe736f492c2e4aa8004baa84) - LexManos: - Fix issue reading chunks from the network when client and server do not - agree on block count. Closes #34925 - (cherry picked from commit daf21e4dcf246cfa15c362800effc5dc787ab777) - -Build 1.11-13.19.0.2181: - LexManos: Make sure to log kick messages in NetworkDispatcher. Closes #3507 - LexManos: - Fix NPE when rendering missing mod screen with version bound - requirements. #3501 - LexManos: - Added isItemValidForSlot check to hopper extraction (#3444) - (cherry picked from commit 0348760a774ca7ed9639376baadae38e272f5bf8) - LexManos: - Fix for showing config default values twice in tooltip (#2257) (#3338) - (cherry picked from commit be73ec3d5ebd972cfacb0f255f71112a0430bc43) - LexManos: - Add null check and informative error message when client receives an - invalid update packet (#3266) - (cherry picked from commit 882e0e3bf22784d693e3816b0efeba5fbedb1a22) - LexManos: - Add ItemBlockSpecial#getBlock (#3343) - (cherry picked from commit cf26f4acbe48ee8790edc03d0b5c16c1167278ab) - LexManos: - Added gradle.properties to MDK (#3361) - The file sets the default max heap size to 3 GiB so that the - decompilation doesn't fail as often. - (cherry picked from commit 49ec3d1b9322ee2b7a1312059118173b0b3fe6d0) - LexManos: - Make SlotItemHandler override Slot.getSlotStackLimit. Closes #3497 Make - Container.mergeItemStack respect target slot's max size when slot is - non-empty. Closes #3498 Fix Shift clicking in Beacons with stacked items - when fuel slot is empty. - LexManos: Restore missed patch in World.updateComparatorOutputLevel. Closes #3495 - LexManos: - Fix issue reading chunks from the network when client and server do not - agree on block count. Closes #34925 - -Build 1.11-13.19.0.2180: - diesieben07: Add missing pooled BlockPos retain in World patch (#3486) - mezz: - Add a way for modded GuiScreens to cancel mouse and keyboard events - (#3438) - blay09: - [1.11] Add canApplyAtEnchantmentTable to Item (#3463) - Allowing increased control of which enchantments can be put on an item - over Vanilla's hard-coded item type checks. - disabled when the item is enchantable but the enchantability requirement - is not met on lower levels. - mezz: [1.11] Add biome dictionary types for newer biomes (#3475) - bs2609: [1.11] Fix null checks in shouldCauseReequipAnimation (#3482) - -Build 1.10.2-12.18.2.2179: - blay09: - Add null check and informative error message when client receives an - invalid update packet (#3266) - raoulvdberge: Add ItemBlockSpecial#getBlock (#3343) - yannick: - Added gradle.properties to MDK (#3361) - The file sets the default max heap size to 3 GiB so that the - decompilation doesn't fail as often. - -Build 1.11-13.19.0.2178: - liach: Moved TextureStitchEvent.Pre to allow custom sprites for blocks (#3436) - -Build 1.11-13.19.0.2177: - bs2609: Fix sky colour blending not working for render distances >16 (#3476) - -Build 1.11-13.19.0.2176: - logictechcorp: Allow connectable blocks to choose what they can connect to (#3437) - -Build 1.11-13.19.0.2175: - dawn0966: Changed Armor Material to use an ItemStack aware version (#3469) - -Build 1.11-13.19.0.2174: - bs2609: Fix Redstone Torch memory leak (#3474) - -Build 1.11-13.19.0.2173: - diesieben07: BiomeDictionary code cleanup (#3466) - -Build 1.11-13.19.0.2172: - TechnicianLP: Added EquipmentChangeEvent (#3411) - -Build 1.10.2-12.18.2.2171: - bs2609: Fix Redstone Torch memory leak (#3271) - -Build 1.10.2-12.18.2.2170: - 1vInc: Fix for showing config default values twice in tooltip (#2257) (#3338) - -Build 1.11-13.19.0.2169: - marvinroesch99: Update assets to new Forge brand (#3464) - -Build 1.11-13.19.0.2168: - LexManos: - First pass at exposing data fixers to modders. Each mod gets its own - version number, mods SHOULD NOT rely on other mod's fixers, just care - about yourself. Walkers can use IDataFixerData to retrieve their - version. - -Build 1.11-13.19.0.2167: - williewillus: Add getSlotLimit(slot) to IItemHandler (#3445) - -Build 1.10.2-12.18.2.2166: - draco18s: Added isItemValidForSlot check to hopper extraction (#3444) - -Build 1.11-13.19.0.2165: - mezz: Provide access to GuiContainer location and dimensions (#3440) - kashike: - Add method to check if an Entity can trample a Block. Fixes #2510 - (#2730) - cpw: - Pass along if the respawn event was the result of the end being - conquered or not (end respawning is really FUNKY code and uses death - instead of 'change dimension') - -Build 1.11-13.19.0.2162: - bs2609: Clean up handling of changes to IVertexConsumer (#3458) - -Build 1.11-13.19.0.2161: - bs2609: Quick fix for another ItemStack null check (#3426) - mezz: Provide access to ShapedOreRecipe width and height (#3439) - -Build 1.11-13.19.0.2160: - cpw: - Fix problem with the server hanging around after forcing the client to - exit, leaving behind stale processes. - -Build 1.11-13.19.0.2159: - mezz: - Fix #3432 Hopper and Dropper item moving does not exactly match vanilla - (#3442) - mezz: Fix using the wrong Pair implementation (#3449) - -Build 1.11-13.19.0.2157: - mezz: Fix #3424 ItemCraftedEvent returns air when shift-clicking (#3441) - -Build 1.11-13.19.0.2156: - mezz: - Cleanup some null checks and remove deprecated methods in Item and Block - (#3429) - -Build 1.11-13.19.0.2155: - LexManos: Make all tests one side only, so we can test vanilla clients in dev env. - LexManos: - Insert FML packet handler into Vanilla pipelines in case modders send - FMLPacket to vanilla. Fixes #3422 - LexManos: Fix max CustomPayload size, 1MB not 16MB. - -Build 1.11-13.19.0.2154: - LexManos: Fix AbstractMethodException in FML Registries. Closes #3427 - -Build 1.11-13.19.0.2153: - shadowfacts: - Move EntityHorse capability patches to AbstractHorse (#3417) - Fixes #3409 - LexManos: Fix ItemStack null check in PlayerInteractionManager - -Build 1.11-13.19.0.2152: - shadowfacts: Initial annotations/nullability changes (#3392) - TechnicianLP: Remove Block.addInformation exists in vanilla (#3413) - LexManos: Fix Item transfers related to Hoppers. - -Build 1.10.2-12.18.2.2151: - ohai.iChun: - Add GetCollisionBoxesEvent. Allows manipulation of the collision boxes - for moving entities and entities stuck in walls. (#3397) - -Build 1.11-13.19.0.2150: - ohai.iChun: - Add GetCollisionBoxesEvent. Allows manipulation of the collision boxes - of blocks for entities. MC1.11 edition. (#3405) - -Build 1.11-13.19.0.2149: - LexManos: First draft of Entity Registry re-write. - -Build 1.11-13.19.0.2148: - LexManos: - Make Wither Skulls respect Block.canEntityDestroy. Closes #3404 - (cherry picked from commit 6b52023a5c341420d976cb50359e2a2a4a6a9192) - -Build 1.10.2-12.18.2.2147: - LexManos: Make Wither Skulls respect Block.canEntityDestroy. Closes #3404 - -Build 1.11-13.19.0.2146: - Bartek_s2: Added EnumHand parameter to Block.getStateForPlacement (#3402) - -Build 1.11-13.19.0.2145: - LexManos: - Fix issues with ZombieVillagers Closes #3398 1.11 doesn't intertwine - zombie types anymore so our edits to split them out for custom - professions are not needed. - LexManos: Fix client side placement issue on blocks with GUIs. Closes #3399 - -Build 1.11-13.19.0.2144: - ezterry3: - Fix Villagers for 1.11 (#3401) - - Add cartographer registry entry - - Fix textures for the nitwit - -Build 1.11-13.19.0.2143: - mezz: [1.11] Fix nullability issues around ForgeHooks and Capabilities (#3395) - -Build 1.11-13.19.0.2142: - larsgerrits99: - Change OreDictionary over from "null" to the new ItemStack system. - (#3400) - -Build 1.11-13.19.0.2141: - LexManos: - Do not install mod_list.json for optional mods. Classpath scanning is in - so they will still be detected - -Build 1.10.2-12.18.2.2140: - LexManos: - Do not install mod_list.json for optional mods. Classpath scanning is in - so they will still be detected - -Build 1.10.2-12.18.2.2139: - LexManos: Include Mercurius in installer. See Forge Forums for more info. - -Build 1.11-13.19.0.2138: - LexManos: Include Mercurius in installer. See Forge Forums for more info. - -Build 1.11-13.19.0.2137: - LexManos: Restore the ability to register modded TileEntities. - -Build 1.11-13.19.0.2136: - mezz: Remove deprecated Fluid stuff - mezz: Implement fluid item capabilities without item swapping - -Build 1.11-13.19.0.2135: - LexManos: - Make EntityShulker fire EnderTeleportEvent. Closes #3383 - (cherry picked from commit d48985fafaed6de6f09136b999ca8aa44184a7b9) - LexManos: Fixed damage bar color. Closes #3389 - LexManos: Fix ItemStackHandler's constructor ignoring size. Closes #3386 - shadowfacts: Fix crafting causing crash (#3388) Closes #3387 - -Build 1.10.2-12.18.2.2134: - LexManos: Update installer to 1.5, and fix local buildscript issues. - LexManos: Make EntityShulker fire EnderTeleportEvent. Closes #3383 - -Build 1.11-13.19.0.2133: - LexManos: - Added event to allow modification of player visibility to mobs/AI - (#3382) - (cherry picked from commit 0a5ef64d6ea96fe85d7c62107081ced649e6a3e9) - -Build 1.10.2-12.18.2.2132: - maxanier: - Added event to allow modification of player visibility to mobs/AI - (#3382) - -Build 1.11-13.19.0.2131: - LexManos: Apply missed patch to WorldProvider. - mezz: [1.11] Fix initCapabilities for ItemStacks (#3379) - LexManos: Disable capabilities for empty ItemStacks. - LexManos: Restore another missing patch in WorldProvider. - -Build 1.11-13.19.0.2130: - LexManos: - Fix build.gradle problems: Installer missing url.png UploadArchives - erroring on local systems due to missing changelog Adding branch name - improperly. - -Build 1.11-13.19.0.2129-1.11.x: - LexManos: Fix localizations not loading correctly in legacy resource packs. - -Build 1.11-13.19.0.2128-1.11.x: - LexManos: Fix FurnaceRecipy registration. - -Build 1.11-13.19.0.2127-1.11.x: - LexManos: Fixed test cases for 1.11 changes. - -Build 1.10.2-12.18.2.2125: - cpw: Update to 20161111 mcp names - cpw: regenerate entitylivingbase patch - -Build 1.10.2-12.18.2.2124: - mezz: Improve error message from crashes during loading (#3362) - -Build 1.10.2-12.18.2.2123: - draco18s: Added events for crop growth (#3320) - -Build 1.10.2-12.18.2.2122: - maxanier: Add support for custom entity selectors in commands (#3356) - -Build 1.10.2-12.18.2.2121: - latvianmodder: Added PermissionAPI (#3155) - -Build 1.10.2-12.18.2.2120: - Choonster.2010: Add hand argument to BlockEvent.PlaceEvent (#3221) (#3270) - -Build 1.10.2-12.18.2.2119: - jezzadabomb: - Fixes #3237 and #2752. (#3347) - * Fix #3237 by correctly utilising the keepLooking argument. - - * Explain within SimpleNetworkWrapper's javadoc that the execute of the - handler isn't on the main Minecraft thread. - -Build 1.10.2-12.18.2.2118: - draco18s: Made default slot implementation respect inventory stack size limit. - -Build 1.10.2-12.18.2.2117: - aa1ronham: Fixed Block.setBedOccupied ignoring 'occupied' parameter - -Build 1.10.2-12.18.2.2116: - raoulvdberge: - Add Item#getNBTShareTag (#3342) - * Add Item#getNBTShareTag - - * Update comment - -Build 1.10.2-12.18.2.2115: - bonii-xx: - Call Looting Event on player death and loot table drops (#3275) - * Call Looting Event on player death and loot table drops - - * Simplify patches - - * More code cleanup: Replace old usage with compact forgehooks - implementation - -Build 1.10.2-12.18.2.2114: - LexManos: Fix POTENTIAL issue with Texture Stitcher exceeding max size. - -Build 1.10.2-12.18.2.2113: - dawn0966: - Fixed Ore Dictionary replacing the oak boat recipe (#3329) - Fixes the oak boat recipe being able to be crafted with any wood - -Build 1.10.2-12.18.2.2112: - rwtema: - Improve the default isItemValid() and getItemStackLimit() - implementations in SlotItemHandler. You can now properly swap the - player's held itemstack with the slot's itemstack. (#3273) - -Build 1.10.2-12.18.2.2111: - LexManos: - Fixed texture stitcher not using full texture height before expanding - width. - -Build 1.10.2-12.18.2.2110: - LexManos: - Special case not drooping snowballs for water and snow layers. Closes - #3326 - LexManos: Update readme to be a little more clear. - -Build 1.10.2-12.18.2.2109: - bs2609: Fix MC-105406 (OpenGL leak in View Frustum) (#3308) - -Build 1.10.2-12.18.2.2108: - mezz: Fix very laggy mipmap slider MC-64581 (#3305) - -Build 1.10.2-12.18.2.2107: - shadowfacts: Add Block#getStateForPlacement (#3129) - -Build 1.10.2-12.18.2.2106: - mezz: Add better key modifier behavior for GUI contexts (#3307) - -Build 1.10.2-12.18.2.2105: - tterrag1098: Make item repair recipe respect itemstack's getMaxDamage (#3295) - -Build 1.10.2-12.18.2.2104: - LexManos: Fix Tabbing issues with config classes. - LexManos: Fix infinite loop in dragon fight when the dragon is over the void. - -Build 1.10.2-12.18.2.2103: - LexManos: Initial pass a re-working the configuration system. Work in progress. - -Build 1.10.2-12.18.2.2102: - atomicblom+github: Allow all Forge Registries to work with ObjectHolder (#3220) - LexManos: @ObjectHolder will now inject null for dummied objects. Closes #3301 - cpw: - Revert "Another fix for registry substitutions. Closes #3212" - This reverts commit ec2977afc919c0f676f59977e6065148ea635f9e. - cpw: - Fix substitutions being broken after freezing - actually store the - original state in registry copies, not the computed state, which is - wrong because it only sees the sub, not the original. - cpw: - Add in missing test runner for a test. Fixes failing tests on jenkins, - hopefully. - -Build 1.10.2-12.18.2.2099: - LexManos: - Revert commits related to filtering proxy and Automatic Subscriber - annotations. Broke some existing setups, will require a annotation - definition change in 1.11. - -Build 1.10.2-12.18.2.2098: - mezz: Fix proxy injector filtering. (#3300) - -Build 1.10.2-12.18.2.2097: - LexManos: Bump version for new Recommended Build. - -Build 1.10.2-12.18.1.2096: - LexManos: Small Cleanup in example build.gradle. - LexManos: - Filter out proxy injectors for incorrect mods. Prevents mod classes - being initialized early when multiple mods are in the same source. - LexManos: - Introduce IContextSetter for events. This will set the active mod - container for events using the normal EventBus. Fixes improper warnings - from initializing mods using the new Registry events. Modders, you - should not use this as it has many performance implementations and if - abused will slow down the event bus A LOT. ActiveModContainer is not - thread safe. - -Build 1.10.2-12.18.1.2095: - mezz: Fix unbound keybindings are activated by unknown keyboard keys (#3288) - -Build 1.10.2-12.18.1.2094: - mmehnert: - caseSensitiveCustomCategories must be set before loading the - configuration file. (#3269) - Otherwise one set with categories in lowercase letters and on case - sensitive - -Build 1.10.2-12.18.1.2093: - tterrag1098: Fix typo in sky rendering causing tons of BlockPos allocations (#3267) - -Build 1.10.2-12.18.1.2092: - cpw: - Add in registry registration events, new subscription events you can use - to make sure you're registering things at the "best" time. - -Build 1.10.2-12.18.1.2091: - LexManos: - Add support for generic filtering of events. Please DO NOT use this in - performance sensitive environments where you will have tons of things - added to the listener list. If that's the case define sub-classes as - they have completely separate lists and will thus be more efficient when - firing the event. - -Build 1.10.2-12.18.1.2090: - lukas.tenbrink: - Fix roofed forests posting decoration events for small mushrooms rather - than big (#3259) - -Build 1.10.2-12.18.1.2089: - mattmess1221: - Add support for offhand bow aiming animation (#3085) - Vanilla allows you to use a bow in your offhand, but it's not visible to - others or in third person. - -Build 1.10.2-12.18.1.2088: - tehgeek: - Remove oredict for Bone Block recipe, stop white dye to bonemeal exploit - (#3255) - -Build 1.10.2-12.18.1.2087: - LexManos: - Fixed Biome.platFlower not being called when bonemealing grass. Closes - #3254 - -Build 1.10.2-12.18.1.2086: - latvianmodder: - Added getCommandMap() & getSortedCommandList() in CommandTreeBase - (#3251) - -Build 1.10.2-12.18.1.2085: - atomicblom+github: New event to allow mutating a baby entity based on it's parents (#3227) - -Build 1.10.2-12.18.1.2084: - latvianmodder: Added CommandTreeBase (#3193) - -Build 1.10.2-12.18.1.2083: - paul.fulham0: Fix debug command creating empty file (MC-103399) (#3218) - -Build 1.10.2-12.18.1.2082: - marvinroesch99: Fix universal bucket not being returned in crafting recipes (#3234) - -Build 1.10.2-12.18.1.2081: - cpw: Create EnergySystems.md - -Build 1.10.2-12.18.1.2080: - LexManos: - Introducing a new standardized energy capability system. Heavily - inspired by the old RedstoneFlux API developed by King Lemming and Team - CoFH. - LexManos: Fix potential shading issue in GuiEditArrayEntries. Closes #3247 - -Build 1.10.2-12.18.1.2079: - LexManos: Fixed ItemStacks having ForgeCaps tag when no caps are serialized. - -Build 1.10.2-12.18.1.2078: - LexManos: Fix Cactus being able top be planted on incorrect soil. - -Build 1.10.2-12.18.1.2077: - bloodmc: Fix wrong var being used during getMaxSpawnPackSize check. (#3240) - -Build 1.10.2-12.18.1.2076: - LexManos: - Move dismount version of EntityMountEvent to Entity class. Should fix - canceling dismounting. Closes #3226 - -Build 1.10.2-12.18.1.2075: - LexManos: Yet another fix for stupid stairs. Closes #3224 - -Build 1.10.2-12.18.1.2074: - LexManos: Make StructureBlock TESRs always render. Closes #3222 - -Build 1.10.2-12.18.1.2073: - paul.fulham0: Fix item use stats (#3216) - -Build 1.10.2-12.18.1.2072: - LexManos: - Fixed decorate event being called with SHROOM type for both convered - trees and large mushrooms. Closes #3215 - -Build 1.10.2-12.18.1.2071: - LexManos: Another fix for registry substitutions. Closes #3212 - -Build 1.10.2-12.18.1.2070: - LexManos: Add legacy support for signature change of AddCallback. - LexManos: - Update gradle wrapper to 2.14, reference MC json, and add java6 compat - lines to default MDK build.gradle. - -Build 1.10.2-12.18.1.2069: - bonii-xx: Revert changes to ItemTool for binary compatibility (#3211) - -Build 1.10.2-12.18.1.2068: - bonii-xx: Expand getHarvestLevel to include player and blockstate (#3192) - -Build 1.10.2-12.18.1.2067: - LexManos: - Make enchantment tables spawn particles for any custom energy provider. - Closes #3208 - -Build 1.10.2-12.18.1.2066: - williewillus: Allow blocks to affect the beacon color (#3205) - -Build 1.10.2-12.18.1.2065: - LexManos: Fix armors rendering badly. Closes #3196 - -Build 1.10.2-12.18.1.2064: - abab9579: Fixed NPE from missing Capabilities (#3191) - -Build 1.10.2-12.18.1.2063: - LexManos: Fix World Capabilities NPE when there are no attached capabilities. - -Build 1.10.2-12.18.1.2062: - abab9579: Introduced Capabilities for World (#3069) - -Build 1.10.2-12.18.1.2061: - LexManos: - Fix vanilla bug in BlockFalling that caused blocks to loose state info - during world gen. Closes #3183 - -Build 1.10.2-12.18.1.2060: - Gerard Bruwn: Added PlayerBrewedPotionEvent (#3187) - -Build 1.10.2-12.18.1.2059: - cpw: Don't crash if you select a fake player - -Build 1.10.2-12.18.1.2058: - LexManos: - Skip searching for mods in the JAVA_HOME directory. Closes #2249 and - #2250 - -Build 1.10.2-12.18.1.2057: - LexManos: - Fix leather armor overlay not rendering when armor is pure white. Closes - #3184 - -Build 1.10.2-12.18.1.2056: - josephcsible: - Fix test mod IDs, names, and versions (#3122) - Most of our test mods have bad IDs (uppercase) and are missing names or - versions. Forge produces a bunch of warnings in the console about this, - which - -Build 1.10.2-12.18.1.2055: - florian: - Make InventoryHelper#spawnItemStack use ItemStack#splitStack to avoid - losing capability data. (#3163) - -Build 1.10.2-12.18.1.2054: - sebastian: - Unlike BakedQuad, UnpackedBakedQuad does not propagate the diffuse - lighting flag to Vertex Consumers. Made UnpackedBakedQuad conform to - BakedQuad's behavior. (#3181) - -Build 1.10.2-12.18.1.2053: - LexManos: - Set ModelLoader.WHITE's texture size iniatlly instead of defaulting to - zero and being set later. - LexManos: Add RenderTooltipEvent (#3034) - -Build 1.10.2-12.18.1.2052: - tehgeek: - Fix #3165 Dispensers with buckets can destroy fluid handler blocks - (#3180) - -Build 1.9.4-12.17.0.2051: - tterrag1098: Add RenderTooltipEvent (#3034) - -Build 1.10.2-12.18.1.2050: - LexManos: Fix Fire not using getFireSpreadSpeed. Closes #3175 - -Build 1.10.2-12.18.1.2049: - LexManos: Fix issue with stairs. - -Build 1.10.2-12.18.1.2048: - LexManos: Removed unintentional functionality when using the Splash Screen. - -Build 1.10.2-12.18.1.2047: - LexManos: Make stair culling use actual state, and be more robust. Closes #3170 - LexManos: Fix name in legacy support in registry changes. - LexManos: - Compleetly skip FML handshake for Vanilla connections. Should fix race - condition. Closes #3084 - LexManos: - Disable DecorateEventDebug by default. Prevents me thinking that - decoration is broken >.< - -Build 1.10.2-12.18.1.2046: - AlgorithmX2: - Fix Vertex Transformer for breaking models (#3132) - * Add setTexture to IVertexConsumer and propagate it. - -Build 1.10.2-12.18.1.2045: - LexManos: - Restone binary compatibility with registry substitution rework. Modders - please switch to using the provided RegistryBuilder to ensure more - forward compatbility. Closes #3144 - LexManos: Fix Forge fluids not serializing properly. Closes #3152 - -Build 1.10.2-12.18.1.2044: - LexManos: - Second pass at fixing 'Dissapearing Doors' This now more robustly fixes - ALL uses of get and has slight performance improvements for itterable - states. Closes #3139 - -Build 1.10.2-12.18.1.2043: - LexManos: - Added config option to disable Forge's fix of Stair/Slab face culling. - Some vanilla resource packs exploit this issue in their custom models - causing unintended rendering issues. - -Build 1.10.2-12.18.1.2042: - LexManos: - Fixed 'Dissapearing Doors', An issue where the world would try to save - blockstates that are not serializeable. - -Build 1.10.2-12.18.1.2041: - cpw: Allow CommandEvent to change the parameter set. Closes #1762 - -Build 1.10.2-12.18.1.2040: - cpw: - Another pass at substitutions - now capable of fixing up ItemBlock to - point at the right block when a block is substituted, should also handle - substituting itemblocks. There's some hackery in the way we have to - change the value of ItemBlock.block, but it's not too egregious in my - opinion. - -Build 1.10.2-12.18.1.2039: - dakotapierone: Update decorate for biomes to support Decorate event - cpw: Clean up AT file - -Build 1.10.2-12.18.1.2038: - cpw: - Fix anvil output slots being wrong by adding new ones. Closes #3121 - without breaking existing mod workarounds for the badly ordered slots. - -Build 1.10.2-12.18.1.2037: - vincent.lee: - Expose vanilla brewing recipe registration (cherry picked from commit - 24bf163) - -Build 1.10.2-12.18.1.2036: - cpw: - Clean up some legacy settings, making sure there's translation strings. - Closes #2965 Thanks for the prompt Zaggy! - -Build 1.10.2-12.18.1.2035: - vincent.lee: Fix MC-91728 (cherry picked from commit 71f75bf) - cpw: Refresh patch after cherry pick (cherry picked from commit 71f75bf) - -Build 1.10.2-12.18.1.2034: - vincent.lee: - Remove sideonly on all other SoundType methods (cherry picked from - commit 46c7cac) - -Build 1.10.2-12.18.1.2033: - mnmiller1: - Fixed NeighborNotifyEvent not containing the piston facing direction. - (cherry picked from commit 5637c41) - -Build 1.10.2-12.18.1.2032: - AlgorithmX2: Use extended state for breaking models (#3086) - -Build 1.10.2-12.18.1.2031: - vincent.lee: No-nonsense getSoundType - cpw: Clean up block patch. Also push json update. - -Build 1.10.2-12.18.1.2030: - CreativeMD: Fixed sound paused/resume issue - -Build 1.10.2-12.18.1.2029: - alexandre.duponchel: FIX : IndexOutOfBoundException - -Build 1.10.2-12.18.1.2028: - cpw: Mark it for actual removal in 1.11 - cpw: Tidy up some more todos - cpw: - Fix #3126 - duplicate stat id error - don't use the "universal - iterators" in statbuilding, use the one without the duplicate entries. - (The duplicate entry one is for rendering setup) - -Build 1.10.2-12.18.1.2027: - cpw: - Fix a vanilla bug with the blockstate ID map not being properly - symmetric with respect to block.getStateFromMeta - closes #3012 properly - but probably has a random MCJIRA ticket somewhere too. - -Build 1.10.2-12.18.1.2026: - vincent.lee: Add ability for custom detector rail output - vincent.lee: Move to a hook in EntityMinecart - vincent.lee: Remove event stuff - -Build 1.10.2-12.18.1.2025: - mezz: Force mipmap even if textures are the wrong size - mezz: Add TextureDump forge test mod - -Build 1.10.2-12.18.1.2024: - vincent.lee: Add hand-specific render event - vincent.lee: Add missing cancelable - cpw: Rename the event to RenderSpecificHandEvent - -Build 1.10.2-12.18.1.2023: - josephcsible: Add CreateFluidSourceEvent to control infinite fluid sources - josephcsible: Add a test for CreateFluidSourceEvent - josephcsible: Use CreateFluidSourceEvent for mod fluids as well - -Build 1.10.2-12.18.1.2022: - mezz: Fix hotkey with default modifier loading wrong when modifier set to NONE - -Build 1.10.2-12.18.1.2021: - bernhard.bonigl: - Add shouldCauseBlockBreakReset callback to Item. This allows to keep - breaking blocks if the NBT or similar changes. - -Build 1.10.2-12.18.1.2020: - Mumfrey: Store member field mappings in the mapping table, possible fix for #3043 - -Build 1.10.2-12.18.1.2019: - cpw: - Something that needs to happen: warn people about bad modids- if they're - not lowercased, or if they're too long. - -Build 1.10.2-12.18.1.2018: - ezterry3: - Fix async race condition on new chunks (closes #3020) (#3090) - This patch fixes a race condition that sometimes caused a just generated - chunk - structures to - generated version - chunk. - This patch ensures when ProvideChunk calls LoadChunk synchronously we - always - condition without - already saved to disk. - Thus this should retain the async functionality from PR #2946 while - preventing - -Build 1.10.2-12.18.1.2017: - cpw: - Some test harness stuffs. Time to get the registry manager properly - tested. - cpw: - More tests. Substitutions now work, and a fix is included. *sigh* Closes - too many bugs to count. - cpw: Some more substitution tests. It seems like it's working as it should. - cpw: Some dummy block replacement tests - it seems they work correctly. - cpw: Add the new tests into the suite - cpw: - Some tweaks to ContainedDeps - it should extract to a file in - versionedMods directly, even if the tag in the jar has a subpath - element. It'll also skip if there is a matching filename in the main - mods dir. - -Build 1.10.2-12.18.1.2016-failtests: - cpw: Some more substitution tests. It seems like it's working as it should. - cpw: Some dummy block replacement tests - it seems they work correctly. - -Build 1.10.2-12.18.1.2014: - LexManos: - Added support for using static methods as event listeners, Register the - .class instead of an instance. And added an improvement to calltime - listener rebuilding. - -Build 1.10.2-12.18.1.2013: - cpw: Lets make a half-decent readme. Thanks to Rorax for the install video! - -Build 1.10.2-12.18.1.2012: - mezz: Add Forge fluid handler test - -Build 1.10.2-12.18.1.2011: - LexManos: Bump version for a RB - -Build 1.10.2-12.18.0.2010: - bernhard.bonigl: - Add an event that allows to modify the looting level based on damage - source - -Build 1.10.2-12.18.0.2009: - williewillus: Add throwable impact event (#3071) - -Build 1.10.2-12.18.0.2007-1.10.0: - LexManos: - Fix hopper extract behavior being broken on edge cases due to - IItemHandler capability. Closes #3062 - -Build 1.10.2-12.18.0.2006-1.10.0: - LexManos: - Fixed FPS graph and new debug lines not being rendered in Debug screen. - Closes #3054 - -Build 1.10.2-12.18.0.2005-1.10.0: - diesieben07: - Restore (buggy?) behavior of vanilla BlockPistonMoving and ignore drop - chance (#3052) - -Build 1.10.2-12.18.0.2004-1.10.0: - LexManos: - Fix villages generating to high when using a cusom sea level. Closes - #3050 - -Build 1.10.2-12.18.0.2003-1.10.0: - LexManos: - Forge will now load extra mods from mods/mod_list.json and - mods/mc_version/mod_list.json. As defined by the same json spec as - --modListFile. And now if repositoryRoot is prefixed with absolute: the - path will NOT be relative to the MC directory. - LexManos: - Update build.gradle to have single line for specifying minecraft - version, and will update ForgeVersion.java as needed. - -Build 1.10.2-12.18.0.2002-1.10.0: - LexManos: - Fixed MC version number... I could of SWORN we removed this in favor of - a automated system... - -Build 1.10.2-12.18.0.2001-1.10.0: - LexManos: 1.10.2 Update - -Build 1.10-12.18.0.2000-1.10.0: - diesieben07: - Fix mob-spawners crashing for non-living entities and simply the patch - in the process (#3042) - -Build 1.10-12.18.0.1999-1.10.0: - mezz: - Fix legacy handling for ItemBucket subclasses and non-universal buckets - (#3038) - mezz: - Fix milk bucket is fillable with water or lava when milk is unregistered - (#3039) - -Build 1.10-12.18.0.1998-1.10.0: - mezz: Remove duplicated universal buckets from the creative list (#3035) - mezz: Fix FluidContainerRegistry handling potions as water bottles (#3037) - -Build 1.10-12.18.0.1997-1.10.0: - cpw: - Big warning for recipe types found without being registered, it turns - out this is pretty severe, modders need to fix it. - -Build 1.10-12.18.0.1996-1.10.0: - mezz: - Fix comparison stability of the Recipe Sorter with unknown recipes #2962 - (#3030) - -Build 1.10-12.18.0.1995-1.10.0: - LexManos: Fixed Husks rendering as standard zombies. Closes #3028 - -Build 1.10-12.18.0.1994-1.10.0: - LexManos: Fixed chests being replaced when trees grew. - -Build 1.10-12.18.0.1993-1.10.0: - luacs1998: Simple implementation of a Open/Close container event (#3017) - -Build 1.10-12.18.0.1991-1.10.0: - LexManos: - Fixed shifted patch in GameSettings causing settings to not load - properly. Closes #3025 #3022 - LexManos: Fixed incorrect variable being sent to doSpecialSpawn. Closes #2986 - LexManos: Fix incorrect logic in ChunkCache.isSideSolid. Closes #3026 - LexManos: Provide 'cleaner' version of TextureMap.setTextureEntry. Closes #1385 - -Build 1.9.4-12.17.0.1990: - LexManos: Fixed incorrect variable being sent to doSpecialSpawn. Closes #2986 - LexManos: Fix incorrect logic in ChunkCache.isSideSolid. Closes #3026 - -Build 1.10-12.18.0.1989-1.10.0: - cpw: Fix doors popping off solid sides. - -Build 1.10-12.18.0.1988-1.10.0: - cpw: Fix that the Missing blocks/items/registries prompt often got stuck. - -Build 1.9.4-12.17.0.1987: - LexManos: - Set ModelLoader.WHITE's texture size iniatlly instead of defaulting to - zero and being set later. - -Build 1.10-12.18.0.1986-1.10.0: - cpw: Fix Realms button text to be shorter again. Closes #3019 - -Build 1.10-12.18.0.1985-1.10.0: - cpw: Fix item pickup dupe bugs. Closes #3015 - -Build 1.10-12.18.0.1984-1.10.0: - blay09: - [1.10] Fix keys with KeyModifier failing to load (#3018) - Fix key options with KeyModifier failing to load due to - NumberFormatException - -Build 1.10-12.18.0.1983-1.10.0: - cpw: - Accept more 1.9.4 version strings. Fix NPE for custom villager types and - their associated zombie spawns. Still needs review. - -Build 1.10-12.18.0.1982-1.10.0: - mezz: Fix all guis closing as soon as they are opened (#3013) - -Build 1.10-12.18.0.1981-1.10.0: - cpw: Update to 1.10 - LexManos: Fix version number. - -Build 1.9.4-12.17.0.1980-1.10.0: - cpw: Fix the MDK - it gets the license too! - -Build 1.9.4-12.17.0.1979-1.10.0: - cpw: - Update the build.gradle script to ship the new license and stop shipping - the old licenses. - -Build 1.9.4-12.17.0.1978-1.10.0: - cpw: - In accordance with our stated goal of relicensing Forge to LGPL v2.1, - this commit enacts that change. Although it is using the 1.9.4 codebase, - it is intended that this branch become public with the 1.10 changes, as - such the license will take effect at that time. The three commits from - persons who have failed to accept the new license, as documented in - #2789, have had their commits reverted. This should complete the license - transition. Commits after the commit date of this commit should be - considered licensed by LGPLv2.1, as indicated in LICENSE-new.txt. All - patches are now considered owned by the Forge project and Forge - Development LLC in particular (note that they will not get the license - boilerplate, as they are machine generated files). - -Build 1.9.4-12.17.0.1976: - GirafiStudios: - Made forge-type spawn eggs spawn childs, when right clicking - EntityAgeable again. (#2982) - -Build 1.9.4-12.17.0.1975: - shadowfacts: Fix broken EntityItem merging for Items with capabilities - diesieben07: - Make ASMDataTable more useful: (#2911) - - EnumHolder now has getters for it's data - - enum arrays work now - - nested annotations work now outside of being in arrays - (cherry picked from commit f10f750) - -Build 1.9.4-12.17.0.1974-1.9.4: - diesieben07: - Make ASMDataTable more useful: (#2911) - - EnumHolder now has getters for it's data - - enum arrays work now - - nested annotations work now outside of being in arrays - -Build 1.9.4-12.17.0.1973: - mezz: Fix incorrect FluidUtil doc (#2996) - -Build 1.9.4-12.17.0.1972: - mezz: Fix ItemStack deserialization can't clear nbt (#3005) - mezz: Improve the "missing mods" on-screen error message (#2997) - -Build 1.9.4-12.17.0.1970: - cpw: Update CONTRIBUTING.md - -Build 1.9.4-12.17.0.1969: - cpw: Update CONTRIBUTING.md - -Build 1.9.4-12.17.0.1968: - mezz: Fix #2918 Make dispensers with buckets work with modded fluids (#2947) - -Build 1.9.4-12.17.0.1967: - LexManos: Fixed brewing stand returning incorrect solts for side inventories. - -Build 1.9.4-12.17.0.1966: - LexManos: Fixed villager career display names being off by one. - -Build 1.9.4-12.17.0.1965: - diesieben07: - Fix DataParameter mixup when vanilla clients are connected causing CCE - in zombie renderer (#2992) - -Build 1.9.4-12.17.0.1964: - williewillus: Fix AnimationItemOverrideList not falling back to super (#2990) - -Build 1.9.4-12.17.0.1963: - mezz: - Fix #2961 Capability data is not preserved by fluid handler interactions - (#2976) - -Build 1.9.4-12.17.0.1962: - cpw: Slight tweak to early loading, to accommodate FMP - -Build 1.9.4-12.17.0.1961: - LexManos: - Fixed Fernflower decompile issue in AnvilChunkLoader.saveExtraData() - Closes #2985 - -Build 1.9.4-12.17.0.1960: - cpw: - Mute the connection reset by peer exception - it's spamilicious for the - most part. - -Build 1.9.4-12.17.0.1959: - cpw: Fix missing IMC message query. - -Build 1.9.4-12.17.0.1958: - man.of.j: Read a Update JSON in UTF-8 (#2978) - -Build 1.9.4-12.17.0.1957: - williewillus: Add getter for the world to LootContext (#2954) - -Build 1.9.4-12.17.0.1956: - gurreja: Fixed arrows not showing in non default AchievementPages (#2968) - -Build 1.9.4-12.17.0.1955: - mezz: Add methods to Fluid to allow custom vaporization overrides (#2959) - -Build 1.9.4-12.17.0.1954: - fry: Fixes #1984. - -Build 1.9.4-12.17.0.1953: - fry: - Modified SimpleModelState to ignore the parts it doesn't know about. - Fixes model part hiding always applying to some models when - transformations are specified in the blockstate json. - -Build 1.9.4-12.17.0.1952: - fry: - Pass the GL context back from the splash screen during the - EntityRenderer init. - -Build 1.9.4-12.17.0.1951: - cpw: - Fire ChunkWatchEvent.Watch event, closes #2767. Based on @sfPlayer1 - patch suggestion. It looks like this logic has shifted relative to 1.8, - so there may be differences in event behaviour now. - -Build 1.9.4-12.17.0.1950: - minecrell: - Fix asynchronous chunk loading (#2946) - Since the update to Minecraft 1.9.4 chunks were actually never loaded - asynchronously because a sync request was always made from the - PlayerChunkMap shortly after the chunk had been queued. - - - PlayerChunkMapEntry now only loads chunks synchronously *after* the - chunk failed to load asynchronously. - - Fixed some minor bugs that caused "Attempted to dequeue chunk" - messages - - Simplified ChunkProviderServer patch. loadChunk no longer generates - chunks, - so there is no need to handle that. - - Moved loader and provider to ChunkIOProvider so there is no need for - "hashCode abuse" - -Build 1.9.4-12.17.0.1949: - mezz: - Make it easier to use FluidTanks that have input/output restrictions - (#2945) - These internal function should NOT be used by anything except the owner - of the tank. - -Build 1.9.4-12.17.0.1948: - LexManos: Fixed BiomeProvider.getModdedBiomeGenerators method name. Closes #2937 - -Build 1.9.4-12.17.0.1947: - williewillus: - Several bugfixes for PlayerInteractEvent (#2943) - * Don't change Result if setCanceled(false) called - - * Fix RightClickEmpty firing even when targeting a block or entity - - * Add a left click empty event - - * Move hook point for EntityInteractSpecific to the right place - - * Fix LeftClickBlock not firing clientside in creative, and clarify docs - about creative - -Build 1.9.4-12.17.0.1946: - mezz: - Add new IFluidHandler for capabilities. (#2942) - Old fluid system is deprecated and slated for removal in the next - cleanup cycle. - -Build 1.9.4-12.17.0.1945: - matti.j.ruohonen: - Add a Slot#isSameInventory() method (#2884) - This fixes shift + double clicking items in Containers that use - SlotItemHandler slots. - -Build 1.9.4-12.17.0.1944: - LexManos: - Fixed POTENTIAL issue where mods would query world infrom from TEs - before they are set. Closes #2863 - -Build 1.9.4-12.17.0.1943: - LexManos: - Fixed client side ticking TileEntites after they are unloaded. Closes - #2852 - LexManos: - Expanded custom villagers to Zombies and world gen. Fixed edge cases - where custom professiosn wernt being used correctly. Closes #2862 - -Build 1.9-12.16.0.1942-1.9: - ljfa-ag: Fix forge:default-tool transformation (#2795) - -Build 1.9.4-12.17.0.1941: - LexManos: Fixed position sent to sanSustainPlant from cactus. Closes #2941 - -Build 1.9.4-12.17.0.1940: - LexManos: - Forge will now warn the user and ask permission to load a world with - unknown registries. Closes #2934 - -Build 1.9.4-12.17.0.1939: - LexManos: Fix BlockFluidBase having collision. Closes #2932 - -Build 1.9.4-12.17.0.1937: - LexManos: - 1.9.4 Update. Major things to note: Class renames: - https://gist.github.com/LexManos/44dd211f90f498ad4015279b103dff86 Tile - Entities are now packed in the ChunkData packet. Forge intends to work - around this to better support large moded worlds, but for the time being - modders should implement the new function carefully and only send what - data they need to! Minecraft's codebase now has annotations, these are - directly from Mojang and should be adheared to! Added support for - package-info.java's containing @Nullable information for all MC code - base. - LexManos: Update mappoings snapshot to 20160518 - cpw: Fix schizophrenia in version numbers. - LexManos: Bump version information for 1.9.4. - LexManos: Update example mod for new mappings. - atomicblom: Add Unit Test to detect mismatches between EnumHelper and Enum ctor - cpw: - Tweak build file slightly - allow passing buildNumber using gradle - parameters (-PbuildNumber=...) and provide a "resetBuildNumber" function - to reset the buildNumber to zero in the ForgeVersion file. Means builds - can be reproducible in-IDE. - tterrag1098: Fix screenshot link paths on Windows (#2886) - LexManos: - Take capabilities into account when comparing ItemStack NBT's. Closes - #2726 - LexManos: - Tipped arrows are now not affected by infinite enchantment but are still - effected by creative mode. - LexManos: Set max enchantment ID to Short.MAX_VALUE. Closes #2799 - LexManos: - Fix Container.compouteStackSize not respecting stack version of - maxStackSize. Closes #2756 - LexManos: Fire playerDestroyItem event's in some cases where we were not. - LexManos: Fix villagers having farmer skin on vanilla servers. Closes #2894 - LexManos: Add alternative ItemAxe Constructor - LexManos: Fix paramters for addArmorMaterial, addOption and addGameType. - LexManos: - Make unit test for EnumHelper more robust and less spammy. Now detects - missing accessors as well. - the.f1repl4ce: Switch new constructor to use floats (#2904) - tterrag1098: Add hook for TE data sync on client (#2893) - cpw: - Strip Optional from the class signature as well, since that's loaded by - the TypeToken registry code and might cause a crash. - LexManos: - Fix installer downloading vanilla jar when not needed. And filter some - more known libraries. - LexManos: - Capture interfaces when scanning classes and preload implementations of - ICrashReportDetail. - LexManos: Set Enchantment table's harvest level. Closes #1349 - LexManos: - More uniformly apply Configuration.caseSensitiveCustomCategories. Closes - #1353 - LexManos: - Close player's inventory to prevent potential dupe issues on some modded - items. Closes #1431 - LexManos: - Move getArmorModel hook up two lines so that the attributes and - animation information is set. Closes #1939 - LexManos: Fire PopulateChunkEvent Pre and Post in ChunkProviderFlat. Closes #2050 - LexManos: Fire LivingSpawnEvents for MobSpawners. Closes #2079 - LexManos: Fix javadocs for BiomeColor events. Closes #2093 - LexManos: - Fixed EntityRegistry.addSpawn adding duplicate spawn entries. Closes - #2112 - LexManos: - Fix setTileEntity causing the world to remove the new and old tile - entities. Closes #2164 - LexManos: Add ServerHangWatchdog to TerminalTransformer whitelist. Closes #2203 - LexManos: Fixed NBTTagString.toString not properly escaping \'s. Closes #2393 - LexManos: - Reinitalize statistics information on Mapping changes. Fixes mismatched - stats to item/block ids. And auto registers stats for modded items. - Closes #2454 - LexManos: - Fix Thorns enchantment bypassing ISpecialArmor.damageArmor function. - Closes #2463 - LexManos: - Fix tooltip for survival tab in the creative menu not drawing on any but - the first page. Closes #2908 and #2504 - LexManos: - Make sure tool-classes for vanilla tools are initialized early. Closes - #2909 and #2525 - LexManos: - Fixed FluidUtil.tryEmptyFluidContainerItem not checking if the tank can - accept fluids first. Closes #2527 - LexManos: - Fixed potential issue with Chunk.getLightOpacity being called before the - chunk is added to the world map. Closes #2529 - LexManos: - Fixed TileEntityBeacon not using position-aware getLightOpacity. Closes - #2530 and #2910 - LexManos: Fixed village wells not having their biomes set. Closes #2499 - LexManos: - Fixed issue with @ObjectHolder and the new registry system. Closes #2640 - Only run static initalizers for classes we need to get the names from - values. - LexManos: - Fixed new ICrashReportDetail loader working with packaged mods by - delaying it until the ModContainer's construct event. Closes #2924 - fry: Reordered transformations during LayerHeldItem rendering, fixes #2827. - fry: - Initial support for model visibility system. Implemented it for OBJ, B3D - and normal vanilla models; fixed NPE accessing parent state in B3DModel. - Fixes #2801. - -Build 1.9.4-12.17.0.1935-1.9.4: - fry: Initial support for model visibility system. Implemented it for OBJ, B3D and normal vanilla models; fixed NPE accessing parent state in B3DModel. Fixes #2801. - -Build 1.9-12.16.1.1934: - mezz: - Improve JavaDoc links, fix some broken JavaDocs (#2833) - - Improve JavaDoc links, fix broken JavaDocs - -Build 1.9.4-12.17.0.1933-1.9.4: - fry: Reordered transformations during LayerHeldItem rendering, fixes #2827. - -Build 1.9.4-12.17.0.1932-1.9.4: - LexManos: Fixed new ICrashReportDetail loader working with packaged mods by delaying it until the ModContainer's construct event. Closes #2924 - -Build 1.9.4-12.17.0.1931-1.9.4: - LexManos: Fixed village wells not having their biomes set. Closes #2499 - LexManos: - Fixed issue with @ObjectHolder and the new registry system. Closes #2640 - Only run static initalizers for classes we need to get the names from values. - -Build 1.9.4-12.17.0.1930-1.9.4: - LexManos: Fix tooltip for survival tab in the creative menu not drawing on any but the first page. Closes #2908 and #2504 - LexManos: Make sure tool-classes for vanilla tools are initialized early. Closes #2909 and #2525 - LexManos: Fixed FluidUtil.tryEmptyFluidContainerItem not checking if the tank can accept fluids first. Closes #2527 - LexManos: Fixed potential issue with Chunk.getLightOpacity being called before the chunk is added to the world map. Closes #2529 - LexManos: Fixed TileEntityBeacon not using position-aware getLightOpacity. Closes #2530 and #2910 - -Build 1.9.4-12.17.0.1929-1.9.4: - LexManos: Fix Thorns enchantment bypassing ISpecialArmor.damageArmor function. Closes #2463 - -Build 1.9.4-12.17.0.1928-1.9.4: - LexManos: Fixed NBTTagString.toString not properly escaping \'s. Closes #2393 - LexManos: - Reinitalize statistics information on Mapping changes. - Fixes mismatched stats to item/block ids. And auto registers stats for modded items. - Closes #2454 - -Build 1.9.4-12.17.0.1927-1.9.4: - LexManos: Fire LivingSpawnEvents for MobSpawners. Closes #2079 - LexManos: Fix javadocs for BiomeColor events. Closes #2093 - LexManos: Fixed EntityRegistry.addSpawn adding duplicate spawn entries. Closes #2112 - LexManos: Fix setTileEntity causing the world to remove the new and old tile entities. Closes #2164 - LexManos: Add ServerHangWatchdog to TerminalTransformer whitelist. Closes #2203 - -Build 1.9.4-12.17.0.1926-1.9.4: - LexManos: Set Enchantment table's harvest level. Closes #1349 - LexManos: More uniformly apply Configuration.caseSensitiveCustomCategories. Closes #1353 - LexManos: Close player's inventory to prevent potential dupe issues on some modded items. Closes #1431 - LexManos: Move getArmorModel hook up two lines so that the attributes and animation information is set. Closes #1939 - LexManos: Fire PopulateChunkEvent Pre and Post in ChunkProviderFlat. Closes #2050 - -Build 1.9.4-12.17.0.1925-1.9.4: - LexManos: Fix installer downloading vanilla jar when not needed. And filter some more known libraries. - LexManos: Capture interfaces when scanning classes and preload implementations of ICrashReportDetail. - -Build 1.9.4-12.17.0.1924-1.9.4: - cpw: Strip Optional from the class signature as well, since that's loaded by the TypeToken registry code and might cause a crash. - -Build 1.9-12.16.1.1923: - shadowfacts: Pass the correct position into isSideSolid in BlockRailBase#canPlaceBlockAt (#2919) - -Build 1.9.4-12.17.0.1922-1.9.4: - tterrag1098: Add hook for TE data sync on client (#2893) - -Build 1.9.4-12.17.0.1921-1.9.4: - the.f1repl4ce: Switch new constructor to use floats (#2904) - -Build 1.9.4-12.17.0.1920-1.9.4: - atomicblom: Add Unit Test to detect mismatches between EnumHelper and Enum ctor - LexManos: Fix paramters for addArmorMaterial, addOption and addGameType. - LexManos: Make unit test for EnumHelper more robust and less spammy. Now detects missing accessors as well. - -Build 1.9.4-12.17.0.1918-1.9.4: - LexManos: Add alternative ItemAxe Constructor - -Build 1.9.4-12.17.0.1917-1.9.4: - LexManos: Fix villagers having farmer skin on vanilla servers. Closes #2894 - -Build 1.9.4-12.17.0.1916-1.9.4: - LexManos: Fire playerDestroyItem event's in some cases where we were not. - -Build 1.9.4-12.17.0.1915-1.9.4: - LexManos: Fix Container.compouteStackSize not respecting stack version of maxStackSize. Closes #2756 - -Build 1.9.4-12.17.0.1914-1.9.4: - LexManos: Set max enchantment ID to Short.MAX_VALUE. Closes #2799 - -Build 1.9.4-12.17.0.1913-1.9.4: - LexManos: Tipped arrows are now not affected by infinite enchantment but are still effected by creative mode. - -Build 1.9.4-12.17.0.1912-1.9.4: - tterrag1098: Fix screenshot link paths on Windows (#2886) - LexManos: Take capabilities into account when comparing ItemStack NBT's. Closes #2726 - -Build 1.9.4-12.17.0.1910-1.9.4: - cpw: Tweak build file slightly - allow passing buildNumber using gradle parameters (-PbuildNumber=...) and provide a "resetBuildNumber" function to reset the buildNumber to zero in the ForgeVersion file. Means builds can be reproducible in-IDE. - -Build 1.9.4-12.17.0.1909-1.9.4: - LexManos: Update example mod for new mappings. - -Build 1.9-12.16.1.1907: - bonii-xx: - Fix Bucket rendering and add sound (#2865) - - * Adjust generated quads from texture to take texture size into account #2858 - - * Fix universal bucket not passing through when rightclicking on a non-block - Add proper sound events when picking up modded fluids #2821 - - * Have FluidUtil execute properly on both sides and sync as expected. Add default sounds to interacting with tanks - - * Save sound for filling/emptying in the fluid - -Build 1.9-12.16.1.1906: - LexManos: Lets just simply this. Fixes last commit. - -Build 1.9-12.16.1.1905: - LexManos: Add modder facing API for Villager Career level trades. Ref: #2854 - -Build 1.9-12.16.1.1904: - cpw: Fix up release jsons to clean up extraneous netty references - fry: Extended Animation State Machine format to allow multiple transitions from one state. - -Build 1.8.9-11.15.1.1902-1.8.9: - cpw: Fix up release jsons to clean up extraneous netty references - -Build 1.9-12.16.1.1901: - cpw: Fix up release jsons to clean up extraneous netty references - -Build 1.9-12.16.1.1900: - LexManos: Make LootPool constructor public again. Closes #2847 - -Build 1.9-12.16.1.1899: - LexManos: Fix type in LootEntry json name. And rename LootTable.finalize to freeze to avoid overriding Object function. Closes #2846 and #2847 - -Build 1.9-12.16.1.1898: - fry: Fixed joint animation application correctly. - -Build 1.9-12.16.1.1897: - shadowfacts: - Add ScreenshotEvent (#2828) - - Add ScreenshotEvent - -Build 1.9-12.16.1.1896: - LexManos: - New LootTable interaction system and event. - Modders can now modify and reference internal elements of a loot table by name. - Editing can ONLY be done in the event and any external editing will cause a exception to be thrown. - See this gist for more information: https://gist.github.com/LexManos/77c983d67b9ad27010428478b66d50fd - -Build 1.9-12.16.1.1895: - fry: Fixed joint hierarchy not being used fully in the animation system. - -Build 1.9-12.16.1.1894: - LexManos: Fixed issue in ChunkIO that would potentially cause NPEs on chunks. Closes #2837 - -Build 1.9-12.16.1.1893: - LexManos: Fixed map extension recipie. - -Build 1.9-12.16.1.1892: - mezz: Fix the rand given to PopulateChunkEvent (#2834) - -Build 1.9-12.16.1.1891: - LexManos: Fix areas where dimension types are used as dimension IDs. - -Build 1.9-12.16.1.1889: - LexManos: Add NPE protection to in-hand item rendering. - -Build 1.9-12.16.1.1888: - mattmess1221: - Fix url regex (#2815) - - Fixed url detection in chat messages. Stops false positives such as `um.....no` - -Build 1.9-12.16.1.1887: - LexManos: Slightly better practice because wait can be randomly interupted. - LexManos: Bump version for new RB. - -Build 1.9-12.16.0.1886: - cpw: Don't ignore rejects - cpw: Add in mcp named patches and use them. Initial 1.9 setup. - cpw: Add rejects with mcp names for application to main codebase. Let's roll? - cpw: First few patches applied - LexManos: net.minecraft.block.* patches - LexManos: util, tileentity, stats, realms. Potions got an overhaul and out registry will need to be adapted. - LexManos: Some import renames and compile error fixes, killed ~800. - fry: Updated various block model patches. - fry: A bunch of rendering rejects updated. - fry: RendererLivingEntity, RenderEntityItem, RenderItem, RenderManager, LayerArmorBase; Item.getModel + ISmartItemModel are now inside ItemOverrideList; fix class rename in TESR patch. - fry: EntityRenderer, most of RenderGlobal, minor fix to LayerBipedArmor. - fry: tabs -> spaces. - fry: FontRenderer - fry: Fixed most errors in the model stuff, except for ModelLoader and b3d and obj getQuads/handleBlockState methods. - LexManos: Some entity patches. - CovertJaguar: Fix broken patches for EntityMinecart - LexManos: Items done, <1000 errors whoot! - LexManos: Small renames before bed. - fry: GuiCreateWorld, GuiSlot, GuiUtilRenderComponents, GuiContainerCreative - fry: GuiOverlayDebug, ItemModelMesher, RenderManager, Stitcher fixed + minor fixes in forge gui classes. - fry: removed Item.getModel, functionality is now achieveable via ItemOverrides. - fry: Updated raw types in ExtendedBlockState, fixed some ATs, updated some things that needed updating in model classes. - fry: Chunk - cpw: - DedicatedServer - IntegratedServer - Adubbz: - Updated the biome dictionary - - Squashed commits: - - [4064de6] Updated the biome dictionary - LexManos: Enchantments, some world, Biomes, bucks, world/gen/features. - Adubbz: Updated BiomeManager to 1.9 - LexManos: Delete reject files i missed - LexManos: More work on misc things. - LexManos: World Patches work. - fry: Fix various errors in text mods. - fry: Fixed B3D loader, fixed some obvious errors in ModelLoader. - cpw: - LanguageManager - NetHandlerPlayClient - fry: ModelBox, PositionTextureVertex, TexturedQuad. Does anyone really use those on the server? - cpw: - ServerPinger - PlayerList - cpw: - WorldServer: NOTE - ChestGenHooks has NOT been updated in accordance with plans for removing it - GuiStats - Fixup deletion of egg handling in entity registry? - fry: Removed generics from IModel subinterfaces, add ed ModelProcessingHelper instead. - fry: Model UV lock handling from the state to the model, fixed most compile errors in ModelLoader, disabled it (and ModelBakeEvent) until it's functional, fixed some errors in ForgeHooksClient. - fry: Made OBJModel.java compile. - LexManos: Fixed errrors in Fluids package. TODO: Make BlockLiquid implement IFluidBlock and REMOVE FluidContainerRegsitry. Everything *should* be able to use IFluidContainer directly. - LexManos: Fishing is now a loot table no more need for FishingHooks. {LootTables still need to be evaludated if they need extra hooks, but thats later} Goodbye 44 compile errors! - LexManos: Temporary hack to fix MCP mappings for param names we are using that is causing compile errors. - LexManos: NetworkDispatcher/FMLProxyPacket 41 more errors cleaned. - cpw: Some fixups for FML, and use the FML registry for potions - cpw: Some more FML related fixups - cpw: Fix up import in Potion - cpw: Some client handler cleanup - cpw: Remove two patches that aren't needed anymore - cpw: Command fixups - cpw: Few more compile fixups - LexManos: More patch work, client patches. - LexManos: - 10 more rejects down. - 98 errors 6 rejects left. - fry: World - fry: Most of ItemInWorldManager reject, various small error fixes. - cpw: Some more forge code fixes - cpw: - Another compilation fix - More patch tweaks for compilation errors. onItemUseTick takes an entity now, cos skellies use stuff too - cpw: More fixups, removing chestgenstuff aggressively. Use loot tables. Any missing ones WILL be added by Mojang. - cpw: Remove more chestgenhooks stuff. Clean up some more ATs - cpw: Potion cleanup. Moar fixes! - cpw: Finish world, chunkloading should work again? - cpw: Another AT, for the player - cpw: Fix up PlayerSP for the AT - LexManos: Interaction hooks need to be re-added but compiles {Doesn't run} - LexManos: - Added bypass functions to Defaulted registry, DO NOT USE THIS MODDERS FORGE INTERNAL ONLY. - And some other fixups for running. - LexManos: Bump version info. Rather important. - LexManos: Fixed position being shifted before being sent to shouldSideBeRendered. - fry: Fix perspective transformations for left-handed items, disable ModelAnimationDebug until model loading is fixed. - cpw: Fix race condition between server ticks and the netlogin code handshaking for FML - cpw: Move the patch into the fml override handler, for less patch - fry: Fix items rendering too low in first person. - fry: Fixed (hopefully) perspective transformations for custom models too. - cpw: Capture Biome Registry within FML - fry: Fixed emply hand not rendering in first person. - fry: Fixed incorrect rendering state caused by transparent rendering pass for entities. - fry: Fixed armor rendering - cpw: Switch to srg patches - fry: Updated to latest mappings. Exc is broken, some anonymous classes didn't map to srg names. - fry: Fixed some errors in forge.exc - fry: First version of updated of ModelLoader, mostly works. - fry: Big model loader refactoring: simplified a lot of things, broke some error reporting. Still generally works. - LexManos: Update patches for fixed inner class suffeling in srg files. - LexManos: We are based on 1.9 not 1.8.9 :D - LexManos: Delete mcp patches. - LexManos: PlayerManager updated. - LexManos: Fix digging blocks in survival. - LexManos: Fixed breaking of tall grass. It now uses fortune. Expanded grass seed hooks to allow Fortune. Potentially removing in future in favor of LootTables. - vazkii: - 1.9: Fixed registering armor materials through EnumHelper exploding - - 1.9 ArmorMaterial now requires a SoundEvent for the equip sound. - fry: Fixed model error reporting, fixed model errors in test mods that shouldn't happen, fixed custom texture loading, made more things private/final. - fry: Fixed incorrect rotations for items in the left hand. Closes #2548. - fry: Fixed incorrect culling of mod TESRs. - fry: Fixed EffectRenderer patch, closes #2547. - fry: Removed imports in patches. - fry: Fixed progress reporting for model loading. - fry: Javadocs, small cleanup. - LexManos: Remove our entity position fixer. Vanilla fixed the bug in 1.9. - LexManos: Fix vanilla bug where bows consumed tipped arrows in creative. - LexManos: Fixed onUseStop being called twice {Bows firing twice} - LexManos: Fixed Sand not falling. - LexManos: Fixed NPE when sneak using a item. - Adubbz: BlockColors and ItemColors no longer assume non-Vanilla id constancy. Added a getter for ItemColors. - fry: Fixed MultiLayerModel not getting correct submodels; Unified the gui lighting of normal and custom models - diffuse lighting is now done in the pipeline, no need for IColoredBakedQuad anymore. - fry: Fixed quads that don't need diffuse lighting getting it anyway. - LexManos: Fix AT lines. - fry: Fixed invalid index calculation in BakedQuadRetextured. - fry: Fixed Block.doesSideBlockRendering, closes #2564. - fry: Fixed outline shader rendering, closes #2560. - fry: Fixed sprite not being passed to the quad builder for custom models. - cordonfreeman: Fix for patch targetting the wrong field to change for failed pathfinding penalty - iTitus: - Fix the EntityPlayer patch - - In 1.8.9 the call goes to getDisplayNameString() so that any changes from the PlayerEvent.NameFormat event are being take into account. - In this patch the call goes to func_70005_c_() which is the getter for the GameProfile name. - I changed it back. - - Sorry if you do not want to accept it because it is a one-liner. - vincent.lee: Fix #2555 - diesieben07: Fix broken patch in EntityPlayer.updateRidden - blay09: - Fix KeyInputEvent only being fired if Keyboard.getEventKeyState() is false. - - It used to be called for both key-up and key-down states prior to 1.9, so I assume Vanilla's changes to F3 behavior broke the patch. - matthewprenger: Pass exceptions thrown in mod event buses back to FML to handle apropriately - vincent.lee: Fix double dropping of items. Closes #2549 - cpw: Ignore classes directory - cpw: Fix bucket test - diesieben07: Fix EntityList.func_188429_b not supporting mod-entities, fixes spawn eggs, fixes #2581 - CovertJaguar: Fix #2601 Minecart infinite acceleration - gigaherz: Fix a condition that caused the enchantment table to roll invalid enchantments. - fry: Switched animation system to capabilities, added animated item example, fixed state passing in MultiModel. - fry: Separated model classes to client and common packages. - fry: instance -> INSTANCE - vincent.lee: Expose IItemHandler on vanilla entities - fry: Implemented slightly more generic version of UVLock, re-enabled it for json models. Closes #2607. - fry: Removed blockCenterToCorner from TRSRTransformation constructor. Closes #2461. - fry: Ignore blocks/items with null registry name during model loading. Fixes NPE during resource reloading in worlds with removed blocks/items. - fry: Made VertexBuffer.sortVertexData cleanup pointers after it's done. Closes #2528. - fry: Added default left hand transforms for forge transform strings. Closes #2615. - elpatricimo: - Allow players sized smaller than 1 block to walk into small spaces - - Same as #2605 but for 1.9 branch - LexManos: Rework DimensionManager for new DimensionType enum, replaces the old provider registry. Also fixed save folder issues with dimensions. Closes #2570 - LexManos: Fix Chests not opening correctly with semi-solid blocks on top. - LexManos: Fixed Item.shouldCauseReequipAnimation hook. - LexManos: Add ShieldDecoration and Tipped arrows to recipe sorter. Closes #2613 - LexManos: Exclude jna from termal tansformer. - vincent.lee: Update according to suggestions - LexManos: Fix pushing players inside blocks. - LexManos: Make RenderLivingBase.add/remvoeLayer, Closes #2573 - LexManos: Added support for custom dyes with Banners. Closes #2596 - LexManos: Allow finite fluids to be drained correctly - LexManos: Make OreDictionary.initVanillaEntries() private so that dumb modders will stop calling it. - vincent.lee: Actually fix dupe drop - LexManos: Fix swap animations for sure this time. - fry: Added Capability.cast, to allow avoiding unchecked casts in ICapabilityProvider.getCapability - LexManos: Update FML Entity Spawn packet for 1.9's location change. Closes #2567 - LexManos: Fixed custom entities unique ids. - LexManos: Fix typo causing biomes to be generated in wrong chunks. Closes #2632 - fry: Show meaningful error if ModelLoaderRegistry is used before the missing model is initialized. - fry: Register the animation Capability. No idea how it worked before at some point. - iTitus: - Add flashing update notification icon made by @gigaherz, closes #2582 - - It is added to the "Mods" button in the main menu and to out-of-date mods in the mod list (there it replaces the "U"). - Also fixes a little typo. - diesieben07: Fix BlockCrops.getDrops not respecting new age methods (for beetroots) - diesieben07: Fix PopulateChunkEvent.Post not firing - LexManos: - New Builder class in BlockStateContainer. Makes building containers with both listed and unlisted properties cleaner. - Make all methods of BiomeGenBase$BiomeProperties public so that modders can use that class outside subclasses. - fry: Cleanup: removed IEEP, removed redundant casts, fixed imports, fixed typos. - fry: Fixed isSideSolid causing infinite loops due to the call to getActualState. - fry: Removed LanguageRegistry and CollectionWrapperFactory. - fry: Removed RenderWorldEvent, encapsulated all public event fields. - fry: Made some more public fields either private or final. - fry: Disabled erroring block, fixed DynBucketTest.TestItem model. - mezz: - Make tooltips layout in the right direction, wrap if there is no room - - Same as #2649, but for Minecraft 1.9 - fry: Fixed diffuse lighting not being applied if forge lighting pipeline is disabled, closes #2651 - fry: Enabled diffuse lighting by default in UnpackedBakedQuad.Builder. - fry: Fixed crosshair always being white, closes #2653. - kashike: - Replace Forge's `BlockPos#getImmutable` method with the included `BlockPos#toImmutable` (func_185334_h), while keeping the override in PooledMutableBlockPos to prevent mutable leaks. - Also prevent a mutable blockpos leak in World#setTileEntity - gigaherz: Add wrapper methods for IStorage#readNBT/writeNBT. - mezz: Fix Block.getPickBlock returning an ItemStack with a null Item - fry: Prevent missing model from loading multiple times. - fry: Fixed StackOverflow caused by the previous commit, closes #2669. - LexManos: Fix EntityPlayer still running old armor logic. Closes #2670 - LexManos: Fix shrubs not generating correctly. Closes #2663 - LexManos: Fix bows not animating properly when picking up ammo while using. Closes #2672 - LexManos: Make NoteBlockEvent raw constructor protected to allow subclasses. Closes #2153 - LexManos: Fix landing particles not showing up. Cloes #2661 - shadowfacts: Forward ItemBlock#addInformation to Block#addInformation - tterrag1098: Add state param to canRenderInLayer - hea3venmc: Fix remapped blocks being overriden with dummy air blocks. Closes #2491 - cpw: - Squashed commit of the following: - - commit b3b290aec9d3010a134859da6001ea28a96c2fdc - Merge: c6ce6a0 d803f7d - Author: cpw - Date: Fri Mar 25 13:28:04 2016 -0400 - - Merge branch 'RegistryRework' of https://github.com/LexManos/MinecraftForge into LexManos-RegistryRework - - Implement proper registry slaves. Should help with rollback related issues. - - Missing patch - - commit d803f7db76f65db9d27302c9804a643bc853dc22 - Author: LexManos - Date: Tue Mar 22 03:36:14 2016 -0700 - - Update VillagerRegistry and use it. Should in theory make custom villagers work now. Using string version instead of int id for networking. - - commit eb5e5b4b42fdca26d2a104e4dc1e6a3ea3051a7b - Author: LexManos - Date: Tue Mar 22 02:14:16 2016 -0700 - - More cleanup. - - commit edbc56b2ff314629d0e402709f3cf29fc79c4a3d - Author: LexManos - Date: Tue Mar 22 02:05:23 2016 -0700 - - More cleanups, removed deprecated UniqueIdentifier {ResourceLocation now} - - commit e2df8d1be3c97601508f83dc97b0e8853fa1e271 - Author: LexManos - Date: Tue Mar 22 01:29:19 2016 -0700 - - Stupid generics.... - - commit 46d57dc4677fa5ff3923e64eaccfb33d7e5aad8d - Author: LexManos - Date: Tue Mar 22 01:00:25 2016 -0700 - - Some registry tweaking to provde a non-complicated API modders can use. - cpw: Reconcile Block.patch - cpw: - Add registries for soundevents, enchantments and potiontypes - MinecraftForge-2576 [1.9] SoundEvents (and Enchantments and PotionTypes) need a FML registry - cpw: MinecraftForge-2683 InvocationTargetException for Forge 1820 for 1.9 - cpw: MinecraftForge-2684 [1.9] New Registry ignores keys - fry: Improved UV offset hackery - should fix most visible custom model seams. - cpw: Support ResLocations for IMC - cpw: Capture a vanilla freeze - will be used when FML connects to vanilla servers, soon - LexManos: Fixed compile error in registry code with Eclipse. - mezz: - Add key binding modifiers and contexts. - - Same as #2674, but for Minecraft 1.9 - Adubbz: Fixed mismatch registry names and mod ids - LexManos: Properly deprecate and link the replacement methods in GameRegistry. Add helper method for registering a block with default ItemBlock because people keep complaining -.- - fry: Changed generic signature of GameRegistry.register methods to work around the type inference bug; updated all example mods to the new block/item registration method. - fry: - Revert "Add key binding modifiers and contexts.", until it's fixed. - - This reverts commit 34c3af7e853d578c8e17e1f0cdf886251fad74ae. - mezz: Re-Add key binding modifiers and contexts. - mezz: Fix inability to attack while holding modifier keys - mcjty1: - Added DimensionManager.createProviderFor() to WorldClient constructor similar to what is done - in WorldServer to make sure the correct provider is created client-side too. - AEnterprise: onBlockHarvested is no longer called twice - fry: Added the ability to change the printed model error count; Added printing of actual exceptions causing missing variants related to blockstate loading, closes #2689. - fry: Made both exceptions occuring during item model loading print in the log; closes #2696. - LexManos: Fix issue caused by setting spawnRadius to 0. Closes #2624 - LexManos: Fixed EntityJoinWorldEvent not being fired for some entitites on Server Worlds. Closes #2685 - LexManos: Fix improper logic in ItemHandlerHelper.giveItemToPlayer causing some items to not be added. Closes #2705 - mezz: - Add modifier support to vanilla keybindings. - - Add Orange conflict color for modifier/key conflicts - (like Ctrl and Ctrl-Z conflicting) - Related to #2692 - vincent.lee: Player Interact Event - Zaggy1024: Fixed using PlaySoundEvent to replace a sound with a PositionedSound causing an NPE due to the Sound field not being set by a call to ISound.createAccessor(SoundHandler). - fry: Fixed mod languages not being loaded on the server. - fry: Fixed some test mods not being marked as client-only. - iTitus: Fix dynbucket item transformation. - fry: Fixed zip being closed too early in the server language loading. - fry: Fixed forge fluid having a collision box. - kat.swales: Corrected CapabilityItemHandler.readNBT ignoring anything in slot 0 in 1.9 - mezz: Fix #2717 Pick block hotkey not working in inventories - mezz: Fix some plain keybinds not working when a modifier is active - LexManos: Enhance some error logging related to OBJLoader issues, and RegistryEntries. - LexManos: - Cleanup OBJLoader parse function and fix issues related to JVM differences. - Also fix support for sopme of the spec that was partially respected. - LexManos: Fixed NPE in dedicated server languages. And fixed logger for main FML event bus. - fry: Made forge fluids use smooth lighting. - kashike: - Remove @SideOnly(Side.CLIENT) from BossInfo/BossInfoServer methods - - These methods can also be used by the server (see BossInfoServer, it sends packets to the client but the methods are @SideOnly(Side.CLIENT)) - LexManos: Fix potential desync between Forge's Villager profession and vanilla's int based system. - LexManos: Fix being kicked from server when climbing ladders. - matti.j.ruohonen: Fix ForgeChunkManager world unloading check (#2736) - mezz: - Add cancelable event for Potions shifting the gui position (#2667) - - Add cancelable event for Potions shifting the gui position - matthewprenger: Don't use import static with net.minecraft classes. Using the latest MCP snapshots this causes an import conflict. (#2742) - CrafterKina: make WorldSavedData implement NBTSerializable (#2745) - mezz: Fix log spam from invalid key modifiers (#2746) - LexManos: Expose a central place to access all of Vanilla and Forge's registries using the new registry API. - iTitus: - Fix forge:default-block transformation. (#2760) - - The first-person left-hand rotation was a little bit of. - vincent.lee: - Boss bar render event (#2701) - - Allow control over increment height - LexManos: Fix NPE on shield break. Closes #2786 - cpw: Add the new license text. Not yet applicable to forge. - cpw: - Update LICENSE-new.txt - - Clarification on infectivity - cpw: - Update LICENSE-new.txt - - Words - cpw: - Update LICENSE-new.txt - - Better words - mezz: Close #2780 add CMD localization for Mac key bindings (#2792) - bonii-xx: - Fix SidedInvWrapper accessing wrong slots for setStackInSlot. (#2797) - - Fix DoubleChestItemHandler not implementing IItemHandlerModifiable - LexManos: Fix sluggish scrolling on GuiScrollList's and fix small rendering issue with scroll bar on certian screen sizes. - bloodmc: - Only run block physics for TileEntities while capturing block placement. (#2803) - - Currently, all blocks placed by players that are not TE's run physics - twice. Blocks that contain a TileEntity are not affected due to a check in - 'ForgeHooks.onPlaceItemIntoWorld'. - - In order to fix the problem, 'Chunk.setBlockState' will now verify if - blocks are being captured before running onBlockAdded and if so, only run - physics if the block has a tileentity. This check also prevents blocks such - as TNT's from running its physics (explosion) when event is cancelled. - williewillus: Add Potion.renderHUDEffect (#2798) - bloodmc: - Call markDirty when restoring blocks with TileEntities. (#2809) - - This change makes sure the updated tileentity is saved properly within the - chunk. - AlexIIL: Fix TextureMap failing when registering a sprite's resource location twice (#2785) - fry: Fixed custom fluid sufraces not rendering from the bottom. Closes #2800. - fry: Make ChunkRenderDispatcher.countRenderBuilders configurable. Closes #2775. - fry: Fixed cooldown overlay sometimes rendering opaque. Closes #2772. - fry: Fixed villager profession not being set correctly on the client, and fixed custom village texture rendering. Closes #2766. - LexManos: Fix withers breaking bedrock. Closes #2813 - LexManos: - Add a java version detection and nag system for users on Java 7 or below. - Added detection of mods that rely on Java 8 and a graceful error screen. - The nag screen will be shown once a day. It can be disabled by editing the forge.cfg. - However it is HIGHLY recomended that user update to Java 8. - LexManos: Remove usage of AsynchronousExecutor library in favor or a simpler implementation. - cpw: Merge in a fix from 1.8.9 for rails - -Build 1.9-12.16.0.1885-1.9: - LexManos: Remove usage of AsynchronousExecutor library in favor or a simpler implementation. - -Build 1.9-12.16.0.1884-1.9: - LexManos: - Add a java version detection and nag system for users on Java 7 or below. - Added detection of mods that rely on Java 8 and a graceful error screen. - The nag screen will be shown once a day. It can be disabled by editing the forge.cfg. - However it is HIGHLY recomended that user update to Java 8. - -Build 1.9-12.16.0.1883-1.9: - LexManos: Fix withers breaking bedrock. Closes #2813 - -Build 1.9-12.16.0.1882-1.9: - fry: Fixed villager profession not being set correctly on the client, and fixed custom village texture rendering. Closes #2766. - -Build 1.9-12.16.0.1881-1.9: - fry: Fixed cooldown overlay sometimes rendering opaque. Closes #2772. - -Build 1.9-12.16.0.1880-1.9: - fry: Make ChunkRenderDispatcher.countRenderBuilders configurable. Closes #2775. - -Build 1.9-12.16.0.1879-1.9: - fry: Fixed custom fluid sufraces not rendering from the bottom. Closes #2800. - -Build 1.9-12.16.0.1878-1.9: - AlexIIL: Fix TextureMap failing when registering a sprite's resource location twice (#2785) - -Build 1.9-12.16.0.1877-1.9: - bloodmc: - Call markDirty when restoring blocks with TileEntities. (#2809) - - This change makes sure the updated tileentity is saved properly within the - chunk. - -Build 1.8.9-11.15.1.1875: - bloodmc: - Call markDirty when restoring blocks with TileEntities. (#2807) - - This change makes sure the updated tileentity is saved properly within the - chunk. - -Build 1.9-12.16.0.1874-1.9: - williewillus: Add Potion.renderHUDEffect (#2798) - -Build 1.8.9-11.15.1.1873: - bloodmc: Fix wrong blockstate being passed to notifyNeighborsRespectDebug. (#2806) - -Build 1.8.9-11.15.1.1872: - bloodmc: - Only run block physics for TileEntities while capturing block placement. (#2805) - - Currently, all blocks placed by players that are not TE's run physics - twice. Blocks that contain a TileEntity are not affected due to a check in - 'ForgeHooks.onPlaceItemIntoWorld'. - - In order to fix the problem, 'Chunk.setBlockState' will now verify if - blocks are being captured before running onBlockAdded and if so, only run - physics if the block has a tileentity. This check also prevents blocks - such as TNT's from running its physics (explosion) when placement event is - cancelled. - -Build 1.9-12.16.0.1871-1.9: - bloodmc: - Only run block physics for TileEntities while capturing block placement. (#2803) - - Currently, all blocks placed by players that are not TE's run physics - twice. Blocks that contain a TileEntity are not affected due to a check in - 'ForgeHooks.onPlaceItemIntoWorld'. - - In order to fix the problem, 'Chunk.setBlockState' will now verify if - blocks are being captured before running onBlockAdded and if so, only run - physics if the block has a tileentity. This check also prevents blocks such - as TNT's from running its physics (explosion) when event is cancelled. - -Build 1.9-12.16.0.1870-1.9: - LexManos: Fix sluggish scrolling on GuiScrollList's and fix small rendering issue with scroll bar on certian screen sizes. - -Build 1.9-12.16.0.1869-1.9: - bonii-xx: - Fix SidedInvWrapper accessing wrong slots for setStackInSlot. (#2797) - - Fix DoubleChestItemHandler not implementing IItemHandlerModifiable - -Build 1.9-12.16.0.1868-1.9: - cpw: - Update LICENSE-new.txt - - Clarification on infectivity - cpw: - Update LICENSE-new.txt - - Words - cpw: - Update LICENSE-new.txt - - Better words - mezz: Close #2780 add CMD localization for Mac key bindings (#2792) - -Build 1.9-12.16.0.1867-1.9: - cpw: Add the new license text. Not yet applicable to forge. - -Build 1.9-12.16.0.1866-1.9: - LexManos: Fix NPE on shield break. Closes #2786 - -Build 1.9-12.16.0.1865-1.9: - vincent.lee: - Boss bar render event (#2701) - - Allow control over increment height - -Build 1.9-12.16.0.1864-1.9: - izooDee5: - Fix forge:default-block transformation. (#2760) - - The first-person left-hand rotation was a little bit of. - -Build 1.9-12.16.0.1863-1.9: - LexManos: Expose a central place to access all of Vanilla and Forge's registries using the new registry API. - -Build 1.9-12.16.0.1862-1.9: - LexManos: Fix log spam from invalid key modifiers (#2746) - -Build 1.9-12.16.0.1861-1.9: - LexManos: make WorldSavedData implement NBTSerializable (#2745) - -Build 1.9-12.16.0.1860-1.9: - LexManos: Don't use import static with net.minecraft classes. Using the latest MCP snapshots this causes an import conflict. (#2742) - -Build 1.9-12.16.0.1859-1.9: - LexManos: - Add cancelable event for Potions shifting the gui position (#2667) - - Add cancelable event for Potions shifting the gui position - -Build 1.9-12.16.0.1858-1.9: - LexManos: Fix ForgeChunkManager world unloading check (#2736) - -Build 1.9-12.16.0.1857-1.9: - LexManos: Fix being kicked from server when climbing ladders. - -Build 1.9-12.16.0.1856-1.9: - LexManos: Fix potential desync between Forge's Villager profession and vanilla's int based system. - -Build 1.8.9-11.15.1.1855: - LexManos: - Update ore dictionary (#2721) - - Updated the Ore Dictionary with more vanilla items: - -Prismarine Shard ( "gemPrismarine" ) - -Prismarine Crystals ( "dustPrismarine" ) - -Prismarine Block ( "blockPrismarine" ) - -Prismarine Brick ( "blockPrismarineBrick" ) - -Dark Prismarine ( "blockDarkPrismarine" ) - -Nether Wart ( "cropNetherWart" ) - -Sugarcane ( "sugarcane" ) - -Paper ( "paper" ) - -Ender Pearl ( "enderpearl" ) - -Bone ( "bone) - -Gunpowder ( "gunpowder) - -String ( "string" ) - -Nether Star ( "netherStar" ) - -Leather ( "leather" ) - -Feather ( "feather" ) - -Egg ( "egg" ) - -End Stone ( "endstone" ) - -Torch ( "torch" ) - -Vine ( "vine" ) - -Cactus ( "blockCactus" ) - -Grass ( "grass") - -Obsidian ( "obsidian" ) - -Red Sandstone ( added to "sandstone" ) - -Crafting Table ( "workbench" ) - -Slime Block ( "blockSlime" ) - -Granite ( "stoneGranite" ) - -Polished Granite ( "stoneGranitePolished" ) - -Diorite ( "stoneDiorite" ) - -Polished Diorite ( "stoneDioritePolished" ) - -Andesite ( "stoneAndesite" ) - -Polished Andesite ( "stoneAndesitePolished" ) - -Build 1.9-12.16.0.1854-1.9: - kashike: - Remove @SideOnly(Side.CLIENT) from BossInfo/BossInfoServer methods - - These methods can also be used by the server (see BossInfoServer, it sends packets to the client but the methods are @SideOnly(Side.CLIENT)) - -Build 1.9-12.16.0.1853-1.9: - fry: Made forge fluids use smooth lighting. - -Build 1.9-12.16.0.1852-1.9: - LexManos: Fixed NPE in dedicated server languages. And fixed logger for main FML event bus. - -Build 1.9-12.16.0.1851-1.9: - LexManos: Enhance some error logging related to OBJLoader issues, and RegistryEntries. - LexManos: - Cleanup OBJLoader parse function and fix issues related to JVM differences. - Also fix support for sopme of the spec that was partially respected. - -Build 1.9-12.16.0.1850-1.9: - mezz: Fix some plain keybinds not working when a modifier is active - -Build 1.9-12.16.0.1849-1.9: - mezz: Fix #2717 Pick block hotkey not working in inventories - -Build 1.9-12.16.0.1848-1.9: - kat.swales: Corrected CapabilityItemHandler.readNBT ignoring anything in slot 0 in 1.9 - -Build 1.8.9-11.15.1.1847: - kat.swales: Corrected readNBT ignoring anything in slot 0 - -Build 1.9-12.16.0.1846-1.9: - fry: Fixed zip being closed too early in the server language loading. - fry: Fixed forge fluid having a collision box. - -Build 1.9-12.16.0.1845-1.9: - iTitus: Fix dynbucket item transformation. - -Build 1.9-12.16.0.1844-1.9: - fry: Fixed some test mods not being marked as client-only. - -Build 1.9-12.16.0.1843-1.9: - fry: Fixed mod languages not being loaded on the server. - -Build 1.9-12.16.0.1842-1.9: - Zaggy1024: Fixed using PlaySoundEvent to replace a sound with a PositionedSound causing an NPE due to the Sound field not being set by a call to ISound.createAccessor(SoundHandler). - -Build 1.9-12.16.0.1841-1.9: - mezz: - Add modifier support to vanilla keybindings. - - Add Orange conflict color for modifier/key conflicts - (like Ctrl and Ctrl-Z conflicting) - Related to #2692 - -Build 1.9-12.16.0.1840-1.9: - vincent.lee: Player Interact Event - -Build 1.9-12.16.0.1839-1.9: - AEnterprise: onBlockHarvested is no longer called twice - LexManos: Fixed EntityJoinWorldEvent not being fired for some entitites on Server Worlds. Closes #2685 - LexManos: Fix improper logic in ItemHandlerHelper.giveItemToPlayer causing some items to not be added. Closes #2705 - -Build 1.9-12.16.0.1838-1.9: - LexManos: Fix issue caused by setting spawnRadius to 0. Closes #2624 - -Build 1.9-12.16.0.1837-1.9: - fry: Made both exceptions occuring during item model loading print in the log; closes #2696. - -Build 1.9-12.16.0.1836-1.9: - fry: Added the ability to change the printed model error count; Added printing of actual exceptions causing missing variants related to blockstate loading, closes #2689. - -Build 1.9-12.16.0.1835-1.9: - mcjty1: - Added DimensionManager.createProviderFor() to WorldClient constructor similar to what is done - in WorldServer to make sure the correct provider is created client-side too. - -Build 1.9-12.16.0.1834-1.9: - iTitus: - Add flashing update notification icon made by @gigaherz, closes #2582 - - It is added to the "Mods" button in the main menu and to out-of-date mods in the mod list (there it replaces the "U"). - Also fixes a little typo. - -Build 1.9-12.16.0.1833-1.9: - mezz: Fix inability to attack while holding modifier keys - -Build 1.9-12.16.0.1832-1.9: - mezz: Re-Add key binding modifiers and contexts. - -Build 1.9-12.16.0.1831-1.9: - fry: - Revert "Add key binding modifiers and contexts.", until it's fixed. - - This reverts commit 34c3af7e853d578c8e17e1f0cdf886251fad74ae. - -Build 1.9-12.16.0.1830-1.9: - fry: Changed generic signature of GameRegistry.register methods to work around the type inference bug; updated all example mods to the new block/item registration method. - -Build 1.9-12.16.0.1829-1.9: - Adubbz: Fixed mismatch registry names and mod ids - -Build 1.9-12.16.0.1828-1.9: - mezz: - Add key binding modifiers and contexts. - - Same as #2674, but for Minecraft 1.9 - -Build 1.9-12.16.0.1827-1.9: - LexManos: Properly deprecate and link the replacement methods in GameRegistry. Add helper method for registering a block with default ItemBlock because people keep complaining -.- - -Build 1.9-12.16.0.1826-1.9: - LexManos: Fixed compile error in registry code with Eclipse. - -Build 1.9-12.16.0.1825-1.9: - cpw: Capture a vanilla freeze - will be used when FML connects to vanilla servers, soon - -Build 1.9-12.16.0.1824-1.9: - cpw: Support ResLocations for IMC - -Build 1.9-12.16.0.1823-1.9: - fry: Improved UV offset hackery - should fix most visible custom model seams. - -Build 1.9-12.16.0.1822-1.9: - cpw: MinecraftForge-2684 [1.9] New Registry ignores keys - -Build 1.9-12.16.0.1821-1.9: - cpw: MinecraftForge-2683 InvocationTargetException for Forge 1820 for 1.9 - -Build 1.9-12.16.0.1820-1.9: - cpw: - Add registries for soundevents, enchantments and potiontypes - MinecraftForge-2576 [1.9] SoundEvents (and Enchantments and PotionTypes) need a FML registry - -Build 1.9-12.16.0.1819-1.9: - cpw: Fix remapped blocks being overriden with dummy air blocks. Closes #2491 - cpw: - Squashed commit of the following: - - commit b3b290aec9d3010a134859da6001ea28a96c2fdc - Merge: c6ce6a0 d803f7d - Author: cpw - Date: Fri Mar 25 13:28:04 2016 -0400 - - Merge branch 'RegistryRework' of https://github.com/LexManos/MinecraftForge into LexManos-RegistryRework - - Implement proper registry slaves. Should help with rollback related issues. - - Missing patch - - commit d803f7db76f65db9d27302c9804a643bc853dc22 - Author: LexManos - Date: Tue Mar 22 03:36:14 2016 -0700 - - Update VillagerRegistry and use it. Should in theory make custom villagers work now. Using string version instead of int id for networking. - - commit eb5e5b4b42fdca26d2a104e4dc1e6a3ea3051a7b - Author: LexManos - Date: Tue Mar 22 02:14:16 2016 -0700 - - More cleanup. - - commit edbc56b2ff314629d0e402709f3cf29fc79c4a3d - Author: LexManos - Date: Tue Mar 22 02:05:23 2016 -0700 - - More cleanups, removed deprecated UniqueIdentifier {ResourceLocation now} - - commit e2df8d1be3c97601508f83dc97b0e8853fa1e271 - Author: LexManos - Date: Tue Mar 22 01:29:19 2016 -0700 - - Stupid generics.... - - commit 46d57dc4677fa5ff3923e64eaccfb33d7e5aad8d - Author: LexManos - Date: Tue Mar 22 01:00:25 2016 -0700 - - Some registry tweaking to provde a non-complicated API modders can use. - cpw: Reconcile Block.patch - -Build 1.9-12.16.0.1817-1.9: - kashike: - Replace Forge's `BlockPos#getImmutable` method with the included `BlockPos#toImmutable` (func_185334_h), while keeping the override in PooledMutableBlockPos to prevent mutable leaks. - Also prevent a mutable blockpos leak in World#setTileEntity - gigaherz: Add wrapper methods for IStorage#readNBT/writeNBT. - LexManos: Fix landing particles not showing up. Cloes #2661 - shadowfacts: Forward ItemBlock#addInformation to Block#addInformation - tterrag1098: Add state param to canRenderInLayer - -Build 1.9-12.16.0.1816-1.9: - LexManos: Make NoteBlockEvent raw constructor protected to allow subclasses. Closes #2153 - -Build 1.9-12.16.0.1815-1.9: - LexManos: Fix EntityPlayer still running old armor logic. Closes #2670 - LexManos: Fix shrubs not generating correctly. Closes #2663 - LexManos: Fix bows not animating properly when picking up ammo while using. Closes #2672 - -Build 1.9-12.16.0.1814-1.9: - mezz: Fix Block.getPickBlock returning an ItemStack with a null Item - -Build 1.9-12.16.0.1813-1.9: - fry: Fixed StackOverflow caused by the previous commit, closes #2669. - -Build 1.9-12.16.0.1812-1.9: - fry: Prevent missing model from loading multiple times. - -Build 1.9-12.16.0.1811-1.9: - fry: Enabled diffuse lighting by default in UnpackedBakedQuad.Builder. - fry: Fixed crosshair always being white, closes #2653. - -Build 1.9-12.16.0.1810-1.9: - fry: Fixed diffuse lighting not being applied if forge lighting pipeline is disabled, closes #2651 - -Build 1.9-12.16.0.1809-1.9: - mezz: - Make tooltips layout in the right direction, wrap if there is no room - - Same as #2649, but for Minecraft 1.9 - -Build 1.8.9-11.15.1.1808: - mezz: - Make tooltips layout in the right direction, wrap if there is no room - - Fixes #2255 - -Build 1.9-12.16.0.1807-1.9: - fry: Disabled erroring block, fixed DynBucketTest.TestItem model. - -Build 1.9-12.16.0.1806-1.9: - diesieben07: Fix PopulateChunkEvent.Post not firing - -Build 1.9-12.16.0.1805-1.9: - fry: Cleanup: removed IEEP, removed redundant casts, fixed imports, fixed typos. - fry: Fixed isSideSolid causing infinite loops due to the call to getActualState. - fry: Removed LanguageRegistry and CollectionWrapperFactory. - fry: Removed RenderWorldEvent, encapsulated all public event fields. - fry: Made some more public fields either private or final. - -Build 1.9-12.16.0.1804-1.9: - LexManos: - New Builder class in BlockStateContainer. Makes building containers with both listed and unlisted properties cleaner. - Make all methods of BiomeGenBase$BiomeProperties public so that modders can use that class outside subclasses. - -Build 1.9-12.16.0.1803-1.9: - diesieben07: Fix BlockCrops.getDrops not respecting new age methods (for beetroots) - -Build 1.9-12.16.0.1802-1.9: - fry: Show meaningful error if ModelLoaderRegistry is used before the missing model is initialized. - fry: Register the animation Capability. No idea how it worked before at some point. - -Build 1.9-12.16.0.1801-1.9: - LexManos: Fix typo causing biomes to be generated in wrong chunks. Closes #2632 - -Build 1.9-12.16.0.1800-1.9: - LexManos: Fixed custom entities unique ids. - -Build 1.9-12.16.0.1799-1.9: - LexManos: Update FML Entity Spawn packet for 1.9's location change. Closes #2567 - -Build 1.9-12.16.0.1798-1.9: - vincent.lee: Actually fix dupe drop - -Build 1.9-12.16.0.1797-1.9: - fry: Added Capability.cast, to allow avoiding unchecked casts in ICapabilityProvider.getCapability - -Build 1.9-12.16.0.1796-1.9: - LexManos: Fix swap animations for sure this time. - -Build 1.9-12.16.0.1795-1.9: - LexManos: Allow finite fluids to be drained correctly - LexManos: Make OreDictionary.initVanillaEntries() private so that dumb modders will stop calling it. - -Build 1.8.9-11.15.1.1794: - Choonster.2010: Allow finite fluids to be drained correctly - -Build 1.9-12.16.0.1792-1.9: - matthewprenger: Pass exceptions thrown in mod event buses back to FML to handle apropriately - vincent.lee: Fix double dropping of items. Closes #2549 - diesieben07: Fix EntityList.func_188429_b not supporting mod-entities, fixes spawn eggs, fixes #2581 - -Build 1.8.9-11.15.1.1791: - elpatricimo: - Fix pushing players inside blocks. - - same changes made to the 1.9 branch - -Build 1.9-12.16.0.1790-1.9: - vincent.lee: Expose IItemHandler on vanilla entities - vincent.lee: Update according to suggestions - -Build 1.9-12.16.0.1789-1.9: - LexManos: Make RenderLivingBase.add/remvoeLayer, Closes #2573 - LexManos: Added support for custom dyes with Banners. Closes #2596 - -Build 1.9-12.16.0.1788-1.9: - LexManos: Add ShieldDecoration and Tipped arrows to recipe sorter. Closes #2613 - LexManos: Exclude jna from termal tansformer. - LexManos: Fix pushing players inside blocks. - -Build 1.9-12.16.0.1787-1.9: - LexManos: Fix Chests not opening correctly with semi-solid blocks on top. - LexManos: Fixed Item.shouldCauseReequipAnimation hook. - -Build 1.9-12.16.0.1786-1.9: - elpatricimo: - Allow players sized smaller than 1 block to walk into small spaces - - Same as #2605 but for 1.9 branch - -Build 1.8.9-11.15.1.1785: - elpatricimo: Allow players sized smaller than 1 block to walk into small spaces - -Build 1.9-12.16.0.1784-1.9: - LexManos: Rework DimensionManager for new DimensionType enum, replaces the old provider registry. Also fixed save folder issues with dimensions. Closes #2570 - -Build 1.8.9-11.15.1.1783: - CovertJaguar: Add missing Minecart/Track hook. - -Build 1.9-12.16.0.1782-1.9: - fry: Removed blockCenterToCorner from TRSRTransformation constructor. Closes #2461. - fry: Ignore blocks/items with null registry name during model loading. Fixes NPE during resource reloading in worlds with removed blocks/items. - fry: Made VertexBuffer.sortVertexData cleanup pointers after it's done. Closes #2528. - fry: Added default left hand transforms for forge transform strings. Closes #2615. - -Build 1.9-12.16.0.1781-1.9: - fry: Switched animation system to capabilities, added animated item example, fixed state passing in MultiModel. - fry: Separated model classes to client and common packages. - fry: instance -> INSTANCE - fry: Implemented slightly more generic version of UVLock, re-enabled it for json models. Closes #2607. - -Build 1.9-12.16.0.1780-1.9: - gigaherz: Fix a condition that caused the enchantment table to roll invalid enchantments. - -Build 1.9-12.16.0.1779-1.9: - blay09: - Fix KeyInputEvent only being fired if Keyboard.getEventKeyState() is false. - - It used to be called for both key-up and key-down states prior to 1.9, so I assume Vanilla's changes to F3 behavior broke the patch. - -Build 1.9-12.16.0.1778-1.9: - CovertJaguar: Fix #2601 Minecart infinite acceleration - -Build 1.8.9-11.15.1.1777: - cordonfreeman: Fix for patch targetting the wrong field to change for failed pathfinding penalty - -Build 1.9-12.16.0.1776-1.9: - diesieben07: Fix broken patch in EntityPlayer.updateRidden - -Build 1.9-12.16.0.1775-1.9: - iTitus: - Fix the EntityPlayer patch - - In 1.8.9 the call goes to getDisplayNameString() so that any changes from the PlayerEvent.NameFormat event are being take into account. - In this patch the call goes to func_70005_c_() which is the getter for the GameProfile name. - I changed it back. - - Sorry if you do not want to accept it because it is a one-liner. - vincent.lee: Fix #2555 - -Build 1.9-12.16.0.1774-1.9: - cordonfreeman: Fix for patch targetting the wrong field to change for failed pathfinding penalty - -Build 1.9-12.16.0.1773-1.9: - cpw: Fix bucket test - -Build 1.9-12.16.0.1772-1.9: - bernhard.bonigl: - Fix CombinedInvWrapper accessing incorrect slots - Closes #2533 - -Build 1.9-12.16.0.1771-1.9: - cpw: Ignore classes directory - -Build 1.9-12.16.0.1770-1.9: - fry: Fixed sprite not being passed to the quad builder for custom models. - -Build 1.9-12.16.0.1769-1.9: - fry: Fixed outline shader rendering, closes #2560. - -Build 1.9-12.16.0.1768-1.9: - fry: Fixed Block.doesSideBlockRendering, closes #2564. - -Build 1.9-12.16.0.1767-1.9: - fry: Fixed invalid index calculation in BakedQuadRetextured. - -Build 1.8.9-11.15.1.1765: - bernhard.bonigl: - Fix CombinedInvWrapper accessing incorrect slots - Closes #2533 - -Build 1.8.9-11.15.1.1764: - abab9579: - Added EntityViewRenderEvent#FOVModifier - - Enables mods to modify raw FOV directly. - Avoids modifier limit from FOVUpdateEvent. - Aware of blocks which are needed for fov change related with materials. - -Build 1.8.9-11.15.1.1763: - mnmiller1: Added local click position to PlayerInteractEvent. - -Build 1.8.9-11.15.1.1762: - LexManos: - Fixed dummy blocks not being removed from registry on dedicated server correctly. Closes #2487 - Also added some more debug logs! - -Build 1.8.9-11.15.1.1761: - bernhard.bonigl: - Fix WordServer.canCreatureTypeSpawnHere not using Forge Events. - Followup of #2496 - -Build 1.8.9-11.15.1.1760: - agent-lego: - Increased actual maximum fuel burn time - - Increased actual maximum fuel burn time from 32767 to 2147483647. - Backwards compatible. - -Build 1.8.9-11.15.1.1759: - bernhard.bonigl: Fix WorldEvent.PotentialSpawns Event passing the list instance of the ChunkProvider to users - -Build 1.8.9-11.15.1.1758: - fry: ModelLoader: added verbose error logging showing items/blockstates associated with model locations; removed redundant cast leftover from ungenerified code; fixed up a couple of warnings. - -Build 1.8.9-11.15.1.1757: - cpw: Fix race condition when using indexed codec in a LAN server. Fixes spurious crash when LAN server is running. - -Build 1.8.9-11.15.1.1756: - cpw: Log when it's likely the indexedcodec is gonna fail, because of LAN server derps likely. Try and give some context for debuggers. - -Build 1.8.9-11.15.1.1755: - bernhard.bonigl: Fix universal bucket logging an exception - -Build 1.8.9-11.15.1.1754: - AlgorithmX2: Preserve ItemStack Caps when picking Items up. - AlgorithmX2: Test getLightOpacity(world,pos) in World as well as the chunk. - -Build 1.8.9-11.15.1.1752: - AlgorithmX2: In material Liquid Hooks. - -Build 1.8.9-11.15.1.1751: - diesieben07: Fix Potion.shouldRenderInvText - -Build 1.8.9-11.15.1.1750: - AlgorithmX2: - Fix bug with getLightOpacity based on TileEntities, - Capture getLightOpacity prior to removing the tile entity. - -Build 1.8.9-11.15.1.1749: - LexManos: Fix loading of world ID maps for worlds without dummy data. Closes #2477 - -Build 1.8.9-11.15.1.1748: - bernhard.bonigl: Fix customized bucket names not getting translated correctly - -Build 1.8.9-11.15.1.1747: - fry: Added default levels for fluid extended properties in fluid model. - -Build 1.8.9-11.15.1.1746: - bernhard.bonigl: Add universal bucket - -Build 1.8.9-11.15.1.1745: - LexManos: Fix chat formatting not surviving line wraps in chat messages. - -Build 1.8.9-11.15.1.1744: - diesieben07: Fix the entity shader hook - -Build 1.8.9-11.15.1.1743: - iLexiconn: Added hook to add entity spectator shader - -Build 1.8.9-11.15.1.1742: - ross: Workaround JDK-8087309: Constant folding "static final boolean" in boolean expressions is incomplete - -Build 1.8.9-11.15.1.1741: - LexManos: Protect BlockSnapshot and Chunk.getTileEntity from mutible BlockPos instances. Closes #2438 - -Build 1.8.9-11.15.1.1740: - LexManos: Fixed invalid parameters being sent to LivingSpawnEvent.CheckSpawn. Closes #2453 - LexManos: Fixed Entity.shouldRiderSit modifying game logic and not just rendering. Closes #2402 - LexManos: Fixed Block/Item.setRegistryName printing a incorrect warning when used. Closes #2398 - LexManos: Fixed vanilla bug where network clients would see incorrect break progress on blocks. Closes #2462 - LexManos: Fixed implementation of RenderEntityItem.shouldSpreadItems. Closes #2448 - LexManos: Fixed invalid item being passed to gatherCapabilities when itemstacks changed item. Closes #2445 - LexManos: Add missing classes to CrashReport preloading. Closes #2421 - LexManos: Fixed Block.onNeighborChange not being called for all axises. Closes #2428 - -Build 1.8.9-11.15.1.1739: - LexManos: Potential fix for NPE when using an item to open a slotless inventory. Closes #1354 - -Build 1.8.9-11.15.1.1738: - fry: Fix custom model loader reload hook not firing during registration. - -Build 1.8.9-11.15.1.1737: - fry: Fix incorrectly updated patch to ChunkCache. Related to #2451. - -Build 1.8.9-11.15.1.1736: - fry: Fix multiple registrations of reloading hooks in custom model loaders. - -Build 1.8.9-11.15.1.1735: - LexManos: Fix jar signer not applying to universal packed in the installer. - LexManos: Remove Mojang logger spam in EntityItem. - -Build 1.8.9-11.15.1.1734: - fry: Fix TRSRTransformation.toItemTransform. Closes #2425. - -Build 1.8.9-11.15.1.1733: - paul.fulham0: Fix #2321 - -Build 1.8.9-11.15.1.1732: - Mumfrey: Fix ASM SignatureReader choking on lambda signatures generated by JDT - -Build 1.8.9-11.15.1.1731: - fry: Revert binary-incompatible changes in models. - -Build 1.8.9-11.15.1.1730: - fry: Fix droppers not dropping. - -Build 1.8.9-11.15.1.1729: - fry: Added "gui3d" and "smooth_lighting" options to the forge blockstate. Implemented them for vanilla and B3D models. Added generic types to IModel subinterfaces, to simplify chaining. - fry: One day I will learn to include all required classes in the commit. - -Build 1.8.9-11.15.1.1727: - matthewprenger: Log unknown exceptions in commands. Resolves #2433 - -Build 1.8.9-11.15.1.1726: - fry: Fixed incorrect patch to GenLayer, causing large vanilla biomes to not work properly. - -Build 1.8.9-11.15.1.1725: - fry: Provide original armor model in the custom armor model hook. - -Build 1.8.9-11.15.1.1724: - fry: Fixed small bug in item extraction code. - -Build 1.8.9-11.15.1.1723: - fry: Fix NoSuchElementException in ModelBlockAnimation caused by empty event list. - -Build 1.8.9-11.15.1.1722: - LexManos: Bump version in prep for new Recomended Build. - -Build 1.8.9-11.15.0.1721: - LexManos: Loosen TileEntity's default hasCapability implementation. Modders should specifically opt in. - -Build 1.8.9-11.15.0.1720: - vikestepftb: - Add EntityTravelToDimensionEvent - - Resolve Merge Conflict - - Move event call inside conditional - -Build 1.8.9-11.15.0.1719: - fry: Fixed minor race condition between mouse clicks and TESR in the animation example. - -Build 1.8.9-11.15.0.1718: - fry: - Model animation system. - Main things of interest: - * IAnimationStateMachine - state machine for animations; can load - from json. - * AnimationTESR - automatic TESR for animated models. - * AnimationModelBase - same for entities. - * ITimeValue - time-varying value, used to control animation - parameters from code. - - * TESRs can now be batched - look at TESR.renderTileEntityFast + - TE.hasFastRenderer. - * RegionRenderCache is not accessible to TESRs and other client-side - logic - MinecraftForgeClient.getRegionRenderCache. - fry: Sometimes I forget how much trivial things are missing from Java 6. - -Build 1.8.9-11.15.0.1716: - t.tomkins: Fixed: BlockPos passed to isBeaconBase - rwtema: - Add IItemHandler capability - - Add the actual patches that I forgot. - - Add simple implementations of IStorage and the factory methods. - - Add ItemStackHandler. A simple IItemHandler implementaton. - - return nulls, not throw nulls. - - Move the vanilla wrappers to a separate class for now. - - Minor clean ups of VanillaWrapper code. - - Inline static methods. - - Add comments. - - Minor cleanup of code. - - Remove redundant size field and add a validate slot index method. - - Minor formatting issues. - - Break early If stacksize to insert is 0. - - Remove setByte() methods. - - Throw exception if IItemHandler can't be modifyed in NBT loading. - - Replace event handler with patches - - Add capability to mine cart inventory entities. - - Change formatting and registration of capability. - - Make InventoryPlayer implements IItemHandler because why not. Also added a field to allow mods that add additional player inventory space to publicly expose them. - - Reduce patch sizes - - Lazy initialization of the item handler for vanilla tiles. - - Minor formatting changes. - - Create a single vanilla chest item handler that will merge with adjacent chests when detected. Added hooks to reset the cached adjacent value when a block update is detected and when a chunk loads. - - Revert "Make InventoryPlayer implements IItemHandler because why not. Also added a field to allow mods that add additional player inventory space to publicly expose them." - - This reverts commit 306d4a37fd0e8c8a0754411c013b750dfe8e2c87. - - Fix furnace derp - - Replace double chest code with a simpler method. - - Vanilla wrappers implement IItemHandlerModifiable (since they are modifiable) - - Minor code cleanups - - Add an onContentsChanged() and onLoad() callback methods.to the default implementation. - - Add slot as a parameter in the callback method. - - Change IItemHandlerModifiable.setStackInSlot() to void, and added a note about not being intended for cross-mod use. - - Improve ItemStackHandler handling of errored NBT. - - Make the stacks array protected. - - Fix a lot of derps in SlotItemHandler. - - Fix derp in ItemStackHandler - - Clarify comments on IItemHandler - - ItemStackHandler no longer caches the stack array in local variable. - - Clean up the Chests code to make intentions clearer - - Vanilla hoppers have their cooldown activated when an item is inserted. Made this behavior part of an item handler (rather than the insertion code) - - Fix mistake in ItemStackHandler - - More documentation of potential edge cases in getStackInSlot() - - Make limit checking more resiliant. - LexManos: Fix J6 compile error in IItemHandler PR. - -Build 1.8.9-11.15.0.1715: - blay09: Fix items being dropped out of a GuiContainer when dealing with a slot outside of the xSize/ySize boundaries. - -Build 1.8.9-11.15.0.1714: - asiekierka: Fix #2388 - -Build 1.8.9-11.15.0.1713: - LexManos: Fix invalid ServerHangWatchdog patch causing it to not apply. - LexManos: - Restore OreDictionary.getOres(String, boolean) and doeOreNameExist(String) functions that went MIA in git merge issue. - Original Commit: https://github.com/MinecraftForge/MinecraftForge/commit/cd3bbfb02c9fcd4ce4bbf00f460dfdd6a386d107 - -Build 1.8.9-11.15.0.1712: - minecrell: Strip console formatting codes for Vanilla log file - -Build 1.8.9-11.15.0.1711: - iLexiconn: - Fixed makeItemStack ignoring stackSize - - Fixes #2376 - -Build 1.8.9-11.15.0.1710: - fry: Fixed error detection login in ModelLoader, reduced the maximum number of printed stack traces to 5 per domain. - -Build 1.8.9-11.15.0.1709: - LexManos: Fix Deobfusication transformer throwing verification errores in Eclipse development environments. - LexManos: Fix forge logging not working correctly in ForgeDev. - -Build 1.8.9-11.15.0.1708: - fry: Correctly handle error caused by missing/malformed bucket model definition file. - -Build 1.8.9-11.15.0.1707: - LexManos: Call deserialze on capabilities in ItemStack.setItem. Closes #2384 - -Build 1.8.9-11.15.0.1706: - LexManos: Fix ItemStacks not getting the parent capability provider from items. Closes #2383 - -Build 1.8.9-11.15.0.1705: - bartek.bok: Allow sleeping without bed - kashike: Skip hang detection on first run of the server hang watchdog - -Build 1.8.9-11.15.0.1703: - fry: Fixed missing model error reporting, made block and item variants sort before loading, to make the splash screen info more useful. - -Build 1.8.9-11.15.0.1702: - cpw: Fix spruce not growing properly - -Build 1.8.9-11.15.0.1701: - cpw: Fixed problem with LAN connections seeing the original ProxyPacket and consuming the first byte. Closes #2373 - -Build 1.8.9-11.15.0.1700: - cpw: Fix shouldRefresh not to be so over-eager about modded TEs. Should fix Packet21 causing a TE reset. - -Build 1.8.9-11.15.0.1699: - LexManos: Clone FML packet indexes if channel is not open. Fixes potential threading issue. - -Build 1.8.9-11.15.0.1698: - bernhard.bonigl: - Default bucket model is empty, allow bucket model without fluid. - This allows capsules, cans, bottles,... to use the same item model for their item variant. Also it's makes much more sense. - -Build 1.8.9-11.15.0.1697: - mezz: Add GuiScreenEvent.BackgroundDrawnEvent - -Build 1.8.9-11.15.0.1696: - cpw: - Fix problem which meant runtime deobf to MCP names wasn't working. SRG named mods located in the mods dir of a dev - environment will now load normally. - -Build 1.8.9-11.15.0.1695: - LexManos: - New Capability system allowing for more manageable world object features. - - When combined with @Optional this should address all issues of soft dependancy on mods/apis. - This also addresses the issue of dynamic functionality in TileEntities/Entities. - - Current capability providers: TileEntity, Entity, ItemStack - - Also added INBTSerializeable, a generic interface for game objects that can be written to/from NBT tags. - - Vanilla capabilities will be coming soon, mostly on request and review. - So start requesting capabiliteis on vanilla/Forge features. - -Build 1.8.9-11.15.0.1694: - LexManos: Fixed GuiWrongMinecraft having wrong Log file name. Closes #2348 - LexManos: Fix jline server console not showing colored text. Closes #2334 - LexManos: Fixed banners not droping the correct item when harvested using modded mechanics. Closes #2258 - -Build 1.8.9-11.15.0.1693: - LexManos: Remove dead code in JarDiscoverer. Closes #2346 - LexManos: Made WrongMinecraftVersionException and ModSortingException a bit easier to read in log files. Closes: #2345 - -Build 1.8.9-11.15.0.1692: - fry: Catch GROUND item transform type with the forge hook too. - -Build 1.8.9-11.15.0.1691: - fry: Implemented face culling for item models, improves performance slightly. Closes #2326 - -Build 1.8.9-11.15.0.1690: - vincent.lee: - Fix visual effect entity persisting longer than it should - - Fix derp - -Build 1.8.9-11.15.0.1689: - LexManos: Fixed issue with WorldServer.getTileEntities when being called with ranges that overlap chunks oddly. Closes #2350 - -Build 1.8.9-11.15.0.1688: - fry: Made block model loading bar more robust, and fixed the count. - -Build 1.8.9-11.15.0.1687: - fry: Added progress bar for the ModelLoader. - -Build 1.8.9-11.15.0.1686: - fry: Model loader improvements: adding custom data/textures to models that don't need them doesn't cause a error now, since it's common to put those in the defaults section of the blockstate json; you can get IModel associated with the variant now - using ModelLoaderRegistry.getModel; MultiLayerModel should now respect transformations applied to it, and respect part transformations. - fry: Derp. - -Build 1.8.9-11.15.0.1684: - cpw: STFU I know how to code. *shouts* get off my lawn! - -Build 1.8.9-11.15.0.1683: - cpw: Make the parent dir tree for the dep extractor - -Build 1.8.9-11.15.0.1682: - fry: Changed default implementation of Block.getExtendedState. Closes #2309. - -Build 1.8.9-11.15.0.1681: - fry: Fixed perspective transformation handling for fluid models, changed inventory fluid model to use unrotated still texture. - fry: Don't crash on exception during loading of item variants from blockstate jsons. - fry: Fixed implementation if IRetexturableModel in ItemLayerModel. Closes #2244. - fry: Java6 + Eclipse + Gradle strike again. - -Build 1.8.9-11.15.0.1677: - fry: Fixed invalid flow vector caching of still fluids. - -Build 1.8.9-11.15.0.1676: - fry: Fixed random offset not working properly for flatly-lit models. - -Build 1.8.9-11.15.0.1675: - cpw: Explicitly close the file. - -Build 1.8.9-11.15.0.1674: - cpw: - Add a simple ContainedDep mechanic- mods can contain other mods or libs, and can specify them using a manifest tag: "ContainedDeps". - This is a space separated (manifest standard) list of jar files that are to be extracted into the version specific directory. - - There's also a special system property "fml.skipContainedDeps" that will allow for runtime skipping of extraction of contained deps (a comma separated list, based on the file name). - -Build 1.8.9-11.15.0.1673: - LexManos: - Added new get/setRegistryName functions to Item and Block. - And helper functions in GameRegistry to allow for registering using those names automatically. - This is to simplify registration and get rid of the horrible hacks users are doing now with 'unlocalised names'. - -Build 1.8.9-11.15.0.1672: - cpw: Move substitution activation after id loading. This should fix the problem of null for existing object. - -Build 1.8.9-11.15.0.1671: - fry: SidedProxy now has sensible default values - nested ClientProxy and ServerProxy classes. - -Build 1.8.9-11.15.0.1670: - mattmess1221: Add links for messages and other commands - -Build 1.8.9-11.15.0.1669: - fry: Reverted Render registration changes due to them working. - -Build 1.8.9-11.15.0.1668: - fry: Fixed RenderingRegistry not working. Closes #2312. - fry: Nobody is left behind. - -Build 1.8.9-11.15.0.1666: - cpw: Fix that the dummy registry entries don't allow clients connecting to servers. Also fix that it repeatedly nags about missing stuff in the world. - -Build 1.8.9-11.15.0.1665: - LexManos: Fix boss health bar rendering when debug overlay is enabled. Closes #2328 - -Build 1.8.9-11.15.0.1664: - LexManos: Allow for default 1.8.8 mods to be loaded. Should be SRG compatible. - LexManos: Fix J6 compile issue with ModelFluid. - LexManos: Swap Mod and Realms button to fix new realms 'notification' icon. - -Build 1.8.9-11.15.0.1663: - fry: Restored transparency to the Forge logo. - -Build 1.8.9-11.15.0.1662: - fry: Updated the forge logo to a higher-quality GIF file. Closes #2276. - -Build 1.8.9-11.15.0.1661: - fry: Fixed broken leaky caching of OBJ models. - fry: Fixed wrong import. - -Build 1.8.9-11.15.0.1659: - fry: Caching of fluid models. Fixes #2145. - -Build 1.8.9-11.15.0.1658: - fry: TESRs registering in preinit don't break pistons anymore. Fixes #2298. - -Build 1.8.9-11.15.0.1657: - fry: Fixed color disabling not working for forge pipeline. Closes #2286. - -Build 1.8.9-11.15.0.1656: - fry: 1.8.9 update - -Build 1.8.8-11.15.0.1655: - mezz: Allow server to access Potion isBadEffect() - cpw: 1.8.8 initial work - cpw: regenerate reference patchset at patches.mcp. These will be used to generate a new patchtree under patches. - cpw: Test of mcp patching - cpw: - Patches and rejected patches. Note: some which had imports are not listed here because they need - to be refactored not to have imports. - Progress: https://gist.github.com/cpw/29695e426e2b122cf8ff - fry: Updated various rendering-related patches and classes to 1.8.8; forge still uses vecmath. - fry: Fix generics and error in the BlockState patch. - fry: FontRenderer + Item patch update; WorldVertexBufferUploader patch derp fix. - fry: IntegratedServer, World, EnumChatFormatting and EnumFacing - fry: WorldProvider, WorldType, WorldServer, WorldServerMulti - fry: EntityAIAttackOnCollide, ServerStatusResponse, MinecraftServer, NetHandlerLoginServer, Vec3, BiomeGenBase, AnvilChunkLoader, ChunkProviderServer, MapGenRavine, MinecraftServer updated; fix in Block, GuiIngameForge; can load the world and play with ~20 more manual error fixes. - fry: BlockOre, BlockRotatedPillar, SoundManager, EntityPlayerSP, GuiScreen, GuiAchievements, GuiContainer, BlockModelRenderer, ContainerEnchantment, Slot updated manually and imports removed; GitSlot patch updated. - cpw: Delete rejects that I initially processed. - cpw: - LoadingScreenRenderer,Minecraft,GuiContainerCreative,PlayerControllerMP,LanguageManager,Locale,SimpleReloadableResourceManager,EntityList,EntityLivingBase,EntityWither,EntityMinecart,EntityPlayerMP - - NethanlderPlayClient patch is now in vanilla. The FMLCommonHandler future exception catcher is not needed anymore, it's in Util. The caching of player profiles is now in vanilla (SkinManager). - fry: Updated FML Gui methods to WorldRenderer API changes. - fry: EntityPlayer patch updated. - fry: GuiButton, GuiChat, GuiCreateWorld, GuiIngameMenu, ServerListEntryNormal, GuiStats rejects updated. - fry: RenderEntityItem, RenderPlayer, RendererLivingEntity, LayerArmorBase, ItemStack rejects fixed; changed Armor Layer hook to catch LayerBipedArmor only. - fry: ItemRenderer, RenderGlobal, StateMap, RenderItem rejects updated. - fry: TileEntity and TileEntityHopper rejects fixed, GuiOverlayDebug patch fixed. - fry: PlayerManager, PlayerProfileCache, ServerConfigurationManager, NetHandlerHandshakeTCP rejects fixed; ItemInWorldManager patch error fixed. - fry: ItemBlock, ItemBow, ItemMonsterPlacer, ItemReed, ItemSign rejects fixed. - fry: Manually updated WorldChunkManager, Chunk and BiomeDecorator patches, removed imports. - fry: TextureMap, TextureManager and Stitcher rejects fixed. - fry: EntityRenderer, StringTranslate rejects fixed. - fry: Overlay patch fix: use the correct block position. - cpw: - Enchantment,EnchantmentHelper,EntityEnderman,EntityZombie,EntityVillager,FurnaceRecipes,RecipeFireworks,RecipeRepairItem,NetworkSystem,S00PacketServerInfo - PotionEffect,StatList,Session,WeightedRandomChestContent,Explosion,ExtendedBlockStorage,SaveHandler. - - All NBT patches seem to have been merged upstream, so removing. The IntegratedServer and MinecraftServer pending queue changes also removed, as fixed upstream. - cpw: WorldGen rejects, lots of them. Couple of small fixes elsewhere. - cpw: Fix a newly missing AT. Remove all CL_ references. OBFID is gone. - cpw: All the patches done? Some code fixups.. It begins. - cpw: A few tweaks, things are starting to work now.. - fry: Model stuff: updated to generics, fixed various warnings, added handling of new perspective types. - cpw: Some generic and other warning cleanups - fry: ExtendedBlockState, Properties generic updates. - cpw: Remove a suppression - cpw: This should be everything needed to separate blocks and items completely. - fry: Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). - kashike: Use the FMLSecurityManager checkPermission(Permission) method for context-based permission checks. Fixes #2067 - fry: B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. - fry: Fix holes in generated item models. - fry: Removed face doubles from item models. - minecrell: Add jline-based console with colors and tab-completion - cpw: Fix a typesig that was broken - cpw: Re-add trove and vecmath. Mojang no longer ship them. - cpw: Use the 2.1 snapshot for FG - fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. - cpw: Back to srgnames for patches. We should be starting to look OK now. - cpw: Small tweak to the OUT/ERR logger - should skip the Throwable stuffs now. - cpw: - Fix weird patch issue where the this FG commit: https://github.com/MinecraftForge/ForgeGradle/commit/2f0ca9921b961133689d29b807333241010a802d - breaks if the exact end of a line is a srgname. Not ideal, but should work. - cpw: Fix derpy fir trees in the taiga. So many patches. See if we can find any more mistakes?! - fry: Fixed NPE is B3D loader caused by the missing vertex normal; updated the example chest model - it's now has 2 meshes; Updated ModelAnimationDebug - it now uses the new chest model, renders the base with the static world renderer, and only the lid with the TESR. - cpw: Update mappings to 20151122. - LexManos: Update universal manifest for 1.8.8's json. - cpw: Cleanup Fluid deprecations stuff. - cpw: - OMG! Documentation? WUT? I haz lost my mind. - Also, Functional interface for IMC. Senders can send a classname implementing Guava's function, and receivers - will be able to get that function, and do, well, whatever, really. Probably best for those callback type - scenarios, connecting up APIs and stuffs. - cpw: Fix MDK for 1.8.8 using FG2.1 snapshot - cpw: Yeah, amount is NOT deprecated. - cpw: ONE EVENT BUS TO RULE THEM ALL AND IN THE DARKNESS FIRE THEM! - cpw: Deprecate it as well, because hey, it's redundant now. - cpw: Clean up some very long dead code. Bukkit hasn't existed in a very long time now. IASM never worked, and I'm not about to implement it. - cpw: Cleaning up some derpy names - cpw: More cleanups, some documentation, a bunch of deprecations. - lordillyohs: - Remove trailing */ in the build.gradle - - Signed-off-by: Anthony Anderson - cpw: Fix button and lever placement problem. Closes #2204 - cpw: Fix up a couple of patches, affected by the recent update - cpw: - Add .exc for StatList patch - - More tweaking - lumien231: Fixed: The Integrated Server not being stopped when exiting a singleplayer world to the main menu - cpw: Propogate AbortException. Closes #2206. Also fix tracing printstream when printStackTrace is called. - LexManos: Bump version for new Minecraft version. - LexManos: Fixed placing blocks on snow layers with more then one layer. - LexManos: Fixed Large mushrooms generating incorrectly. - LexManos: Removed IItemRenderer class, all functionality is possible with new rendering system. - LexManos: Compiler warnings pass, undeprecated SplashProgress related stuff. - cpw: Giant registry fixup - LexManos: Add chunk loading protection to WorldSever.getTileEntitiesIn, may prevent orphanced chunks and a CME in EntityPlayerMP. Note: The 'max' parameters are NON-inclusive. - cpw: Fix up blockstate rebuild. Closes #2221. Also fix formatting. IDEA has differences. Solved now. - bernhard.bonigl: Add a PotionRegistry to handle dynamic distribution and remapping of Potion IDs - cpw: Fix problem with spam from registry on loading a second world. Empty the staging. - cpw: Some tweaks - GameRegistry is modder facing API, so avoid having MC methods there. Fix a couple of registry bugs. - cpw: Fixup Jline integration - cpw: A few fixes - cpw: Allow entity selectors to select "." in entity names. Closes #2125 - cpw: Be noisy when API is in a coremod. It'll never work and modders should realize that fact. - cpw: - Fix language adapter loading. - - The language adapter is now properly picked up after the mod is loaded - on the classpath, fixing the ClassNotFoundException occurring before. - Also fixed some minor formatting and made it throw a full - RuntimeException on failure. - - Fix up some formatting - cpw: Most requested feature of all time? TileEntity init method called after it's ready to roll. remove all the if (firstTicks) - mark.a.woodman: - Initialize sources list - - Fixes crash NPE thrown by addFile() - cpw: Clean up chunk patch. - liach: Fix typo in `guava` - cpw: Add a flag to the modidremapping event. If the remapevent is because the registry is refreezing, it'll be true. - minecrell: - Improve the console command completer - - - Fix space after command getting removed when completing a - subcommand together with the command prefix - - Add support for completing without input (shows command list) - - Sort command completion results - - Fix console spamming command prefixes after closing the input stream - bernhard.bonigl: Add shouldRender() to Potions that allows to hide them completely in the inventory - LexManos: Remove MCP reference patches. - LexManos: Fixed colored leather armor, and custom armor textures. - fry: Fixed orientations of generated item faces. Fixes #2215. - fry: Workaround for https://github.com/google/guava/issues/738 - bx9j52xd: Fixed that oldLight is not being used. - LexManos: Fixed ModList GUI rendering incorrectly. Closes #2254 - LexManos: Add EMERALD and SILVERFISH to GenerateMinable event. Closes #1158 - LexManos: Deprecate int IDs in FluidRegistry. Modders should only ever use the String name. Also add a 'friendly' exception when attempting to get an ID for a unregistered fluid. Closes #1374 - LexManos: Fix wrong EventType passed for Emerald ore-gen. - AlgorithmX2: - Added doesSideBlockRendering to provide finer grain face culling. - Implemented for BlockStairs and BlockSlab. - cpw: Use ItemStack.hasEffect. closes #2230 - minzmann: Update PotionEffect.java.patch - cpw: Fix derpage when loading a 1.8 world, with persistent state being entirely ignored in that case. - AlgorithmX2: Add getHighlightTip allowing a item to override its displayed renderToolHightlight. - cpw: - A test for issue #1848. Please try this with any mods you can @ 1.8.8, and see if you still get log spam of any kind (not just the - log message from the issue either). - AlgorithmX2: Added addLandingEffects allowing mods to override landing particles, for blocks that require world information to determine textures. - LexManos: Fix enchanting applying the same enchantment multiple times. Closes #2273 - fry: - Preparations for the Animation system. - Changes to the Model API - IModelState now works with Optional. Handling of parts of the model is not optional, and coordinate space/result interpretation is up to the caller. IModel doesn't extend IModelPart by default anymore; MapModelState uses composition to achieve previous functionality, IModelPart implementations are disjoint now. Updated perspective handing to the new API, removed IPerspectiveState (MapModelState is now the same thing). Perspective transforms for the default fluid model. - fry: IModel can now depend on a variant definition (ModelResourceLocation); added MultiLayerModel - simple model that'll render correctly in multiple layers + example of using it. - fry: Fixed java6 errors in previous commit. - fry: Forge pipeline will now take original model lightmap into account, if present. - fry: Delayed quad list resolution in MultiModel, fixes NPE in MultiLayerModel. - fry: LightUtil.pack and .unpack now work correctly with unpacked arrays of size <4. - fry: Fix dependency resolution for models with custom data/textures. - jadran.kotnik: Fix client side commands adding parts of the color codes on autocomplete (prefix "7" and suffix "r"). - fry: Fixed NPE caused by accessing undefined layer in MultiLayerModel. - bernhard.bonigl: - Add a dynamic bucket model that displays the animated liquid contained - Has a config option (default off) that replaces the vanilla buckets with the forge bucket model - - New original bucket textures from mr_hazard - LexManos: - Fixed registry issues that prevented connecting to 1.8 Forge servers. - More precisely: Servers with missing registries default back to frozen version. - Throw descriptive error if we do not have any information. - LexManos: Fixed vanilla bug related to spawning entities on top of fences. Closes #2303 - cpw: Fix the channel handler naming. It now uses the standard netty namer for it, by careful use of cunning reflection. - cpw: Fix up persistent substitution. Should close #2259 - cpw: - Blocks are no longer erased from the registry if the mod isn't present. This means that modded blocks can potentially retain their IDs - even if they are temporarily not present in the game. Currently TileEntity data associated with the block is erased. - cpw: Try and fix registry NPE when substitution is active. - cpw: Capture ItemBlock remaps. - cpw: Actually use the delegate for the itemblock - cpw: Try and make sure active substitutions are immediately available in the block to item map. - fry: Added an ability to register custom item variants, not ending with "#inventory". Should allow grouping multiple item models into 1 blockstate json. - fry: Fixed random block position offset not applying correctly. - LexManos: Fix Button/Torch/Lever placement on stairs and slabs. Closes #2291 - diesieben07: Allow forge-type spawn-eggs to spawn child entities when clicking EntityAgeable - bernhard.bonigl: Add a hook for custom particle spawning for slimes - bernhard.bonigl: - Fix bucket replacement not loading the bucket model by itself if replacing buckets. - This happens when no other mod that uses the bucket model is present. - Also added a simple method for registering the bucket model, should give - modders an idea on how to use the general model. - -Build 1.8.8-11.15.0.1654-1.8.8: - bernhard.bonigl: - Fix bucket replacement not loading the bucket model by itself if replacing buckets. - This happens when no other mod that uses the bucket model is present. - Also added a simple method for registering the bucket model, should give - modders an idea on how to use the general model. - -Build 1.8.8-11.15.0.1653-1.8.8: - bernhard.bonigl: Add a hook for custom particle spawning for slimes - -Build 1.8.8-11.15.0.1652-1.8.8: - diesieben07: Allow forge-type spawn-eggs to spawn child entities when clicking EntityAgeable - -Build 1.8.8-11.15.0.1651-1.8.8: - LexManos: Fix Button/Torch/Lever placement on stairs and slabs. Closes #2291 - -Build 1.8.8-11.15.0.1650-1.8.8: - fry: Fixed random block position offset not applying correctly. - -Build 1.8.8-11.15.0.1649-1.8.8: - fry: Added an ability to register custom item variants, not ending with "#inventory". Should allow grouping multiple item models into 1 blockstate json. - -Build 1.8.8-11.15.0.1647-1.8.8: - cpw: Try and make sure active substitutions are immediately available in the block to item map. - -Build 1.8.8-11.15.0.1646-1.8.8: - cpw: Actually use the delegate for the itemblock - -Build 1.8.8-11.15.0.1645-1.8.8: - cpw: Capture ItemBlock remaps. - -Build 1.8.8-11.15.0.1644-1.8.8: - cpw: Try and fix registry NPE when substitution is active. - -Build 1.8.8-11.15.0.1643-1.8.8: - cpw: - Blocks are no longer erased from the registry if the mod isn't present. This means that modded blocks can potentially retain their IDs - even if they are temporarily not present in the game. Currently TileEntity data associated with the block is erased. - -Build 1.8.8-11.15.0.1642-1.8.8: - cpw: Fix up persistent substitution. Should close #2259 - -Build 1.8.8-11.15.0.1641-1.8.8: - cpw: Fix the channel handler naming. It now uses the standard netty namer for it, by careful use of cunning reflection. - -Build 1.8.8-11.15.0.1640-1.8.8: - LexManos: Fixed vanilla bug related to spawning entities on top of fences. Closes #2303 - -Build 1.8.8-11.15.0.1639-1.8.8: - LexManos: - Fixed registry issues that prevented connecting to 1.8 Forge servers. - More precisely: Servers with missing registries default back to frozen version. - Throw descriptive error if we do not have any information. - -Build 1.8.8-11.15.0.1638-1.8.8: - bernhard.bonigl: - Add a dynamic bucket model that displays the animated liquid contained - Has a config option (default off) that replaces the vanilla buckets with the forge bucket model - - New original bucket textures from mr_hazard - -Build 1.8.8-11.15.0.1637-1.8.8: - fry: Fixed NPE caused by accessing undefined layer in MultiLayerModel. - -Build 1.8.8-11.15.0.1636-1.8.8: - jadran.kotnik: Fix client side commands adding parts of the color codes on autocomplete (prefix "7" and suffix "r"). - -Build 1.8.8-11.15.0.1635-1.8.8: - fry: Fix dependency resolution for models with custom data/textures. - -Build 1.8.8-11.15.0.1634-1.8.8: - fry: LightUtil.pack and .unpack now work correctly with unpacked arrays of size <4. - -Build 1.8.8-11.15.0.1633-1.8.8: - fry: Delayed quad list resolution in MultiModel, fixes NPE in MultiLayerModel. - -Build 1.8.8-11.15.0.1632-1.8.8: - fry: IModel can now depend on a variant definition (ModelResourceLocation); added MultiLayerModel - simple model that'll render correctly in multiple layers + example of using it. - fry: Fixed java6 errors in previous commit. - fry: Forge pipeline will now take original model lightmap into account, if present. - -Build 1.8.8-11.15.0.1630-1.8.8: - LexManos: Fix enchanting applying the same enchantment multiple times. Closes #2273 - fry: - Preparations for the Animation system. - Changes to the Model API - IModelState now works with Optional. Handling of parts of the model is not optional, and coordinate space/result interpretation is up to the caller. IModel doesn't extend IModelPart by default anymore; MapModelState uses composition to achieve previous functionality, IModelPart implementations are disjoint now. Updated perspective handing to the new API, removed IPerspectiveState (MapModelState is now the same thing). Perspective transforms for the default fluid model. - -Build 1.8.8-11.15.0.1628-1.8.8: - AlgorithmX2: Added addLandingEffects allowing mods to override landing particles, for blocks that require world information to determine textures. - -Build 1.8.8-11.15.0.1627-1.8.8: - AlgorithmX2: Add getHighlightTip allowing a item to override its displayed renderToolHightlight. - -Build 1.8.8-11.15.0.1626-1.8.8: - cpw: - A test for issue #1848. Please try this with any mods you can @ 1.8.8, and see if you still get log spam of any kind (not just the - log message from the issue either). - -Build 1.8.8-11.15.0.1625-1.8.8: - minzmann: Update PotionEffect.java.patch - -Build 1.8.8-11.15.0.1624-1.8.8: - cpw: Fix derpage when loading a 1.8 world, with persistent state being entirely ignored in that case. - -Build 1.8.8-11.15.0.1623-1.8.8: - bernhard.bonigl: Add shouldRender() to Potions that allows to hide them completely in the inventory - -Build 1.8.8-11.15.0.1622-1.8.8: - minecrell: - Improve the console command completer - - - Fix space after command getting removed when completing a - subcommand together with the command prefix - - Add support for completing without input (shows command list) - - Sort command completion results - - Fix console spamming command prefixes after closing the input stream - -Build 1.8.8-11.15.0.1621-1.8.8: - cpw: Use ItemStack.hasEffect. closes #2230 - -Build 1.8.8-11.15.0.1620-1.8.8: - liach: Fix typo in `guava` - -Build 1.8.8-11.15.0.1619-1.8.8: - AlgorithmX2: - Added doesSideBlockRendering to provide finer grain face culling. - Implemented for BlockStairs and BlockSlab. - -Build 1.8.8-11.15.0.1618-1.8.8: - LexManos: Fix wrong EventType passed for Emerald ore-gen. - -Build 1.8.8-11.15.0.1617-1.8.8: - LexManos: Deprecate int IDs in FluidRegistry. Modders should only ever use the String name. Also add a 'friendly' exception when attempting to get an ID for a unregistered fluid. Closes #1374 - -Build 1.8.8-11.15.0.1616-1.8.8: - LexManos: Add EMERALD and SILVERFISH to GenerateMinable event. Closes #1158 - -Build 1.8.8-11.15.0.1615-1.8.8: - LexManos: Fixed ModList GUI rendering incorrectly. Closes #2254 - -Build 1.7.10-10.13.4.1614-1.7.10: - LexManos: Fix dispensers equipping armor on players in the wrong slot Closes #1649 - -Build 1.8.8-11.15.0.1613-1.8.8: - bx9j52xd: Fixed that oldLight is not being used. - -Build 1.8.8-11.15.0.1612-1.8.8: - fry: Workaround for https://github.com/google/guava/issues/738 - -Build 1.8.8-11.15.0.1611-1.8.8: - fry: Fixed orientations of generated item faces. Fixes #2215. - -Build 1.8.8-11.15.0.1610-1.8.8: - LexManos: Remove MCP reference patches. - LexManos: Fixed colored leather armor, and custom armor textures. - -Build 1.8.8-11.15.0.1609-1.8.8: - cpw: Add a flag to the modidremapping event. If the remapevent is because the registry is refreezing, it'll be true. - -Build 1.8.8-11.15.0.1608-1.8.8: - cpw: Clean up chunk patch. - -Build 1.8.8-11.15.0.1607-1.8.8: - mark.a.woodman: - Initialize sources list - - Fixes crash NPE thrown by addFile() - -Build 1.8.8-11.15.0.1606-1.8.8: - cpw: Most requested feature of all time? TileEntity init method called after it's ready to roll. remove all the if (firstTicks) - -Build 1.8.8-11.15.0.1605-1.8.8: - cpw: - Fix language adapter loading. - - The language adapter is now properly picked up after the mod is loaded - on the classpath, fixing the ClassNotFoundException occurring before. - Also fixed some minor formatting and made it throw a full - RuntimeException on failure. - - Fix up some formatting - -Build 1.8.8-11.15.0.1604-1.8.8: - cpw: Be noisy when API is in a coremod. It'll never work and modders should realize that fact. - -Build 1.8.8-11.15.0.1603-1.8.8: - mezz: Allow server to access Potion isBadEffect() - -Build 1.8.8-11.15.0.1602-1.8.8: - kashike: Use the FMLSecurityManager checkPermission(Permission) method for context-based permission checks. Fixes #2067 - -Build 1.8.8-11.15.0.1601-1.8.8: - cpw: Allow entity selectors to select "." in entity names. Closes #2125 - -Build 1.8.8-11.15.0.1600-1.8.8: - minecrell: Add jline-based console with colors and tab-completion - bernhard.bonigl: Add a PotionRegistry to handle dynamic distribution and remapping of Potion IDs - cpw: Some tweaks - GameRegistry is modder facing API, so avoid having MC methods there. Fix a couple of registry bugs. - cpw: Fixup Jline integration - cpw: A few fixes - -Build 1.8.8-11.15.0.1596-1.8.8: - cpw: Fix problem with spam from registry on loading a second world. Empty the staging. - -Build 1.8.8-11.15.0.1595-1.8.8: - lumien231: Fixed: The Integrated Server not being stopped when exiting a singleplayer world to the main menu - -Build 1.8.8-11.15.0.1594-1.8.8: - LexManos: Add chunk loading protection to WorldSever.getTileEntitiesIn, may prevent orphanced chunks and a CME in EntityPlayerMP. Note: The 'max' parameters are NON-inclusive. - cpw: Fix up blockstate rebuild. Closes #2221. Also fix formatting. IDEA has differences. Solved now. - -Build 1.8.8-11.15.0.1592-1.8.8: - cpw: Giant registry fixup - -Build 1.8.8-11.15.0.1591-1.8.8: - LexManos: Bump version for new Minecraft version. - LexManos: Fixed placing blocks on snow layers with more then one layer. - LexManos: Fixed Large mushrooms generating incorrectly. - LexManos: Removed IItemRenderer class, all functionality is possible with new rendering system. - LexManos: Compiler warnings pass, undeprecated SplashProgress related stuff. - -Build 1.8.8-11.14.4.1590-1.8.8: - cpw: Propogate AbortException. Closes #2206. Also fix tracing printstream when printStackTrace is called. - -Build 1.8.8-11.14.4.1589-1.8.8: - cpw: Fix up a couple of patches, affected by the recent update - cpw: - Add .exc for StatList patch - - More tweaking - -Build 1.8.8-11.14.4.1588-1.8.8: - cpw: Fix button and lever placement problem. Closes #2204 - -Build 1.8.8-11.14.4.1587-1.8.8: - lordillyohs: - Remove trailing */ in the build.gradle - - Signed-off-by: Anthony Anderson - -Build 1.8.8-11.14.4.1586-1.8.8: - cpw: Cleaning up some derpy names - cpw: More cleanups, some documentation, a bunch of deprecations. - -Build 1.8.8-11.14.4.1585-1.8.8: - cpw: Deprecate it as well, because hey, it's redundant now. - cpw: Clean up some very long dead code. Bukkit hasn't existed in a very long time now. IASM never worked, and I'm not about to implement it. - -Build 1.8.8-11.14.4.1584-1.8.8: - cpw: ONE EVENT BUS TO RULE THEM ALL AND IN THE DARKNESS FIRE THEM! - -Build 1.8.8-11.14.4.1583-1.8.8: - cpw: Fix MDK for 1.8.8 using FG2.1 snapshot - cpw: Yeah, amount is NOT deprecated. - -Build 1.8.8-11.14.4.1582-1.8.8: - cpw: - OMG! Documentation? WUT? I haz lost my mind. - Also, Functional interface for IMC. Senders can send a classname implementing Guava's function, and receivers - will be able to get that function, and do, well, whatever, really. Probably best for those callback type - scenarios, connecting up APIs and stuffs. - -Build 1.8.8-11.14.4.1581-1.8.8: - cpw: Cleanup Fluid deprecations stuff. - -Build 1.8.8-11.14.4.1580-1.8.8: - LexManos: Update universal manifest for 1.8.8's json. - -Build 1.8.8-11.14.4.1579-1.8.8: - fry: Fixed NPE is B3D loader caused by the missing vertex normal; updated the example chest model - it's now has 2 meshes; Updated ModelAnimationDebug - it now uses the new chest model, renders the base with the static world renderer, and only the lid with the TESR. - LexManos: Fix incorrect position passes to Block.getExplosionResistance from entities. - LexManos: Moved client side Block.onBlockDestroyed to after Item.onBlockDestroyed to match server order. - LexManos: Enable the normal ModList GUI in game. Use GL_SCISSOR to support the transparent in-game GUI. - Choonster.2010: BiomeManager: Fix off-by-one errors - LexManos: Fix bold font rendering, Unicode is 2x pixel density of normal. - LexManos: Fix invalid position passed to isAir/getLight in World.playAmbientSound - fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. - fry: Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). - fry: B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. - fry: Fix holes in generated item models. - fry: Removed face doubles from item models. - fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. - cpw: Update mappings to 20151122. - -Build 1.8-11.14.4.1577: - fry: Implemented interpolation of TRSR transformations; B3D: added interpolation capabilities to B3DState, animated TESR example in ModelAnimationTest (pure TESR right now, no separation inside the example model between the static and dynamic parts right now). - fry: B3D loader: removed 2 redundand null checks, changed constructor args to final to fix (java6?) inner arg error. - fry: Fix holes in generated item models. - fry: Removed face doubles from item models. - fry: Fixed forge lighting working incorrectly outside 0x1000000 coordinates. - -Build 1.8.8-11.14.4.1576-1.8.8: - cpw: Fix derpy fir trees in the taiga. So many patches. See if we can find any more mistakes?! - -Build 1.8.8-11.14.4.1575-1.8.8: - cpw: Small tweak to the OUT/ERR logger - should skip the Throwable stuffs now. - cpw: - Fix weird patch issue where the this FG commit: https://github.com/MinecraftForge/ForgeGradle/commit/2f0ca9921b961133689d29b807333241010a802d - breaks if the exact end of a line is a srgname. Not ideal, but should work. - -Build 1.8-11.14.4.1572: - LexManos: Fix invalid position passed to isAir/getLight in World.playAmbientSound - -Build 1.8-11.14.4.1571: - Choonster.2010: BiomeManager: Fix off-by-one errors - -Build 1.8-11.14.4.1570: - LexManos: Fix bold font rendering, Unicode is 2x pixel density of normal. - -Build 1.8-11.14.4.1569: - LexManos: Enable the normal ModList GUI in game. Use GL_SCISSOR to support the transparent in-game GUI. - -Build 1.8-11.14.4.1568: - LexManos: Fix incorrect position passes to Block.getExplosionResistance from entities. - LexManos: Moved client side Block.onBlockDestroyed to after Item.onBlockDestroyed to match server order. - -Build 1.7.10-10.13.4.1566-1.7.10: - scott: Add an event hook to allow overriding of fuels recognized by vanilla fuel handling. - -Build 1.8-11.14.4.1565: - lumien231: Fix Client Login Issue when logging into a non existent dimension - -Build 1.7.10-10.13.4.1564-1.7.10: - LexManos: Fixed skulls not placing on fences like vanilla {Vanilla is buggy -.-} Closes #2185 - -Build 1.8-11.14.4.1563: - LexManos: Bump version for Recomended Build. - -Build 1.8-11.14.3.1562: - LexManos: - Merge pull request #2179 from arideus101/patch-1 - - Fixed issue where custom colored armor wouldn't be colored. (reverted from commit dee0b2084b519419bbf97d8ad177204830ea2b07) - -Build 1.8-11.14.3.1561: - jasondoyle528: Allows Custom Armor Coloring to be done easily - -Build 1.8-11.14.3.1560: - gabizou: - Fix a possible NPE when checking supertypes of interfaces. Closes #2176. - - Signed-off-by: Gabriel Harris-Rouquette - -Build 1.8-11.14.3.1559: - bjoern: - Fix possible crash in EventBus - - There is currently no way to check if an event handler has been registered or not. - But when trying to unregister a not-registered event handler, Minecraft crashes with a NullPointerException. - This is a simple fix to prevent such crashes. - cpw: Fix substitutions for recipes and oredict recipes. Should mean that substitutions start working properly. - cpw: - OreDictionary will warn if there's an invalid ore being registered now, rather than just - using -1 and doing weird things with the list as a result. - cpw: Two more corner cases in the oredictionary. Should work for all cases now. - cpw: - Fix firing the remap event. It always fires now, and additionally fires when the registry reverts to frozen. - Most mods refer to the gameregistry for ids they care about, so this shouldn't affect anything significantly, - but if your mod was dependent on their being content in the remap event, and only acting on that content, - empty content means it's "reverted to frozen" state - the state at the start of the game. - -Build 1.7.10-10.13.4.1558-1.7.10: - cpw: - Fix firing the remap event. It always fires now, and additionally fires when the registry reverts to frozen. - Most mods refer to the gameregistry for ids they care about, so this shouldn't affect anything significantly, - but if your mod was dependent on their being content in the remap event, and only acting on that content, - empty content means it's "reverted to frozen" state - the state at the start of the game. - -Build 1.7.10-10.13.4.1557-1.7.10: - cpw: Two more corner cases in the oredictionary. Should work for all cases now. - -Build 1.8-11.14.3.1556: - LexManos: Fixed Open url confirm screen not showing URL. - LexManos: Fixed Stronghold Library not having anything in it's chests. - -Build 1.8-11.14.3.1555: - diesieben07: Fix GameData.findBlock - -Build 1.8-11.14.3.1554: - fry: Fixed anaglyph transformation not being applied in the forge lighting fully. - -Build 1.8-11.14.3.1553: - fry: Provide ItemCameraTransforms for vanilla models when possible. - -Build 1.8-11.14.3.1552: - fry: OBJ loader: reworked texture resolution: keys now have to start with #, like every other model loader; models without explicit library now work, remapping is possible by using the key "#OBJModel.Default.Texture.Name"; in addition to remapping by material name, remapping by texture name works too, like in other model formats. - -Build 1.8-11.14.3.1551: - fry: Performace fix for item rendering. - -Build 1.8-11.14.3.1550: - Choonster.2010: - Fix texture error message for broken textures - - -- Fixes #2100 - -- Iterates over badTextureDomains instead of missingTextures.keySet() - as a domain can have broken textures without any missing textures - -Build 1.8-11.14.3.1549: - fry: Obj loader: fix vertices shared between faces having the same attributed (uvs/normals). - the.f1repl4ce: Fixed a bug that caused the config option name to overlap with the selectable values when using GuiConfigEntries.SelectValueEntry, fixes #2114 - fry: OBJ model: use original vertex material when defining face. - fry: Fixed block color multiplier not being cached properly in the forge renderer, performance improvement. - LexManos: Merge FML and Forge lang file, and update crowdin project. - LexManos: - Redesign the ModList GUI to use a scrolling list for the main body content. - Allowing for larger information to be displayed. - URLs are auto-detected and now clickable. - Mod Logos are now centered, it looks better. - LexManos: - Introduce a new centralized version checking system. - Using the @Mod annotation mods can opt-in to a centrally controlled update system. - This is PURELY a notification system and will NOT automatically download any updates. - The End User can control which mods check for updates and disabel the system entirely using the Forge Config and GUI. - Format for the json the URL must point to is described here: https://gist.github.com/LexManos/7aacb9aa991330523884 - -Build 1.8-11.14.3.1543: - fry: Fix color multiplier applied incorrectly for items. - fry: OBJ loader: fixed another whitespace-related issue; removed unused "modifyUVs" property for now; added the "flip-v" property to switch between OpenGL-style and DirextX-style model UVs; fixed normals - they are now correct in-world, still a bit strange for the items; fixed normals a little bit for B3D models too. - -Build 1.7.10-10.13.4.1541-1.7.10: - cpw: - OreDictionary will warn if there's an invalid ore being registered now, rather than just - using -1 and doing weird things with the list as a result. - -Build 1.7.10-10.13.4.1539-1.7.10: - diesieben07: Fix CME when entities are spawned from EntityJoinWorldEvent - bernhard.bonigl: Fix Potion IDs above 127 - Abrar Syed: Update FG version to 2.0.2 - fry: Changed how the forge lighting system handles holey models for opaque blocks; it now mimics vanilla behaviour, which allows light to pass through them. - fry: Fix for the previous commit - transparent blocks were handled improperly. - glstillman: OBJLoader: Quick bandages to support/fix the new way that face/vertex normals are calculated, a very quick bandage to patch TextureCoordinates for the time being, and the Parser now uses a Pattern to split strings on whitespace instead of only splitting on " ". - cpw: Fix substitutions for recipes and oredict recipes. Should mean that substitutions start working properly. - -Build 1.8-11.14.3.1532: - fry: Fixed normal calculation for vanilla models, fixed the grass darkening and simular issues. - fry: More lighting fixes, flat lighting now works correctly for grass and torches. - -Build 1.8-11.14.3.1530: - fry: Fixed piston rendering (WorldRenderer offset wasn't applied); fixed TESR being registered too early in one of the debug mods. - -Build 1.8-11.14.3.1529: - glstillman: Fixed a bug with item model loading that would occur if ModelBakery.addVariantName() was called with the same string location parameter for 2 different items, and the string pointed to a location that didn't exist, where ModelLoader.loadAnyModel() would substitute the blockdefinition in for the item model, but wouldn't remove the original input location from the loadingModels list, which would cause the location from the second call to throw an IllegalStateException even though that location now has a model. - fry: - Perspective awareness for vanilla and multi models, fixes #2148. - Improved error handling in MultiModel. - fry: Fixed generic bug in MultiModel - fry: Fixed AO being applied to OBJ model transparency, and OBJ loader trying to force the loading of the builtin white texture. - fry: Provide a IModel for "builtin/generated", fixes #2147 - fry: Fixed another generic issue in MultiModel. - -Build 1.8-11.14.3.1525: - fry: Small fix for reworked classic lighting - -Build 1.8-11.14.3.1524: - fry: Added OBJ loader for the ModelLoaderRegistry system. - -Build 1.8-11.14.3.1523: - fry: - Model pipeline system. - Should replace all ad-hoc quad generation methods in forge, and make IBakedModel -> WorldRenderer data transfer faster. Added IVertexConsumer + helper classes; lighting that works correctly for non-axis-aligned faces using the new infrastructure. Changed smooth lighting algorithm, now it should work correctly for everything. - New block lighter can be disabled in the forge config options. - fry: Added back in the lost class - -Build 1.8-11.14.3.1521: - simonbarnes1: - Add Guava and Apache to LaunchClassLoader exclusion list on server - - Move exclusions to common place. Less likely to get out of sync - -Build 1.8-11.14.3.1520: - bk1325: Add PlayerSetSpawnEvent - -Build 1.8-11.14.3.1519: - fry: '#' is now added automatically to the beginning of the texture names in B3D models, and the remapping is expected via the blockstate JSON, since it's more reasonable than adding it to the file name in the modelling program or matching the resource location with the filename. - -Build 1.8-11.14.3.1518: - fry: Fixes Attributes.transform affecting only 1 vertex. - -Build 1.7.10-10.13.4.1517-1.7.10: - bjoern: - Fix possible crash in EventBus - - There is currently no way to check if an event handler has been registered or not. - But when trying to unregister a not-registered event handler, Minecraft crashes with a NullPointerException. - This is a simple fix to prevent such crashes. - -Build 1.8-11.14.3.1516: - luacs1998: Fix a possible crash in EventBus - -Build 1.8-11.14.3.1515: - rubensworks: Fix dispenser action for modded spawn eggs - -Build 1.8-11.14.3.1514: - LexManos: Update Gradle wrapper to 2.7 - LexManos: Fix entity count being incorrect for spawning logic. Now filter out 'persistant' entities. - -Build 1.8-11.14.3.1513: - foka_12: Disallow conflicting furnace recipes - -Build 1.8-11.14.3.1512: - fry: Workaround for MinecraftForge/ForgeGradle#256 - -Build 1.8-11.14.3.1511: - cpw: - FMLNetworkHandler.openGui should not try and open a GUI on a FakePlayer. - Fixes #2082 and probably dozens of mod errors. Also, side benefit of the - merged codebase! FML code can ref Forge code! - -Build 1.8-11.14.3.1510: - laci200270: Update FMLSecurityManager.java - cpw: Format a bit better - -Build 1.8-11.14.3.1509: - fry: Much requested temporary hack for items and TESRs. Context: #1582, #1597, #1713, #2058 and others. - -Build 1.8-11.14.3.1508: - vorquel: Fix faulty Channel name - -Build 1.8-11.14.3.1507: - simonbarnes1: Use already provided profile for the player's own skin - -Build 1.8-11.14.3.1506: - cpw: - More cleanup of the default eclipse workspace. The project is now called "MDKExample" not "Minecraft". - The project tree is now contemporary, instead of a copy from 1.5.x era MC. The launches are cleaned up, and refer to - a better default "runDir" of "run" rather than "eclipse".. Updating to FG2.0.1 which will contain relevant binary fixes. - -Build 1.8-11.14.3.1505: - cpw: Fix eclipse workspace inside the mdk - don't run it through the tokenconverter. Also add in CREDITS-fml.txt to the MDK - it's still required. - -Build 1.8-11.14.3.1504: - LexManos: - Fixed issue where config folder would not be created before SplashProgress tried to read from it. - Default macs to disable the new loading screen due to to many macs having issues. - Users can enable it again by editing their config. - Catch and gracefully handle more errors when starting up the Splash Screen. - -Build 1.8-11.14.3.1503: - diesieben07: Re-introduce RenderBlockOverlayEvent, seems to have been missed during 1.8 update - Abrar Syed: removed broken and duplicate AT lines - Abrar Syed: added hardcoded fml version file - Abrar Syed: DeobfuscationData no longer required at dev time - Abrar Syed: removed old unnecessary stuff - Abrar Syed: Added FG2 buildscript + updated for Gradle 2.4 - Abrar Syed: added jenkins compat tasks - Abrar Syed: fixed local-building fail with changelog - Abrar Syed: updated installed gradle. not finished - Abrar Syed: fixed deployment credentials - cpw: FML is no more. FML has ceased to be. FML's expired and gone to meet its maker. FML's a stiff! Bereft of life, FML rests in peace. - cpw: Vestigal fml-ectomy. - cpw: - FML's metabolic processes are now history. FML's off the twig. FML's kicked the bucket, FML's shuffled off this mortal coil, - run down the curtain and joined the bleedin' choir invisible!! THIS IS AN EX-PROJECT! - Abrar Syed: added MDK package - cpw: Fix MDK task - it now runs. - cpw: The final nail in the coffin. BYE! - cpw: - Trying to fix the MDK to include gradle wrapper, but the gradle-wrapper.jar is - corrupted. @AbrarSyed can you take a look? - cpw: - Fix packaging the gradle wrapper properly. There is still a problem with - the MDK- it fails to run setupDecompWorkspace. - - Filed an issue at ForgeGradle, since this seems to be something FG2 shouldn't - be doing, but is? - - https://github.com/MinecraftForge/ForgeGradle/issues/235 - cpw: Remove patches - cpw: Fix ciWriteBuildNumber task. Ugly, but it works. - cpw: Fix crowdin task. Good luck jenkins, lets roll! - cpw: Fix crowdin again. Run, jenkins, for god's sake, run! - LexManos: Update gradle wrapper and fix changelog task. - -Build 1.8-11.14.3.1502: - cpw: ObjectHolder works great, but it should be a lot less spammy about failed lookups. They're usually mod options. - cpw: Actually rebuild the fluidNames each rebuild, don't just try and force changes in. Should fix #1973 - cpw: - Wake up the FluidRegistry before any mods start loading. Should stop mods claiming to own water or lava (depending on who accessed - FluidRegistry first) - cpw: Be a little bit more helpful when the ObjectHolder misses. Should help figure out what is going in in #2006 - cpw: Cherry pick some changes from 1.8 for inner class discovery, also fix the negativecache. Closes #1872 - -Build 1.8-11.14.3.1501: - LexManos: Fix placing skulls on fence posts. Closes #2055 - -Build 1.8-11.14.3.1500: - starbuck: Fix harvest logic running in addition to shearable logic - -Build 1.8-11.14.3.1499: - glstillman: Fixed a bug with ExtendedBlockStates containing at least one IProperty and one IUnlistedProperty not allowing blocks to be placed. - -Build 1.8-11.14.3.1498: - liach: Add an EnumHelper hook and fixed an issue - -Build 1.8-11.14.3.1497: - simonbarnes1: Fix placing signs with NBT prompting for text - -Build 1.8-11.14.3.1496: - Zaggy1024: - Fixed a Forge blockstates json removing models causing an NPE in the loader. - Fixed the deep clone of a V1 Variant not cloning the submodels properly. - -Build 1.8-11.14.3.1495: - clienthax: Signed-off-by: Clienthax - -Build 1.8-11.14.3.1494: - rubensworks: Make EnumFacing events available server-side - -Build 1.8-11.14.3.1493: - rubensworks: Fix source block check for BlockFluidClassic - -Build 1.7.10-10.13.4.1492-1.7.10: - cpw: Cherry pick some changes from 1.8 for inner class discovery, also fix the negativecache. Closes #1872 - -Build 1.8-11.14.3.1491: - diesieben07: Allow the new entity eggs to be created via middle-click - -Build 1.7.10-10.13.4.1490-1.7.10: - cpw: Actually rebuild the fluidNames each rebuild, don't just try and force changes in. Should fix #1973 - cpw: - Wake up the FluidRegistry before any mods start loading. Should stop mods claiming to own water or lava (depending on who accessed - FluidRegistry first) - cpw: Be a little bit more helpful when the ObjectHolder misses. Should help figure out what is going in in #2006 - -Build 1.8-11.14.3.1487: - fry: Custom transformations in forge blockstate json. - -Build 1.8-11.14.3.1486: - LexManos: Fixed ItemMonsterPlacer.getEggInfo missing return. Closes #1975 - -Build 1.8-11.14.3.1485: - jadran.kotnik: Fixed error GUIs showing a white screen and replaced a rogue direct GL call. - -Build 1.8-11.14.3.1484: - izooDee5: Fix particle texture of the generated item models. - -Build 1.8-11.14.3.1483: - bernhard.bonigl: Fix StateMap always mapping properties to the "minecraft" domain instead of the mods, causing it to not find BlockState definitions. - -Build 1.8-11.14.3.1482: - LexManos: Add debug for max texture size and output when Texture Atlas can not stitch all textures. - -Build 1.7.10-10.13.4.1481-1.7.10: - cpw: ObjectHolder works great, but it should be a lot less spammy about failed lookups. They're usually mod options. - -Build 1.8-11.14.3.1480: - LexManos: More descripotive error if Patcher is passed invalid data for vanilla classes. - -Build 1.8-11.14.3.1479: - fry: Fixed perspective transformations for item models. - fry: Vanilla models can now use custom textures. Fixes #1962 - fry: There's no Map.getOrDefault in java6. - -Build 1.8-11.14.3.1476: - LexManos: Fix AT for Block constructor. - -Build 1.8-11.14.3.1475: - fry: Added ItemLayerModel - less awkward, simpler and faster version of ItemModelGenerator. - -Build 1.8-11.14.3.1474: - LexManos: Throw more descriptive errors when mods attempt to register invalid global entity IDs. - LexManos: Include the thread state in the potential error handleing for SplashProgress. - LexManos: Fixed Wavefront Object Importer reading files with integer values. Closes #1651, #1654 - LexManos: Create config folder in SplashProgress if it does not exist. - LexManos: Add the stitching allocation stage to loading screen. - LexManos: - Make TextureMap for items and blocks skip the first pass of loading/stitching textures. - Should decrease loading times for large packs. - May cause issues with some mods so use -Dfml.skipFirstTextureLoad=false to disable. - LexManos: Add TextureManager to loading screen. - LexManos: Time each bar in the loading screen and print it to the log, useful information to see where most time is spent in loading. - cpw: - Mods that are extracted to the mods dir by unzipping or whatever will now cause the game to crash. Too much info is in the META-INF now, - and more will be being added. Extracting to the mods dir just completely breaks that. - -Build 1.8-11.14.3.1473: - jamioflan: - Added CameraSetup sub-event for camera angles - - Allows players to alter yaw and pitch of renderViewEntity, but more importantly, adds the ability to roll the view. - - Added camera roll hook - -Build 1.7.10-10.13.4.1472-1.7.10: - michafla: fix logic for guessing mesa tag in biome dict - cpw: - Mods that are extracted to the mods dir by unzipping or whatever will now cause the game to crash. Too much info is in the META-INF now, - and more will be being added. Extracting to the mods dir just completely breaks that. - -Build 1.7.10-10.13.4.1470-1.7.10: - LexManos: Add TextureManager to loading screen. - LexManos: Time each bar in the loading screen and print it to the log, useful information to see where most time is spent in loading. - -Build 1.7.10-10.13.4.1469-1.7.10: - LexManos: Create config folder in SplashProgress if it does not exist. - LexManos: Add the stitching allocation stage to loading screen. - LexManos: - Make TextureMap for items and blocks skip the first pass of loading/stitching textures. - Should decrease loading times for large packs. - May cause issues with some mods so use -Dfml.skipFirstTextureLoad=false to disable. - -Build 1.8-11.14.3.1468: - LexManos: Patch line number update. Ignore this. - LexManos: - New system in EntityRegistry to allow modders to register spawn eggs. - For entites that do not use the global ID system. - {Which no mod entity should} - Vanilla spawn eggs will now detect a 'entity_name' entry in it's NBT data and use that for spawning/rendering. - -Build 1.8-11.14.3.1467: - foka_12: Change permission levels on ore recipes parameters - -Build 1.8-11.14.3.1466: - foka_12: - Fixed NPE when calling canBrew - - Oversight on my part, - - If the ingredient doesn't return true in Item.isPotionIngredient, Items.potionitem.getEffects(stack) returns null, causing an NPE to be thrown later on. - - This invalidates #1947. - -Build 1.8-11.14.3.1465: - LexManos: Use Guava instead of Nio for J6 compatibility. - -Build 1.8-11.14.3.1464: - fry: Added fluid renderer. - -Build 1.8-11.14.3.1463: - LexManos: Make Item.shouldCauseReequipAnimation is bit more precise and copy over the new item for rendering even if the animation is diabled. - -Build 1.8-11.14.3.1462: - LexManos: Add vanilla block rotation support back in for certain blocks that were missed in 1.8 update. Closes #1903 - -Build 1.8-11.14.3.1461: - xxmicloxx: Bugfix for B3DLoader - -Build 1.8-11.14.3.1460: - Daniel: - Fix incorrect block position in BlockReed canPlaceBlockAt - - block.canSustainPlant is called on the wrong block position. It should be called on the block below (the 'soil' block). - -Build 1.8-11.14.3.1459: - mezz: Add GuiScreenEvents for keyboard and mouse input - -Build 1.8-11.14.3.1458: - t.tomkins: - Player sensitive version of Block.getPickBlock - - Block.getPickBlock was patched in 1.7 but was overlooked in 1.8. - - Closes: https://github.com/MinecraftForge/MinecraftForge/issues/1709 - LexManos: Add Item.shouldCauseReequipAnimation to allow modders more control over the 'Reequip' animation. - -Build 1.8-11.14.3.1457: - LexManos: Fixed compile issues with irtimaled's PR. - -Build 1.7.10-10.13.4.1456-1.7.10: - irtimaled: - Copy fortress.dat from vanilla location - - Fixes #1747 - - If the dat file isn't in the dimension specific folder but is present in the vanilla data folder then copy it over. - LexManos: Make FML Gui classes use GlStateManager. Closes FML#615 - LexManos: Fixed Wavefront Object Importer reading files with integer values. Closes #1651, #1654 - -Build 1.8-11.14.3.1453: - LexManos: Cleanup code format in LayerBreakingTest. - LexManos: Fixup model loading errors not being printed by making ICustomModelLoader.loadModel propogate IOExceptions as needed. - -Build 1.7.10-10.13.4.1452-1.7.10: - LexManos: Include the thread state in the potential error handleing for SplashProgress. - -Build 1.7.10-10.13.4.1451-1.7.10: - LexManos: Throw more descriptive errors when mods attempt to register invalid global entity IDs. - -Build 1.8-11.14.3.1450: - LexManos: Bump version for new RB. - LexManos: Cleanup some spammy output. - LexManos: Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. - LexManos: Quiet FMLControlledNamespacedRegistry debug spam by default. Reenable using -Dfml.debugRegistryEntries=true. - LexManos: Quiet CrashReport class pre-loading debug, no flag to re-enable. - LexManos: Cleanup mod signature data table. Easily seperating those mods with signatures vs those with none. - LexManos: Cleanup mod state dump to be easier to read by displaying the states in abreviation and placing them before the mod info. - -Build 1.8-11.14.3.1449: - clarsson: Fixing two IndexOutBoundsExceptions from the BiomeDictionary - -Build 1.7.10-10.13.4.1448-1.7.10: - LexManos: Cleanup mod state dump to be easier to read by displaying the states in abreviation and placing them before the mod info. - -Build 1.7.10-10.13.4.1447-1.7.10: - LexManos: Cleanup some spammy output. - LexManos: Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. - LexManos: Quiet FMLControlledNamespacedRegistry debug spam by default. Reenable using -Dfml.debugRegistryEntries=true. - LexManos: Quiet CrashReport class pre-loading debug, no flag to re-enable. - LexManos: Cleanup mod signature data table. Easily seperating those mods with signatures vs those with none. - -Build 1.8-11.14.3.1446: - LexManos: Copy over parent's modelSet value in variants as well. - LexManos: Bump version for new RB - -Build 1.7.10-10.13.4.1445-1.7.10: - LexManos: Bump version for new RB. - -Build 1.8-11.14.2.1444: - cpw: - Fix up the client/server fluid race condition that could cause the game to bail when an SSP game connects. - There's still a teeny gap, but it's MUCH less prominent than it was before. - -Build 1.8-11.14.2.1443: - lumien231: Added LivingExperienceDropsEvent to change the amount of experience an entity drops - -Build 1.8-11.14.2.1442: - jcoleman350: Added ItemMap type check to item frames and ItemRenderer, enabling vanilla style rendering for custom maps - -Build 1.8-11.14.2.1441: - LexManos: Redefine removal value in IRetextureableModel from null to empty string {""} due to ImmutibleMap not allowing null Values. Closes #1927 - -Build 1.8-11.14.2.1440: - foka_12: Added a brewing registry system - -Build 1.8-11.14.2.1439: - LexManos: Limit Sign text to 384 json characters and strip control codes. This is 1.8.7's Sign fix. Thanks Searge. - LexManos: Remove worlds from WorldBorder when unloaded tol prevent memory leak, Closes #1923 - LexManos: Missed patch for sign fix. - -Build 1.8-11.14.2.1437: - cpw: - Attempt to synchronize the state for vanilla client completions and quit the handler if the vanilla - thread has already setup the connection. Should fix #1924 - -Build 1.8-11.14.2.1436: - LexManos: Change custom payload lock to be buffer itself incase multiple packets use the same backend buffer. Closes #1908 - -Build 1.8-11.14.2.1435: - Fuami.cake: - Added Breaking Animation for Smart Models, Checking each layer. - Added Layered Smart Render Test. - -Build 1.8-11.14.2.1434: - LexManos: Update README.txt - -Build 1.8-11.14.2.1433: - fry: Fixed missing variant logging; added the possibility to specify the item variant in the blockstate json. - fry: fixed AT missing for getModelBlockDefinition - fry: - B3D Improvements - - fixed keyframe transformation application - - textures are now resolved the same way as in vanilla models - - added the ability to use forge blockstate texture information - - removed unused code from the B3D example - -Build 1.8-11.14.2.1431: - fry: Fixed partial variant detection in the forge blockstate loader. - -Build 1.8-11.14.2.1430: - LexManos: Mitigate potential issue with users requesting lots of server status information by caching ServerStatus json. - -Build 1.8-11.14.2.1429: - clienthax: - Add missing forge patch from 1.8 port - https://github.com/MinecraftForge/MinecraftForge/blob/1.7.10/patches/minecraft/net/minecraft/client/Minecraft.java.patch#L88 - -Build 1.7.10-10.13.3.1428-1.7.10: - cpw: - Fix up the client/server fluid race condition that could cause the game to bail when an SSP game connects. - There's still a teeny gap, but it's MUCH less prominent than it was before. - -Build 1.8-11.14.2.1427: - LexManos: - Hook BlockState's Json loading to add support for simplified Forge format. - See https://github.com/MinecraftForge/MinecraftForge/pull/1885 for more details. - -Build 1.8-11.14.2.1426: - cpw: - Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. - - (cherry picked from commit e3211eec0469dc6717943010d584207b7abdb1e0) - - Conflicts: - fml/src/main/java/cpw/mods/fml/client/SplashProgress.java - cpw: - Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 - - (cherry picked from commit 19d7e16fa6a28c5665de1ed6e50d8699e865bff2) - - Conflicts: - fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch - cpw: So we can't print a lot of unicode in the splash screen, so restrict to a hard subset we know we CAN print, closes #1910 - LexManos: Fixed missing import in last merge. - -Build 1.7.10-10.13.3.1424-1.7.10: - cpw: So we can't print a lot of unicode in the splash screen, so restrict to a hard subset we know we CAN print, closes #1910 - -Build 1.8-11.14.2.1423: - AlgorithmX2: Allow placing item frames on Solid Block Faces (isSideSolid) - -Build 1.7.10-10.13.3.1422-1.7.10: - cpw: - Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. - - (cherry picked from commit e3211eec0469dc6717943010d584207b7abdb1e0) - - Conflicts: - fml/src/main/java/cpw/mods/fml/client/SplashProgress.java - cpw: - Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 - - (cherry picked from commit 19d7e16fa6a28c5665de1ed6e50d8699e865bff2) - - Conflicts: - fml/patches/minecraft/net/minecraft/client/Minecraft.java.patch - -Build 1.8-11.14.2.1421: - cpw: - MinecraftForge/FML@12ccf9cf49b76140841cdc5a459422ae4781de1a Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse. - MinecraftForge/FML@e8cd368da30661ed2898fff232e2db787edcbdcc It's an IllegalState not an IllegalArgument *sigh* - MinecraftForge/FML@2be9c743424c92f8799a6af1d59d60edd65e6bf0 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it - MinecraftForge/FML@7d8804cf656081d1570068f52e9bfc7140b21a65 You can't setAction to BLOCKONLY - MinecraftForge/FML@c73861efe67594ee9995bc93744cab06bd6647d1 Cherry-pick 01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 - MinecraftForge/FML@94c45b48c1265e7c4f60f591d413fa545787d354 Fix json cache crash, handle the file much more cleanly. Probably an MC JIRA since it's a vanilla bug. Closes #619 - cpw: - Forge really should have always supported the concept of an "exact spawn". Individual world providers can still - change this behaviour of course, but for default maps it makes sense to support it as a config option. - cpw: - Removed fluidID from ItemStack. - - This fixes a rather huge issue where FluidStacks on the client could be desynced if a modder was unaware of it. - - This is a breaking change but can be mitigated with a transformer to the getter getFluidID(). - - Signed-off-by: King Lemming - cpw: Add in a fluidid transformer - cpw: Fix formatting - cpw: - Allow for duplicate Fluid Blocks. It's annoying to be sure but just as with the OreDictionary, we'll have to handle it. - - Signed-off-by: King Lemming - cpw: - You shouldn't be creating FluidStacks from unregistered Fluids. Warn clearly on failed registrations, and make a useful log message for failed fluidstack - creations. Should help a lot with tracking down broken mods that are doing this wrongly. - LexManos: MinecraftForge/FML@31cf2a9cab6d1977d31436220d9612eaa13d4e0f Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. - LexManos: Restore binary compatibility issues in FluidRegistry caused by recent changes. - me: - Fix FluidRegsitry.registerFluid - - FluidRegistry: - ```java - static BiMap fluids = HashBiMap.create(); - static BiMap fluidIDs = HashBiMap.create(); - ... - public static boolean registerFluid(Fluid fluid) - { - if (fluidIDs.containsKey(fluid.getName())) - ^^^^^^^ - ``` - There is definitely should be fluids instead fluidIDs. This mistake broke many mods. - kinglemming: - Fixes #1782 - - Signed-off-by: King Lemming - kinglemming: - Fixes FluidContainerRegistry properly - no more corner case where client/server mods disagree. - - Also clarifies the 2x Fluid registration error message somewhat. - - Signed-off-by: King Lemming - kinglemming: - Adds a warning to the FluidContainerRegistry when a mod does something stupid! Also denies the registration. - - Signed-off-by: King Lemming - cpw: - MinecraftForge/FML@ce791cb1f2cf983ef77b1e5c4028ddefab394062 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors. - MinecraftForge/FML@852710962a9b6d7c8e2ca188c715eebb2da44c2a Clean up some dead code - cpw: MinecraftForge/FML@be5ec06e3144d55a03d125f3ce364eade3771f4f Cleaning up the missing resource stack spam, and condensing the information into a usefully understandable format. - cpw: MinecraftForge/FML@0da1263ff9ede99267c03728a1c823b8056d5e44 Enhance error output for bad textures a bit more and try and capture more types of error.. - cpw: - Fluids are now tracked internally by mod. This allows for the server and the world to specify a "default" - in the case of a possible alternative fluid implementation. If you always called registerFluid, things - should work pretty seamlessly, but if you didn't (gating with an isFluidRegistered check for example) - you should change to register anyway. This way, even if you're not default in the overall instance, you may - become default if you're the only mod present on a server, for example, or in a world save. - - This should radically decrease the mixups caused by mod load ordering problems, and other issues around fluid - tracking. - cpw: Fix NPE - Closes #1794 - cpw: And handle the null case in the constructor itself. Closes #1794 (again) - cpw: - MinecraftForge/FML@dfce4cd8d023a546c4c21405db182b8ddcd38633 Allow registering custom language adapters. - MinecraftForge/FML@9fecd72cf0bd483ae7bc2ce821ae6b2f5e5b9c65 Some tidyup of the PR - MinecraftForge/FML@10ac2a4fd972e923a60d23d10e8f297b8584f565 Fix itemCtorArgs javadoc in registerBlock - MinecraftForge/FML@86f70d37a40bbeaf7c389a14adcd8311ba5584df Patch TracingPrintStream to handle Kotlin IO. - kinglemming: - Adjusts OreDictionary to prevent invalid registrations. - Getting Ore Names for a non-existent ore will no longer automatically add that Name to the list nor generate an ID. - - Tweaks a warning message in the FluidContainerRegistry. No functionality change. - - Signed-off-by: King Lemming - LexManos: - Revert KL's change, requesting a ore WILL register it. - - Registering like this and returning a new empty list allows for modders to register their recipes and such without requiring to be executed after someone actually adds an item. If handled properly this allows for more flexible load orders, and more responsive code. - kinglemming: - Adds some new Ore querying functionality. - - Also attempts to size initial Hashmaps in a logical manner. - - Signed-off-by: King Lemming - cpw: - Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker. - - (cherry picked from commit de066a86da281d381b0e3ab9e83682720327049c) - - Conflicts: - patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch - patches/minecraft/net/minecraft/nbt/NBTTagList.java.patch - cpw: Verify that the fluid registry doesn't contain "junk" fluids thru reflection. - cpw: MinecraftForge/FML@8f9e3a7e30c8cc436dcb8d94b18b4634e0376339 Exceptions during construction phase should not propogate and cause an immediate crash. Closes #638 - cpw: Change logging to avoid the String.format bug. Closes #1809 - cpw: Actually use the override constraint in ticket requests. Closes #1802 - cpw: - Reformat ItemArmor$ArmorMaterial.getBaseItem to use an if/then/else structure. The switch - causes the generation of an internal class which may derp custom armor addition. - Closes #1799 - cpw: Make FluidStack hold a delegate for the fluid. This can then float based on what is "live" at present. - cpw: Fix static initializer derp. - cpw: Replace the OLD fluid in the fluidID map, not the new one.. - cpw: - Expose the fluid that a block was constructed with, useful for 'non-default' - configuration of fluidblocks. Shouldn't be used outside of this purpose. - cpw: MinecraftForge/FML@d14d1a8fea4c9242c944079ab8e4cdd516dfce4c Update to use the inherited jar format. Simplifies a lot.. - cpw: - MinecraftForge/FML@a39482c4b7ac2883f821619b47ff31e0b6e74b29 Splash screen implementation - MinecraftForge/FML@01fea095cdcd80c2ae9f0ebfd1c72242b3f2dbf8 Merge branch '1.7.10-load-progress' of github.com:RainWarrior/FML into 1.7.10 - MinecraftForge/FML@364b4bbbb0d4d168f9a63fa62a09e4e2fa213039 Call some loader stuffs - MinecraftForge/FML@61a891280d15f9f17e28bf86a427f32de5a8983e Make sure to close the splash screen if there's gonna be an error display - fry: - MinecraftForge/FML@5785a9c9e8d76b91a03ed1f9791aeee1cb7ea00b Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645 - MinecraftForge/FML@bd117be9c3e3919f3c29538cde80e3eb8fa48368 Correctly track exceptions thrown in the loading screen rendering thread - cpw: - MinecraftForge/FML@36688e781aae67fb1e4e7047acf689edeeac7ddb Add in resource reloading to the bar. Tidy up some of the labels a bit. - MinecraftForge/FML@a1dc465a55612ecdd44e6cde3adc0f1d53c6d97b More progress bar action! - MinecraftForge/FML@bfcbf4ef4366fd3d8bfd20adafb63a857bb0dd53 More progress bar hooks - MinecraftForge/FML@a6670c415ee97e771020921e00773c4c15e7512e Thread errors should be correctly displayed in the crash report now - MinecraftForge/FML@9a16d26186d27029cae32a19c09ddf48f7cba22e fixed bar text positioning - MinecraftForge/FML@0059c630281b7105c0532d2dba1bec27cf0323b2 Track mipmaps and texture upload - MinecraftForge/FML@ef5f809752e87e369235e98a63027e9347185cd9 Fix broken log message in vanilla. - cpw: - MinecraftForge/FML@4fe7b469b5ba156d4a786cd9e105b18cca7c271a Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now. - MinecraftForge/FML@31ae43590a2ba771d69b6c6513bcd5fe87ae8f8f Fix trying to close the screen during error. - cpw: MinecraftForge/FML@94821fac98e64d9b8ad7434ed23a621850a8e11c Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json - cpw: MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. - cpw: MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request #650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. - fry: - Updated FML: - MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. - MinecraftForge/FML@adcf2247c69f68415033a3c0b2c527053733514c Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack - MinecraftForge/FML@91338433fa74e782e237643632de2cc5e17ee280 Add classloader exclusion for ASM - MinecraftForge/FML@7c10b93a2ded2799d41b73b67a2766c31e992d8a Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651 - MinecraftForge/FML@8ccfa24764a3f4854f5334c0da1224286175e13b Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10 - MinecraftForge/FML@b2650a0bdb7d69010a55de518e76591a6c417e87 Optifine can tell us when they're ready for the new splash screen. - MinecraftForge/FML@02a5a58a1cbb25cd3baecf1535950e4780b7810f Fix the ordering of the messages, so they make sense now. - MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. - MinecraftForge/FML@5dbb481732bf4bcf8b0c5c02806051a933e6587e Eliminated texture name allocation race condition - MinecraftForge/FML@450b82ca0e13cf889a42eeb198b67115a4851031 Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed - cpw: MinecraftForge/FML@0b84b6aa297bdf6ab9f010e340f286442cb242dc Expose the state of the loader - cpw: - Attempt to fix the slow loading problem. Instead of forcing the main thread to wait around - on every call to processWindowMessages, we will simply skip it, if the mutex is already - claimed by the display thread. This should fix slow loading issues seen by some with - the new loading screen. - cpw: Hardcode the FML version in-game as a specific value. - cpw: Strip control codes in progress bar messages. They cause crashes sometimes. - cpw: - Clean up transformers a bit. Can't use COMPUTE_FRAMES even though it's required - the game refuses to even - run if I do. Note for j8: when we force Java8 classes, all coremods will need a thorough overhaul - the - current way we do things is not sustainable when Java8 becomes the universal norm. - cpw: - Add in an ItemStackHolder - a way to inject ItemStacks without having to have complex lookup code everywhere. - - Example: https://gist.github.com/cpw/9af398451a20459ac263 - cpw: Bump minor version # to 2 because of the fluid changes (mirroring what happening in 1.7.10) - -Build 1.7.10-10.13.3.1420-1.7.10: - cpw: - Add in an ItemStackHolder - a way to inject ItemStacks without having to have complex lookup code everywhere. - - Example: https://gist.github.com/cpw/9af398451a20459ac263 - -Build 1.8-11.14.1.1419: - LexManos: Fixed damage reduction rate of vanilla armor incorrectly scaling with armor's current durability. - -Build 1.8-11.14.1.1418: - AlgorithmX2: Fix Partial Face Lighting on Top/Bottom Faces ; Vanilla MC-80148 - -Build 1.8-11.14.1.1417: - LexManos: Force netty downgrade on dedicated server to match client. Netty bug: https://github.com/netty/netty/issues/2302 Closes #1848 - -Build 1.8-11.14.1.1416: - LexManos: Fixed command exploit with C12 - -Build 1.8-11.14.1.1415: - LexManos: Fixes MC-75630 - Exploit with signs and command blocks - -Build 1.8-11.14.1.1414: - LexManos: Finish loading screen before going fullscreen. Closes MinecraftForge/FML#662 - -Build 1.8-11.14.1.1413: - LexManos: Loosen up ServerChatEvent to support IChatComponent Closes #1893 - LexManos: Cleanup a lot of spammy output. Everything hidden behind environment flags now. Scale anvil image down 50% - LexManos: Attempt to disable the new splash screen if there are errors detected finishing up. Print a slightly more helpful error message. - -Build 1.8-11.14.1.1412: - me: Add true support for unicode fonts - -Build 1.8-11.14.1.1411: - diesieben07: Fix crash when texture loading throws RuntimeException without message - -Build 1.8-11.14.1.1410: - xxt1g3lxx.xxt1g3lxx: Changed forge command tab completion to use getListOfStringsMatchingLastWord() - -Build 1.8-11.14.1.1409: - xxt1g3lxx.xxt1g3lxx: Added tab completion - -Build 1.7.10-10.13.3.1408-1.7.10: - cpw: Strip control codes in progress bar messages. They cause crashes sometimes. - cpw: - Clean up transformers a bit. Can't use COMPUTE_FRAMES even though it's required - the game refuses to even - run if I do. Note for j8: when we force Java8 classes, all coremods will need a thorough overhaul - the - current way we do things is not sustainable when Java8 becomes the universal norm. - -Build 1.7.10-10.13.3.1407-1.7.10: - cpw: Hardcode the FML version in-game as a specific value. - -Build 1.7.10-10.13.3.1406-1.7.10: - cpw: Merged FML into Forge's repo. FML is no longer developed seperatly. - -Build 1.8-11.14.1.1405: - cpw: Merged FML into Forge's repo. FML is no longer developed seperatly. - -Build 1.8-11.14.1.1404: - tmtravlrsmail: - Initialized the Nether Fortress chest loot - - Forced the nether fortress chest loot to initialize in ChestGenHooks - like the other types. - - Changed tabs to spaces. Silly Eclipse. - -Build 1.7.10-10.13.3.1403-1.7.10: - fry: - Updated FML: - MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. - MinecraftForge/FML@adcf2247c69f68415033a3c0b2c527053733514c Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack - MinecraftForge/FML@91338433fa74e782e237643632de2cc5e17ee280 Add classloader exclusion for ASM - MinecraftForge/FML@7c10b93a2ded2799d41b73b67a2766c31e992d8a Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651 - MinecraftForge/FML@8ccfa24764a3f4854f5334c0da1224286175e13b Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10 - MinecraftForge/FML@b2650a0bdb7d69010a55de518e76591a6c417e87 Optifine can tell us when they're ready for the new splash screen. - MinecraftForge/FML@02a5a58a1cbb25cd3baecf1535950e4780b7810f Fix the ordering of the messages, so they make sense now. - MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. - MinecraftForge/FML@5dbb481732bf4bcf8b0c5c02806051a933e6587e Eliminated texture name allocation race condition - MinecraftForge/FML@450b82ca0e13cf889a42eeb198b67115a4851031 Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed - cpw: MinecraftForge/FML@0b84b6aa297bdf6ab9f010e340f286442cb242dc Expose the state of the loader - -Build 1.8-11.14.1.1402: - silfadur: Added hook for IPerspectiveAwareModel in RenderItem.renderItemIntoGUI for ItemCameraTransforms.TransformType.GUI - -Build 1.7.10-10.13.3.1401-1710ls: - fry: - Updated FML: - MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. - MinecraftForge/FML@adcf2247c69f68415033a3c0b2c527053733514c Loading screen: moved config file to the standard config directory; added the option to load textures from the custom resource pack - MinecraftForge/FML@91338433fa74e782e237643632de2cc5e17ee280 Add classloader exclusion for ASM - MinecraftForge/FML@7c10b93a2ded2799d41b73b67a2766c31e992d8a Synchronize the available libraries. Turns out we've been forcing a newer apache commons-lang(3.2.1) for a long time, also sync the dev guava - we've been forcing 17 for a long time too. Bumping commons-lang to 3.3.2 since that's what Mojang are shipping with 1.8. It has no observable ill effects Closes MinecraftForge/FML#651 - MinecraftForge/FML@8ccfa24764a3f4854f5334c0da1224286175e13b Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10 - MinecraftForge/FML@b2650a0bdb7d69010a55de518e76591a6c417e87 Optifine can tell us when they're ready for the new splash screen. - MinecraftForge/FML@02a5a58a1cbb25cd3baecf1535950e4780b7810f Fix the ordering of the messages, so they make sense now. - MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request MinecraftForge/FML#650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. - MinecraftForge/FML@5dbb481732bf4bcf8b0c5c02806051a933e6587e Eliminated texture name allocation race condition - MinecraftForge/FML@450b82ca0e13cf889a42eeb198b67115a4851031 Updated default forge logo to animated gif; reverted config folder resolution to Minecraft class due to Loader not being initialized at the point it's needed - -Build 1.7.10-10.13.3.1400-1.7.10: - cpw: MinecraftForge/FML@dda431353953457608c38aacb060ef82ddc88883 Revert "Merge pull request #650 from luacs1998/1.7.10" This undoes the seriously broken change from Sponge to support Mixins, that breaks a wide variety of coremods. Given the widespread incompatibility it introduces, it won't be re-added at 1.7.10. - -Build 1.7.10-10.13.3.1399-1.7.10: - cpw: - MinecraftForge/FML@a39482c4b7ac2883f821619b47ff31e0b6e74b29 Splash screen implementation - MinecraftForge/FML@01fea095cdcd80c2ae9f0ebfd1c72242b3f2dbf8 Merge branch '1.7.10-load-progress' of github.com:RainWarrior/FML into 1.7.10 - MinecraftForge/FML@364b4bbbb0d4d168f9a63fa62a09e4e2fa213039 Call some loader stuffs - MinecraftForge/FML@61a891280d15f9f17e28bf86a427f32de5a8983e Make sure to close the splash screen if there's gonna be an error display - fry: - MinecraftForge/FML@5785a9c9e8d76b91a03ed1f9791aeee1cb7ea00b Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645 - MinecraftForge/FML@bd117be9c3e3919f3c29538cde80e3eb8fa48368 Correctly track exceptions thrown in the loading screen rendering thread - cpw: - MinecraftForge/FML@36688e781aae67fb1e4e7047acf689edeeac7ddb Add in resource reloading to the bar. Tidy up some of the labels a bit. - MinecraftForge/FML@a1dc465a55612ecdd44e6cde3adc0f1d53c6d97b More progress bar action! - MinecraftForge/FML@bfcbf4ef4366fd3d8bfd20adafb63a857bb0dd53 More progress bar hooks - MinecraftForge/FML@a6670c415ee97e771020921e00773c4c15e7512e Thread errors should be correctly displayed in the crash report now - MinecraftForge/FML@9a16d26186d27029cae32a19c09ddf48f7cba22e fixed bar text positioning - MinecraftForge/FML@0059c630281b7105c0532d2dba1bec27cf0323b2 Track mipmaps and texture upload - MinecraftForge/FML@ef5f809752e87e369235e98a63027e9347185cd9 Fix broken log message in vanilla. - cpw: - MinecraftForge/FML@4fe7b469b5ba156d4a786cd9e105b18cca7c271a Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now. - MinecraftForge/FML@31ae43590a2ba771d69b6c6513bcd5fe87ae8f8f Fix trying to close the screen during error. - cpw: MinecraftForge/FML@94821fac98e64d9b8ad7434ed23a621850a8e11c Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json - cpw: MinecraftForge/FML@2ed00c4da0ee76eb15e28eb8ee2c07a3096155c2 Splash progress screen will not load in the presence of optifine anymore. - -Build 1.8-11.14.1.1398: - Zaggy1024: Fixed a bug which caused the light level not to update when a block implements Block.getLightValue(IBlockAccess, BlockPos) to change the light value for different block states. - -Build 1.8-11.14.1.1397: - Parker Young: Fixes MC-52974: Host's skin doesn't load in LAN - -Build 1.8-11.14.1.1396: - Zaggy1024: Removed @SideOnly(Side.CLIENT) from EnumWorldBlockLayer. - -Build 1.7.10-10.13.3.1395-1710ls: - cpw: MinecraftForge/FML@94821fac98e64d9b8ad7434ed23a621850a8e11c Add a config file that lets you add additional soft dependencies at runtime - injectedDependencies.json - -Build 1.7.10-10.13.3.1394-1710ls: - cpw: - MinecraftForge/FML@4fe7b469b5ba156d4a786cd9e105b18cca7c271a Loading screen: logo rotation is now optional; initial support for animated textures - animation rate is fixed for now. - MinecraftForge/FML@31ae43590a2ba771d69b6c6513bcd5fe87ae8f8f Fix trying to close the screen during error. - -Build 1.7.10-10.13.3.1393-1710ls: - cpw: - MinecraftForge/FML@36688e781aae67fb1e4e7047acf689edeeac7ddb Add in resource reloading to the bar. Tidy up some of the labels a bit. - MinecraftForge/FML@a1dc465a55612ecdd44e6cde3adc0f1d53c6d97b More progress bar action! - MinecraftForge/FML@bfcbf4ef4366fd3d8bfd20adafb63a857bb0dd53 More progress bar hooks - MinecraftForge/FML@a6670c415ee97e771020921e00773c4c15e7512e Thread errors should be correctly displayed in the crash report now - MinecraftForge/FML@9a16d26186d27029cae32a19c09ddf48f7cba22e fixed bar text positioning - MinecraftForge/FML@0059c630281b7105c0532d2dba1bec27cf0323b2 Track mipmaps and texture upload - MinecraftForge/FML@ef5f809752e87e369235e98a63027e9347185cd9 Fix broken log message in vanilla. - -Build 1.8-11.14.1.1392: - LexManos: Cleanup RenderEntityItem patch, fixes Z-fighting issue in EntityItems. Closes #1824 - -Build 1.7.10-10.13.3.1391-1710ls: - fry: - MinecraftForge/FML@5785a9c9e8d76b91a03ed1f9791aeee1cb7ea00b Fix up multiple injections of cmdline files via versionspecificmoddir. Closes #645 - MinecraftForge/FML@bd117be9c3e3919f3c29538cde80e3eb8fa48368 Correctly track exceptions thrown in the loading screen rendering thread - -Build 1.8-11.14.1.1390: - jadran.kotnik: - Extracted the creation of RegionRenderCache into a method. - Classes extending RegionRenderCache can change the behavior of the cache, allowing to visually change blocks (schematics etc). - -Build 1.7.10-10.13.3.1388-1.7.10: - cpw: MinecraftForge/FML@d14d1a8fea4c9242c944079ab8e4cdd516dfce4c Update to use the inherited jar format. Simplifies a lot.. - -Build 1.7.10-10.13.3.1385-1.7.10: - cpw: - Expose the fluid that a block was constructed with, useful for 'non-default' - configuration of fluidblocks. Shouldn't be used outside of this purpose. - -Build 1.7.10-10.13.3.1384-1.7.10: - cpw: Replace the OLD fluid in the fluidID map, not the new one.. - -Build 1.7.10-10.13.3.1383-1.7.10: - cpw: Fix static initializer derp. - -Build 1.7.10-10.13.3.1382-1.7.10: - cpw: Make FluidStack hold a delegate for the fluid. This can then float based on what is "live" at present. - -Build 1.7.10-10.13.3.1381-1.7.10: - cpw: - Reformat ItemArmor$ArmorMaterial.getBaseItem to use an if/then/else structure. The switch - causes the generation of an internal class which may derp custom armor addition. - Closes #1799 - -Build 1.7.10-10.13.3.1380-1.7.10: - cpw: Actually use the override constraint in ticket requests. Closes #1802 - -Build 1.7.10-10.13.3.1379-1.7.10: - cpw: Change logging to avoid the String.format bug. Closes #1809 - -Build 1.7.10-10.13.3.1378-1.7.10: - cpw: MinecraftForge/FML@8f9e3a7e30c8cc436dcb8d94b18b4634e0376339 Exceptions during construction phase should not propogate and cause an immediate crash. Closes #638 - -Build 1.7.10-10.13.3.1377-1.7.10: - cpw: Verify that the fluid registry doesn't contain "junk" fluids thru reflection. - -Build 1.7.10-10.13.3.1376-1.7.10: - cpw: - Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker. - - (cherry picked from commit de066a86da281d381b0e3ab9e83682720327049c) - - Conflicts: - patches/minecraft/net/minecraft/nbt/CompressedStreamTools.java.patch - patches/minecraft/net/minecraft/nbt/NBTTagList.java.patch - -Build 1.8-11.14.1.1375: - LexManos: Fixed NBTSizeTracker missing a lot of data being read. Also made new NBT object allocation claim 32-bits in the size tracker. - -Build 1.7.10-10.13.3.1374-1.7.10: - kinglemming: - Adds some new Ore querying functionality. - - Also attempts to size initial Hashmaps in a logical manner. - - Signed-off-by: King Lemming - -Build 1.7.10-10.13.3.1373-1.7.10: - LexManos: - Revert KL's change, requesting a ore WILL register it. - - Registering like this and returning a new empty list allows for modders to register their recipes and such without requiring to be executed after someone actually adds an item. If handled properly this allows for more flexible load orders, and more responsive code. - -Build 1.7.10-10.13.3.1372-1.7.10: - kinglemming: - Adjusts OreDictionary to prevent invalid registrations. - Getting Ore Names for a non-existent ore will no longer automatically add that Name to the list nor generate an ID. - - Tweaks a warning message in the FluidContainerRegistry. No functionality change. - - Signed-off-by: King Lemming - -Build 1.8-11.14.1.1371: - cpw: - MinecraftForge/FML@888e489394e52abdfb349fbfbd7f8e153b5af124 Allow registering custom language adapters. - MinecraftForge/FML@906f94ca143f756f40404fde38af32b2481d0673 Some tidyup of the PR - MinecraftForge/FML@1c025f18433df868859022eea8e6d198444736de Patch TracingPrintStream to handle Kotlin IO. - -Build 1.7.10-10.13.3.1370-1.7.10: - cpw: - MinecraftForge/FML@dfce4cd8d023a546c4c21405db182b8ddcd38633 Allow registering custom language adapters. - MinecraftForge/FML@9fecd72cf0bd483ae7bc2ce821ae6b2f5e5b9c65 Some tidyup of the PR - MinecraftForge/FML@10ac2a4fd972e923a60d23d10e8f297b8584f565 Fix itemCtorArgs javadoc in registerBlock - MinecraftForge/FML@86f70d37a40bbeaf7c389a14adcd8311ba5584df Patch TracingPrintStream to handle Kotlin IO. - -Build 1.7.10-10.13.3.1369-1.7.10: - cpw: And handle the null case in the constructor itself. Closes #1794 (again) - -Build 1.7.10-10.13.3.1368-1.7.10: - cpw: Fix NPE - Closes #1794 - -Build 1.7.10-10.13.3.1367-1.7.10: - cpw: - Fluids are now tracked internally by mod. This allows for the server and the world to specify a "default" - in the case of a possible alternative fluid implementation. If you always called registerFluid, things - should work pretty seamlessly, but if you didn't (gating with an isFluidRegistered check for example) - you should change to register anyway. This way, even if you're not default in the overall instance, you may - become default if you're the only mod present on a server, for example, or in a world save. - - This should radically decrease the mixups caused by mod load ordering problems, and other issues around fluid - tracking. - -Build 1.7.10-10.13.3.1366-1.7.10: - cpw: MinecraftForge/FML@0da1263ff9ede99267c03728a1c823b8056d5e44 Enhance error output for bad textures a bit more and try and capture more types of error.. - -Build 1.7.10-10.13.3.1365-1.7.10: - cpw: MinecraftForge/FML@be5ec06e3144d55a03d125f3ce364eade3771f4f Cleaning up the missing resource stack spam, and condensing the information into a usefully understandable format. - -Build 1.7.10-10.13.3.1364-1.7.10: - cpw: - MinecraftForge/FML@ce791cb1f2cf983ef77b1e5c4028ddefab394062 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors. - MinecraftForge/FML@852710962a9b6d7c8e2ca188c715eebb2da44c2a Clean up some dead code - -Build 1.7.10-10.13.3.1363-1.7.10: - kinglemming: - Adds a warning to the FluidContainerRegistry when a mod does something stupid! Also denies the registration. - - Signed-off-by: King Lemming - -Build 1.7.10-10.13.3.1362-1.7.10: - kinglemming: - Fixes FluidContainerRegistry properly - no more corner case where client/server mods disagree. - - Also clarifies the 2x Fluid registration error message somewhat. - - Signed-off-by: King Lemming - -Build 1.8-11.14.1.1361: - LexManos: MinecraftForge/FML@4a753227adb805d29f3bf245c3f8427193c35544 Rework EventSubscriptionTransformer to bake @Cancelable and @HasResult values, should increase EventBus performance even more by removing logic from Event constructors. - -Build 1.7.10-10.13.3.1360-1.7.10: - kinglemming: - Fixes #1782 - - Signed-off-by: King Lemming - -Build 1.8-11.14.1.1359: - Abrar Syed: changed run configs to GradleStarts - -Build 1.7.10-10.13.3.1358-1.7.10: - me: - Fix FluidRegsitry.registerFluid - - FluidRegistry: - ```java - static BiMap fluids = HashBiMap.create(); - static BiMap fluidIDs = HashBiMap.create(); - ... - public static boolean registerFluid(Fluid fluid) - { - if (fluidIDs.containsKey(fluid.getName())) - ^^^^^^^ - ``` - There is definitely should be fluids instead fluidIDs. This mistake broke many mods. - -Build 1.8-11.14.1.1357: - LexManos: - Updated FML: - MinecraftForge/FML@c8160311d580f2dfccdf796a5243e16844787cb6 Stop IllegalFormatConversionException thrown if @Mod has flagged client-only or server-only - MinecraftForge/FML@9a894952afb526436649f608f7af5992b97f044c Merge pull request #627 from GotoLink/patch-1 - MinecraftForge/FML@40faac64520d1a197f08eaa9a0f850e7df43359a Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. - -Build 1.7.10-10.13.3.1356-1.7.10: - LexManos: MinecraftForge/FML@31cf2a9cab6d1977d31436220d9612eaa13d4e0f Remove J7 only constructor in EnhancedRuntimeException, J6 compiling compatibility restored. - LexManos: Restore binary compatibility issues in FluidRegistry caused by recent changes. - -Build 1.7.10-10.13.3.1355-1.7.10: - cpw: - Removed fluidID from ItemStack. - - This fixes a rather huge issue where FluidStacks on the client could be desynced if a modder was unaware of it. - - This is a breaking change but can be mitigated with a transformer to the getter getFluidID(). - - Signed-off-by: King Lemming - cpw: Add in a fluidid transformer - cpw: Fix formatting - cpw: - Allow for duplicate Fluid Blocks. It's annoying to be sure but just as with the OreDictionary, we'll have to handle it. - - Signed-off-by: King Lemming - cpw: - You shouldn't be creating FluidStacks from unregistered Fluids. Warn clearly on failed registrations, and make a useful log message for failed fluidstack - creations. Should help a lot with tracking down broken mods that are doing this wrongly. - -Build 1.8-11.14.1.1354: - ohai.iChun: Readded but deprecated the old RenderPlayerEvent that were deleted. Sorry, Lex. - -Build 1.8-11.14.1.1353: - ohai.iChun: - Reimplement RenderPlayerEvent that was removed in the port to 1.8 from 1.7.10. - RenderPlayerEvent.Specials was removed because the special effects are done in the LayerRenderer now. - -Build 1.7.10-10.13.2.1352-1.7.10: - cpw: - Forge really should have always supported the concept of an "exact spawn". Individual world providers can still - change this behaviour of course, but for default maps it makes sense to support it as a config option. - -Build 1.7.10-10.13.2.1351-1.7.10: - cpw: - MinecraftForge/FML@12ccf9cf49b76140841cdc5a459422ae4781de1a Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse. - MinecraftForge/FML@e8cd368da30661ed2898fff232e2db787edcbdcc It's an IllegalState not an IllegalArgument *sigh* - MinecraftForge/FML@2be9c743424c92f8799a6af1d59d60edd65e6bf0 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it - MinecraftForge/FML@7d8804cf656081d1570068f52e9bfc7140b21a65 You can't setAction to BLOCKONLY - MinecraftForge/FML@c73861efe67594ee9995bc93744cab06bd6647d1 Cherry-pick 01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 - MinecraftForge/FML@94c45b48c1265e7c4f60f591d413fa545787d354 Fix json cache crash, handle the file much more cleanly. Probably an MC JIRA since it's a vanilla bug. Closes #619 - -Build 1.8-11.14.1.1350: - LexManos: - Updated FML: - MinecraftForge/FML@1de3bf733aef754f15de55006b1750376871feb0 Fix FML's package for net.miencraftforge on maven. Fixes uploading of new builds. Note: 1.7.10 builds are bug fixes only while FML/Forge for 1.8 stabelizes. - MinecraftForge/FML@05ecefb53857ecc1dc52d4a577ed593c26da9659 Update to ASM5 for Java 8 support - MinecraftForge/FML@1112c455b9758c38eab385f48578bad17c0180f9 Merge pull request #595 from Grinch/master - LexManos: Fixed potential NPEs in Structure code caused by componenets not being able to load. - cpw: - MinecraftForge/FML@6b0ae369eb9b8cf89eb9d53fe997a6e5ef222093 Try and improve performance of the registry by avoiding superType.cast. - MinecraftForge/FML@dfebcafd49550b8c3f90c6c028ef0d7f3a13e607 Something I meant to add a long time ago, but it got overlooked. My apologies. Presend the (int) dimension ID in the serverhello packet. This should be 100% backward compatible with existing servers but bumping a server to this version will allow clients with this version as well to now login in dimensions outside the byte range. Probably fixes a bunch of mods that add dimensions. - MinecraftForge/FML@6011419fa055c1375d05189f9bf0d86705c9c0ec Clean up my patch. Terrible person I am.. - MinecraftForge/FML@c6bbd0e82de3d8f7993d70aa7be3f883b3afbc47 Forgot that I need a noarg ctor. I'm so rusty. - MinecraftForge/FML@6edc1635de163c41b6b5dfe02bee13d6a9c5aa4d Need to load the dimension from disk - do it without filling out the player so that the normal player loading (including events) works properly - cpw: - MinecraftForge/FML@4ca6f6e19f3c3147fcf48c58669f55478a9a1345 What a dumb oversight. One needs to copy the active substitution set to the active gamedata. Doesn't work well otherwise. - MinecraftForge/FML@6f6cec96be73b4c94999cf60dc00741f3f3c2cc2 Substitutions need to be activated when they're registered, otherwise they won't appear in world, ever. - MinecraftForge/FML@13ac015f0c36b8e2091ae332c556be315429f4c8 Change iterator behaviour for the registry - include substitutions in the standard iterator, so that vanilla MC methods visit them (so they can get textures etc). The fml special one only visits the absolute set, used mostly for sanity checking and serialization. - LexManos: - MinecraftForge/FML@24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d Enhance output of common FML errors in crash reports and server GUI. - Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions. - cpw: Experimental "fix" for the weird rendering in the Acheivements screen. Thanks skyboy for spotting this. - cpw: - Comment on previous commit fix - it worked. Thanks to skyboy and tterrag for investigating and verifying. - A chest as an acheivement icon will recreate the original problem, for note. - cpw: - Update FML - merge the 1.7.10 changes in to forge @ 1.8. Wow git is (sorta) AWESOME! - - MinecraftForge/FML@6b0ae369eb9b8cf89eb9d53fe997a6e5ef222093 Try and improve performance of the registry by avoiding superType.cast. - MinecraftForge/FML@dfebcafd49550b8c3f90c6c028ef0d7f3a13e607 Something I meant to add a long time ago, but it got overlooked. My apologies. Presend the (int) dimension ID in the serverhello packet. This should be 100% backward compatible with existing servers but bumping a server to this version will allow clients with this version as well to now login in dimensions outside the byte range. Probably fixes a bunch of mods that add dimensions. - MinecraftForge/FML@6011419fa055c1375d05189f9bf0d86705c9c0ec Clean up my patch. Terrible person I am.. - MinecraftForge/FML@c6bbd0e82de3d8f7993d70aa7be3f883b3afbc47 Forgot that I need a noarg ctor. I'm so rusty. - MinecraftForge/FML@6edc1635de163c41b6b5dfe02bee13d6a9c5aa4d Need to load the dimension from disk - do it without filling out the player so that the normal player loading (including events) works properly - MinecraftForge/FML@4ca6f6e19f3c3147fcf48c58669f55478a9a1345 What a dumb oversight. One needs to copy the active substitution set to the active gamedata. Doesn't work well otherwise. - MinecraftForge/FML@6f6cec96be73b4c94999cf60dc00741f3f3c2cc2 Substitutions need to be activated when they're registered, otherwise they won't appear in world, ever. - MinecraftForge/FML@13ac015f0c36b8e2091ae332c556be315429f4c8 Change iterator behaviour for the registry - include substitutions in the standard iterator, so that vanilla MC methods visit them (so they can get textures etc). The fml special one only visits the absolute set, used mostly for sanity checking and serialization. - MinecraftForge/FML@24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d Enhance output of common FML errors in crash reports and server GUI. - MinecraftForge/FML@12ccf9cf49b76140841cdc5a459422ae4781de1a Rather than try to fall back to the backup level.dat in case of weirdness in the ID map, just fail hard. There is probably a serious modder derp in this case and there's nothing FML can do to recover the situation except avoid making it worse. - MinecraftForge/FML@e8cd368da30661ed2898fff232e2db787edcbdcc It's an IllegalState not an IllegalArgument *sigh* - MinecraftForge/FML@2be9c743424c92f8799a6af1d59d60edd65e6bf0 And fix itemblocks being removed, leaving behind a residual block. This is a legitimate action - use the missing mapping event to let the mod tell us about it - MinecraftForge/FML@7d8804cf656081d1570068f52e9bfc7140b21a65 You can't setAction to BLOCKONLY - MinecraftForge/FML@13df640d9d4516219b07778edd76efd2643019f6 Pull in a lot of the FML tweaks from 1.7 to 1.8 - MinecraftForge/FML@447beaa99ec828fb83796185d07c72ea28b056c9 Merge remote-tracking branch 'origin/1.7.10' - -Build 1.8-11.14.1.1349: - cpw: - MinecraftForge/FML@2afd55ab825fad3b07073c474cdb96b348701084 Fix scala mods, Closes #621 - MinecraftForge/FML@c541b08ef68161f437eeb7b22eabe27b20eebf55 Merge pull request #622 from diesieben07/scala-fix - MinecraftForge/FML@d5021417dd10f36dc3d1b68e4975eb91f7f46e68 Forgot the register handling bit. Registration should work now.. - MinecraftForge/FML@5a65c6568699acaade8243040d8552b1f2e2e28f OK, this is finally actually working, I think... - -Build 1.8-11.14.1.1348: - fry: Fixed mipmapping not being enabled by expanding 1x1 texture - -Build 1.7.10-10.13.2.1347-1.7.10: - cpw: - Comment on previous commit fix - it worked. Thanks to skyboy and tterrag for investigating and verifying. - A chest as an acheivement icon will recreate the original problem, for note. - -Build 1.7.10-10.13.2.1346-1.7.10: - cpw: Experimental "fix" for the weird rendering in the Acheivements screen. Thanks skyboy for spotting this. - -Build 1.8-11.14.1.1344: - LexManos: - Updated FML: - MinecraftForge/FML@2a268cd5664b6562a4bf2a953a6a93fd8e111bd2 Improve mod list GUI, add sort and search - MinecraftForge/FML@951fc2d9fd7e7970c86accb1be095a24f7bfaf18 First attempt at making FMLControlledRegistry something a bit more generic than just blocks/items. - MinecraftForge/FML@410582222d9ba15d42dc47db0d3d6a84aeac2d22 Merge pull request #614 from tterrag1098/betterModList - MinecraftForge/FML@ba0b176430cdbc3573643a6e21d47013cfd1f0e0 Fix ModDiscoverer ignoring inner classes. - MinecraftForge/FML@9cc313eab9939724786f833f511a87c9957dbc72 Merge pull request #617 from diesieben07/innerclass-disc - MinecraftForge/FML@01aaa7dc97480b381ca0d192ec65016d7baeb747 Fix mods defined via --mods or --modListFile launch args not being searched for coremods. #560 - MinecraftForge/FML@8cecc47b85db68e8e69f45641b1d843509dbe71d Merge pull request #620 from killjoy1221/extra-coremod-fix - MinecraftForge/FML@38d9a5f444815810dec3607f5b3b7ff1ac513d4c Enhance output of common FML errors in crash reports and server - - Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions.GUI. - -Build 1.7.10-10.13.2.1343-1.7.10: - LexManos: - MinecraftForge/FML@24cb4a42c4e4bddde95c0e49d1f8b8bcc20c626d Enhance output of common FML errors in crash reports and server GUI. - Force load anonymous minecraft classes used in crash reports. This prevents some crashes being hiddedn behind class definiton exceptions. - -Build 1.7.10-10.13.2.1342-1.7.10: - cpw: - MinecraftForge/FML@4ca6f6e19f3c3147fcf48c58669f55478a9a1345 What a dumb oversight. One needs to copy the active substitution set to the active gamedata. Doesn't work well otherwise. - MinecraftForge/FML@6f6cec96be73b4c94999cf60dc00741f3f3c2cc2 Substitutions need to be activated when they're registered, otherwise they won't appear in world, ever. - MinecraftForge/FML@13ac015f0c36b8e2091ae332c556be315429f4c8 Change iterator behaviour for the registry - include substitutions in the standard iterator, so that vanilla MC methods visit them (so they can get textures etc). The fml special one only visits the absolute set, used mostly for sanity checking and serialization. - -Build 1.8-11.14.1.1341: - simonbarnes1: - Add getTileData() to TileEntity - - - The same idea as Entity.getEntityData() - -Build 1.7.10-10.13.2.1340-1.7.10: - cpw: - MinecraftForge/FML@6b0ae369eb9b8cf89eb9d53fe997a6e5ef222093 Try and improve performance of the registry by avoiding superType.cast. - MinecraftForge/FML@dfebcafd49550b8c3f90c6c028ef0d7f3a13e607 Something I meant to add a long time ago, but it got overlooked. My apologies. Presend the (int) dimension ID in the serverhello packet. This should be 100% backward compatible with existing servers but bumping a server to this version will allow clients with this version as well to now login in dimensions outside the byte range. Probably fixes a bunch of mods that add dimensions. - MinecraftForge/FML@6011419fa055c1375d05189f9bf0d86705c9c0ec Clean up my patch. Terrible person I am.. - MinecraftForge/FML@c6bbd0e82de3d8f7993d70aa7be3f883b3afbc47 Forgot that I need a noarg ctor. I'm so rusty. - MinecraftForge/FML@6edc1635de163c41b6b5dfe02bee13d6a9c5aa4d Need to load the dimension from disk - do it without filling out the player so that the normal player loading (including events) works properly - -Build 1.8-11.14.1.1339: - erlend: Added newVolume and newPitch to PlaySoundAtEntityEvent. Deprecated ForgeEventFactory.onPlaySoundAt, added replacement ForgeEventFactory.onPlaySoundAtEntity. - -Build 1.8-11.14.1.1338: - Geforce132: -Added EntityMountEvent. - -Build 1.8-11.14.1.1337: - diesieben07: Fix jukebox message being too low with forge - -Build 1.8-11.14.1.1336: - LexManos: - Updated FML: - MinecraftForge/FML@3e7ae47f8f5d642b256adbe8b3395bb40daf85da Fix Event Bus Access Issues - MinecraftForge/FML@c8e2a5f377ddf8a35cceda6a14697dbe8cad4ca8 Fixed WorldInfo properties not loaded - MinecraftForge/FML@7f96b2c69ab8a2ed07b5b786b3d679ea4c509121 Fix Debug packet logger on local memory connections. - -Build 1.8-11.14.1.1335: - robin: remove translation and add a note for contributors - -Build 1.8-11.14.1.1334: - erju01: Fixed enchanting table applying secondary enchs. - -Build 1.8-11.14.1.1333: - mnmiller1: Add NeighborNotiftyEvent. - -Build 1.8-11.14.1.1332: - tmtravlrsmail: - Added Nether Fortress chest to the ChestGenHooks - - I tried to follow the directions on - - https://github.com/MinecraftForge/MinecraftForge/wiki/If-you-want-to-contribute-to-Forge - - as best as I could. =) - - If anything is wrong, let me know and I'll change it! - clienthax: - Current spawner implementation checks the EntitySpawnPlacementRegistry hashmap to check where a entity should spawn - as there is no way to modify this without the use of reflection or a AT, you can not specify where you want your entity to spawn - adding this helper method will allow developers to specify where they want their entity to spawn. - - Signed-off-by: Clienthax - - Update EntitySpawnPlacementRegistry.java.patch - LexManos: Fix compile error in ClientHax's PR. - -Build 1.8-11.14.1.1329: - fry: Hopefully fix NPE during baking of empty vanilla item models - -Build 1.8-11.14.1.1328: - LexManos: Fire WorldEvent.Load for Client worlds. Closes #1719 - -Build 1.8-11.14.1.1327: - LexManos: Make Container.mergeItemStack respect Slot.isValidItem Closes #1630 - -Build 1.8-11.14.1.1326: - LexManos: Fix JukeBoxes not storing the inserted record. All TE's in minecraft are in net.minecraft.tileentity EXCEPT JukeBoxes. Closes #1633 Closes #1714 - -Build 1.8-11.14.1.1325: - LexManos: Fix NPEs in last commit. - -Build 1.8-11.14.1.1324: - LexManos: - Updated FML: - MinecraftForge/FML@c9cf3136c265b2e8e46eab102b2310a9312b8cfb New @Mod properties to define which environment to load the mod on. - clientSideOnly will only be loaded in the Client environment. - serverSideOnly will only be loaded in the Dedicated server environment. - Combine with acceptedMinecraftVersions to prevent users from loading the mod in the incorrect environment. - -Build 1.8-11.14.1.1323: - LexManos: - Updated FML: - MinecraftForge/FML@5eff40897545c9e6f597a202bc9e86c3b07761ad Filter more known libraries from potential mod canidates. - MinecraftForge/FML@feb4c436db27a249dd5190023edd38cb5884e90b Quiet ClassPatchManager debug spam by default. Reenable using -Dfml.debugClassPatchManager=true. - MinecraftForge/FML@41e806fa950839bf901ebf9c18d0c632a7c5538c Fix double decoding of UTF8 characters in lang files. - -Build 1.8-11.14.1.1322: - LexManos: Fixed using items on the wrong block client side caused by iChuns eyeheight update. - -Build 1.8-11.14.1.1321: - ohai.iChun: Reimplement variable eyeHeight for players which was removed in the 1.7 to 1.8 port. - -Build 1.8-11.14.1.1320: - fry: Removed event bus call from the ModelLoader - -Build 1.8-11.14.1.1319: - matthewprenger: Add the ability to add prefixes and suffixes to the player's display name. - LexManos: Add safty to URL detection in chat. Closes #1712 - -Build 1.8-11.14.1.1318: - fry: Added a default white texture; Fixed B3DLoader crashing when the brush has empty texture specified - fry: RenderItem can now use baked quad color - -Build 1.8-11.14.1.1317: - Parker Young: - Added ATs for EnumFacing - - This publics the VALUES array and HORIZONTALS array in EnumFacing, thus giving modders access to these arrays, much like ForgeDirection had. - -Build 1.8-11.14.1.1316: - fry: Attributes.put (de)normalization now works as intended - -Build 1.8-11.14.1.1315: - LexManos: Hold a weak reference to the Minecraft fake player object. Closes #1705 - -Build 1.8-11.14.1.1314: - matthewprenger: Minor tweak to UsernameCache to also cache usernames of offline players. - -Build 1.8-11.14.1.1313: - fry: Updated FML - -Build 1.8-11.14.1.1312: - fry: ModelRotation.getMatrix() now returns the correct matrix; fixed the application of custom transformations to vanilla models; fixed application of transformations to B3D models; fixed the culling of rotated vanilla models - -Build 1.8-11.14.1.1311: - fry: Alternative models work once again - -Build 1.8-11.14.1.1310: - fry: Updated FML - -Build 1.8-11.14.1.1309: - fry: fix ModelLoader.setCustomModelResourceLocation not storing same item with different metadata values - -Build 1.8-11.14.1.1308: - LexManos: Fixed debugging Dedicated server in Forge Dev workspace. - LexManos: Fixed being kicked from the server while swimming. - fry: - fixed NPE during loading of B3D models without textures/brushes. - changed default B3D color to have full opacity. - fry: Reworked vanilla texture resolution, hopefully fixes NPE bug in FaceBakery - fry: made renderLayer ThreadLocal, now it should hold correct value for use inside custom baked models - LexManos: Try a maven mirrior to fix build issues. - -Build 1.7.10-10.13.2.1307-1.7.10: - LexManos: Fixed potential NPEs in Structure code caused by componenets not being able to load. - -Build 1.8-11.14.1.1306: - LexManos: Fixed potential NPEs in Structure code caused by componenets not being able to load. Closes #1686 - -Build 1.8-11.14.1.1305: - LexManos: Fixed InitMapGenEvent's fire order so values are used. And added OCEAN_MONUMENT type. Closes #1681 - LexManos: Fixed BlockBush and BlockCrops not respecting custom soils. Closes #1683 - -Build 1.8-11.14.1.1303: - fry: Restore binary backwards compatibility - -Build 1.8-11.14.1.1302: - fry: ModelBakeEvent now has ModelLoader as an argument instead of ModelBakery; Added various static hooks to ModelLoader to allow registering model-related information before it's needed (prevents file-not-found errors on first baking pass); ModelLoader waits until ModelBakeEvent is done before showing any missing model exceptions; It's now possible to define models completely in-code (as illustrated by ModelBakeEventDebug). - -Build 1.8-11.14.1.1301: - LexManos: Bump version to 11.14.1 for next development cycle. - -Build 1.8-11.14.0.1299: - fry: Fixed tracking of UV locking state. Closes #1679 - -Build 1.8-11.14.0.1298: - LexManos: Fixed ItemFrames not having a model. Closes #1678 - LexManos: Updated FML: MinecraftForge/FML@22c9656196dbbea8ed983663d536c3ca272d7282 Reset S->C CustomPayload data after Write, allowing the same packet to be written multiple times. - -Build 1.8-11.14.0.1297: - LexManos: Fixed domain support in ArmorMaterial texture name. Closes #1675 - LexManos: Fixed Buttons not dropping anything when broken. Closes #1676 - -Build 1.8-11.14.0.1296: - LexManos: - Initial update to 1.8, Super beta. Most rendering related hooks are out due to major changes in 1.8. - - Some notes: - Almost all int x, int y, int z parameters have been changed to BlockPos class - ForgeDirection has been removed, replaced by net.minecraft.util.EnumFacing. - All FML classes have moved from packet cpw.mods.fml to net.minecraftforge.fml - Fluid Rendering has been disabled for the time being, to be re-evaulated and a test mod created for it. - Minecraft now uses a Model based system for rendering blocks and Items. The intention is to expand the model format to better suit modder's needed once it is evaulated. - As such, The model loaders from Forge have been removed, to be replaced by expanding vanilla's model format. - Metadata has been extracted out in Minecraft to IBlockState, which holds a list of properties instead of magic number metadata. DO NOT listen to the fearmongering, you can do EVERYTHING with block states you could previously with metadata. - Stencil Bits are disabled entirely by for the main Display, Modders must enable and recreate the FrameBuffer if they wish to use Stencil Bits. - LexManos: Fix local variable conflict in Forge patch and latest MCP mappings. - LexManos: Fix fog colors, Closes #1524 - LexManos: Fix acedential inversion causing some tress to not have leaves. Closes #1522 - LexManos: Fix creative picking a CommandBlock minecart returning wrong item. Closes #1523 - LexManos: Fixed crash with caomparators due to wrong position. Closes #1512 - LexManos: Fix inverted logic preventing blocks from breaking. - LexManos: Fix Entityies not taking damage correctly. Closes #1511 - LexManos: Fix wrong state being passed to Block.getDrops - LexManos: Fix potential NPE in Block.isToolEffective - LexManos: Update RecipeSorter for new 1.8 recipies. - LexManos: Fix destroy particles not being added. Closes #1528 - LexManos: Fix debug screen not showing grey background. Closes #1529 - LexManos: Fix not being able to place blocks in liquids, and related issues. - LexManos: - Updated FML: - MinecraftForge/FML@36644e97714b46dbbb24416febdde1332a3e753c Finalize modded handshakes in the World tick thread. Prevents potential CMEs when login event takes to long to fire. - LexManos: Fix interacting with entities. - LexManos: Fixed Entity extended properties init order. Closes #1532 - LexManos: Fixed Entities not being able to climb ladders, Closes #1535 - LexManos: Fixed snow layers not being able to stack more then twice. Closes #1534 - LexManos: Fix BlockPane's connection detection. - LexManos: Fixed vanilla bug where top part of double plants would flicker a tifferent texture before dissapearing. - LexManos: Fix NPE with BlockSnapshots that caused items with TileEntities to be used up in creative mode. - LexManos: Fixed vanilla issue where exceptions in World tasks would not be logged. - LexManos: Fixed blocks not breaking properly when instantly destroied. - LexManos: Fix stickey pistons not retracting properly. - LexManos: - Updated FML: - MinecraftForge/FML@9c8ca4a4e3c4acc4980535e5c60da169b75a7810 Unlink banner block and item id. Mojang should of matched these up but they didn't -.- - MinecraftForge/FML@84a101f344b8fc21de1201fde717fbcbcba2aa79 Update Dev mcp mappings to 11-30 snapshot. - LexManos: Remove debug patch I left in. - LexManos: Fix finding of spawn location for mobs. Closes #1546 - LexManos: Only call blockBreak when block itself changes, not just meta. Fixes bottles poping out of brewing stands. - fry: Added model bake event (allows mods to insert custom baked models, much like TextureStitchEvent allows to load custom textures), ISmartBlock/ItemModel (ability form models to react to block/item states), Block.getExtendedState, support for unlisted properties in block states. Includes example implementation of http://imgur.com/a/FyyJX - LexManos: Added Explosion Start and Detonate events to control explosion. - LexManos: Fixed bug in ServerConfigurationManager.transferPlayerToDimension where it would send the old dimension's information. - LexManos: Add "sand" to the OreDictionary - LexManos: Cleanup deprecated code, and TODOs in OreDictionary. Down-typed things from ArrayList to List. Asking for the ores with a null stack will now throw an Exception. - LexManos: Added CreateSpawnPosition event. - LexManos: Add LivingHealEvent called from EntityLivingBase.heal() - LexManos: Added PotionBrewEvent.Pre/Post. To allow for modification and cancelation of Brewing. - LexManos: Add quartz_ore tool init, more mojang special casing -.- - LexManos: Changed ToolMaterial's repair material to ItemStack version to allow metadata sensitive versions. - LexManos: Improved Control of Enchantment.canApplyTogether() in Mod Enchantments, allowing both enchantments to determine if they can apply together. - LexManos: Expand PlayerWakupEvent to expose the three parameters passed into EntityPlayer.wakeUp. - LexManos: Unbind Shaped/Shapeless Ore Recipies from Array list to normal List. - LexManos: Fixed NPE thrown when brewing event is fired and not all slots are filled. Closes #1564 - LexManos: Make daylight sensor recipe use ore dictionary wooden slabs Closes #1565 - LexManos: Fix missed patch causing Dispensed Armor to go into the wrong slot. Closes #1560 - LexManos: Fixed log spam when breaking DoublePlants. Closes #1555 - LexManos: Fix texture stitcher not using all avalible spaces. - LexManos: Fix EnumHelper for new ArmorTexture argument. - LexManos: Untie ItemModelMesher from using Item Ids internally by implementing our own simple mechanics using Trove. - LexManos: Fix userdev for new BlockState change. - LexManos: MinecraftForge/FML@e3785c28930a218cf9374458c67c34e7fba17922 Ensure that EntitySpawn and OpenGUI packets are handled in the world thread. Also log all errors that are thrown in FutureTasks. - LexManos: Remove our changes to Stitcher slot allocation. - LexManos: Fix incorrect logic in world change clumping. - LexManos: MinecraftForge/FML@5a4d362293fe70e1421d1f22c4a195944731d6ba Finish removing marker in mapping entry names. FMLMissingMappingsEvent/FMLModIdMappingEvent should fire with correct names now. - jadran.kotnik: Fixed messages not being added to the chat history and ClientCommandHandler not being called when sleeping. - LexManos: Fix BlockSnapshots not firing correctly due to patch mixup in 1.8 update. Closes #1591 - palechip: Fix Scoreboard rendering for the sidebar. - LexManos: Removed exclusion of white stained glass recipes in ore dictionary. - LexManos: Added chests to the ore dictionary. - LexManos: Fix crafting of non-oak fences/gates. - LexManos: Fix MC-30864 (sending web links in chat) - LexManos: Fix recipies for stone variants. - Chicken-Bones: Allow blocks to render in multiple layers - lumien231: Fixes #1603: Moving the start of the update thread to the pre init of the forge mod container - LexManos: Fix potential NPE when loading a single player world where you were saved in a unloaded dimension. Closes #1575 - LexManos: Call World.init from DimensionManager.initDimension Closes #1551 - LexManos: Made Chunk.fillBlock respect TileEntity.shouldRefresh. - LexManos: Fix value passed for Item.getModel useRemaining argument. Closes #1623 - LexManos: Silently eat exceptions when getting a TE's rendering bounding box, this 'fixes' Bukkit servers screwing up world data and causing clients to crash. - jadran.kotnik: Fixed NPE when canceling ClientChatRecievedEvent. Fixes #1644 - Parker Young: Re-enabled Icon setting for Fluids - LexManos: - Updated FML: - MinecraftForge/FML@a55e4124531119f1c9c023cff74cfa09b49ef0e0 Save the mod list of players in their NetworkDispatcher (Make it accessable for mods) - MinecraftForge/FML@69d479d46ae658c5a5c2c00081be3df38e38c748 Fixed getEffectiveSide() for Netty Server threads - MinecraftForge/FML@0f9a33cf14165ddd424a7d82c2178cf5854bf32f Exclude only log4j2 queue from class loader - jadran.kotnik: Don't skip the first line when rendering (debug) text. - fry: - Added model loader registry - - Entry point: ModelLoaderRegistry - loader interface: ICustomModelLoader - custom model: IModel - - ModelLoader is responsible for splicing into vanilla model system. - (you probably don't need to use it directly) - - Interop with vanilla models isn't great yet - (vanilla models can't refer to custom ones as parents), will improve in - the future. - - Includes loader for B3D models, with animation support - (net.minecraftforge.client.model.b3d). - Blender export plugin with compatible coordinate system: - https://github.com/RainWarrior/B3DExport - - OBJ loader is being written, will be included at some point in the - future. For now you can convert OBJ to B3D via blender, or wait. - techStackLp: - Closes #1552 - - Set the destination block the to the fluid. - In the previous code the destination block was still Air and would would - cause a crash because air doesn't have a property for LEVEL - fry: Removed leftover debug messages - LexManos: - Updated FML: - MinecraftForge/FML@d00feb58c762b0bbc506d79faf1ce40bc96732e9 Remove debug code that was causing console spam in Forge. - MinecraftForge/FML@1de3bf733aef754f15de55006b1750376871feb0 Fix FML's package for net.miencraftforge on maven. Fixes uploading of new builds. Note: 1.7.10 builds are bug fixes only while FML/Forge for 1.8 stabelizes. - MinecraftForge/FML@05ecefb53857ecc1dc52d4a577ed593c26da9659 Update to ASM5 for Java 8 support - MinecraftForge/FML@1112c455b9758c38eab385f48578bad17c0180f9 Merge pull request #595 from Grinch/master - MinecraftForge/FML@9c3013e02af1bd2f724d34a30e0b880b6e131645 Merge remote-tracking branch 'origin/1.8' - -Build 1.8-11.14.0.1295-1.8: - fry: Removed leftover debug messages - -Build 1.8-11.14.0.1294-1.8: - techStackLp: - Closes #1552 - - Set the destination block the to the fluid. - In the previous code the destination block was still Air and would would - cause a crash because air doesn't have a property for LEVEL - -Build 1.8-11.14.0.1293-1.8: - jadran.kotnik: Don't skip the first line when rendering (debug) text. - -Build 1.8-11.14.0.1292-1.8: - fry: - Added model loader registry - - Entry point: ModelLoaderRegistry - loader interface: ICustomModelLoader - custom model: IModel - - ModelLoader is responsible for splicing into vanilla model system. - (you probably don't need to use it directly) - - Interop with vanilla models isn't great yet - (vanilla models can't refer to custom ones as parents), will improve in - the future. - - Includes loader for B3D models, with animation support - (net.minecraftforge.client.model.b3d). - Blender export plugin with compatible coordinate system: - https://github.com/RainWarrior/B3DExport - - OBJ loader is being written, will be included at some point in the - future. For now you can convert OBJ to B3D via blender, or wait. - -Build 1.7.10-10.13.2.1291: - lukastenbrink: - Fix fluid tanks incorrectly reading NBT when empty - - If the Empty flag was set, the tank would not correctly read the data, keeping the outdated FluidStack instead. This is especially relevant with updatable TileFluidHandler TEs. - -Build 1.8-11.14.0.1290-1.8: - LexManos: - Updated FML: - MinecraftForge/FML@a55e4124531119f1c9c023cff74cfa09b49ef0e0 Save the mod list of players in their NetworkDispatcher (Make it accessable for mods) - MinecraftForge/FML@69d479d46ae658c5a5c2c00081be3df38e38c748 Fixed getEffectiveSide() for Netty Server threads - MinecraftForge/FML@0f9a33cf14165ddd424a7d82c2178cf5854bf32f Exclude only log4j2 queue from class loader - -Build 1.8-11.14.0.1289-1.8: - Parker Young: Re-enabled Icon setting for Fluids - -Build 1.8-11.14.0.1288-1.8: - jadran.kotnik: Fixed NPE when canceling ClientChatRecievedEvent. Fixes #1644 - -Build 1.8-11.14.0.1287-1.8: - LexManos: Silently eat exceptions when getting a TE's rendering bounding box, this 'fixes' Bukkit servers screwing up world data and causing clients to crash. - -Build 1.7.10-10.13.2.1286: - asiekierka: fix shouldRefresh being too broad in tile entity update - -Build 1.8-11.14.0.1285-1.8: - Chicken-Bones: Allow blocks to render in multiple layers - -Build 1.7.10-10.13.2.1284: - lumien231: Fix versionCheck config option - -Build 1.7.10-10.13.2.1283: - CovertJaguar: Bulk Chunk Data packets should also check TileEntity.shouldRefresh(). - -Build 1.8-11.14.0.1282-1.8: - LexManos: Fix potential NPE when loading a single player world where you were saved in a unloaded dimension. Closes #1575 - LexManos: Call World.init from DimensionManager.initDimension Closes #1551 - LexManos: Made Chunk.fillBlock respect TileEntity.shouldRefresh. - LexManos: Fix value passed for Item.getModel useRemaining argument. Closes #1623 - -Build 1.8-11.14.0.1281-1.8: - lumien231: Fixes #1603: Moving the start of the update thread to the pre init of the forge mod container - -Build 1.8-11.14.0.1280-1.8: - LexManos: Fix recipies for stone variants. - -Build 1.8-11.14.0.1279-1.8: - palechip: Fix Scoreboard rendering for the sidebar. - -Build 1.8-11.14.0.1278-1.8: - LexManos: Removed exclusion of white stained glass recipes in ore dictionary. - LexManos: Added chests to the ore dictionary. - LexManos: Fix crafting of non-oak fences/gates. - LexManos: Fix MC-30864 (sending web links in chat) - -Build 1.7.10-10.13.2.1277: - mattmess1221: Fix MC-30864 (sending web links in chat) - -Build 1.7.10-10.13.2.1276: - clashsoft: Fix Stained Glass pane rendering issues - -Build 1.7.10-10.13.2.1275: - Kittychanley: Removed exclusion of white stained glass recipes in ore dictionary. Closes #1502 & #1481 - -Build 1.8-11.14.0.1274-1.8: - LexManos: Fix BlockSnapshots not firing correctly due to patch mixup in 1.8 update. Closes #1591 - -Build 1.8-11.14.0.1273-1.8: - jadran.kotnik: Fixed messages not being added to the chat history and ClientCommandHandler not being called when sleeping. - -Build 1.7.10-10.13.2.1272: - jadran.kotnik: Fixed messages not being added to the chat history and ClientCommandHandler not being called when sleeping. - -Build 1.8-11.14.0.1271-1.8: - LexManos: Fix incorrect logic in world change clumping. - LexManos: MinecraftForge/FML@5a4d362293fe70e1421d1f22c4a195944731d6ba Finish removing marker in mapping entry names. FMLMissingMappingsEvent/FMLModIdMappingEvent should fire with correct names now. - -Build 1.7.10-10.13.2.1270: - LexManos: Remove our changes to Stitcher slot allocation. - LexManos: Fix incorrect logic in world change clumping. - -Build 1.8-11.14.0.1269-1.8: - LexManos: MinecraftForge/FML@e3785c28930a218cf9374458c67c34e7fba17922 Ensure that EntitySpawn and OpenGUI packets are handled in the world thread. Also log all errors that are thrown in FutureTasks. - LexManos: Remove our changes to Stitcher slot allocation. - -Build 1.8-11.14.0.1268-1.8: - LexManos: Fix userdev for new BlockState change. - -Build 1.8-11.14.0.1267-1.8: - fry: Added model bake event (allows mods to insert custom baked models, much like TextureStitchEvent allows to load custom textures), ISmartBlock/ItemModel (ability form models to react to block/item states), Block.getExtendedState, support for unlisted properties in block states. Includes example implementation of http://imgur.com/a/FyyJX - -Build 1.8-11.14.0.1266-1.8: - LexManos: Untie ItemModelMesher from using Item Ids internally by implementing our own simple mechanics using Trove. - -Build 1.8-11.14.0.1265-1.8: - LexManos: Fix texture stitcher not using all avalible spaces. - LexManos: Fix EnumHelper for new ArmorTexture argument. - -Build 1.7.10-10.13.2.1264: - LexManos: Fix texture stitcher not using all avalible spaces. Closes #1557 - -Build 1.7.10-10.13.2.1263: - LexManos: Fixed NPE thrown when brewing event is fired and not all slots are filled. - -Build 1.8-11.14.0.1262-1.8: - LexManos: Fixed NPE thrown when brewing event is fired and not all slots are filled. Closes #1564 - LexManos: Make daylight sensor recipe use ore dictionary wooden slabs Closes #1565 - LexManos: Fix missed patch causing Dispensed Armor to go into the wrong slot. Closes #1560 - LexManos: Fixed log spam when breaking DoublePlants. Closes #1555 - -Build 1.8-11.14.0.1261-1.8: - LexManos: Unbind Shaped/Shapeless Ore Recipies from Array list to normal List. - -Build 1.8-11.14.0.1259-1.8: - LexManos: Add quartz_ore tool init, more mojang special casing -.- - LexManos: Changed ToolMaterial's repair material to ItemStack version to allow metadata sensitive versions. - LexManos: Improved Control of Enchantment.canApplyTogether() in Mod Enchantments, allowing both enchantments to determine if they can apply together. - LexManos: Expand PlayerWakupEvent to expose the three parameters passed into EntityPlayer.wakeUp. - -Build 1.7.10-10.13.2.1258: - LexManos: Add quartz_ore tool init, more mojang special casing -.- Closes #1333 and Closes #1335 - LexManos: Fix invalid argument being passed to Block.isNormalCube from World.updateNeighbors. Closes #1339 and Closes #1346 - LexManos: Changed ToolMaterial's repair material to ItemStack version to allow metadata sensitive versions. Closes #1355 - LexManos: Improved Control of Enchantment.canApplyTogether() in Mod Enchantments, allowing both enchantments to determine if they can apply together. Closes #1434 - LexManos: Expand PlayerWakupEvent to expose the three parameters passed into EntityPlayer.wakeUp. Closes #1486 - -Build 1.8-11.14.0.1257-1.8: - LexManos: Fixed bug in ServerConfigurationManager.transferPlayerToDimension where it would send the old dimension's information. - LexManos: Add "sand" to the OreDictionary - LexManos: Cleanup deprecated code, and TODOs in OreDictionary. Down-typed things from ArrayList to List. Asking for the ores with a null stack will now throw an Exception. - LexManos: Added CreateSpawnPosition event. - LexManos: Add LivingHealEvent called from EntityLivingBase.heal() - LexManos: Added PotionBrewEvent.Pre/Post. To allow for modification and cancelation of Brewing. - -Build 1.7.10-10.13.2.1256: - LexManos: Fixed bug in ServerConfigurationManager.transferPlayerToDimension where it would send the old dimension's information. Closes #1548 - LexManos: Add "sand" to the OreDictionary Closes #1487 - LexManos: Added CreateSpawnPosition event Closes #1053 - LexManos: Add LivingHealEvent called from EntityLivingBase.heal() Closes #1282 - LexManos: Added PotionBrewEvent.Pre/Post. To allow for modification and cancelation of Brewing. Closes #1248 - -Build 1.8-11.14.0.1255-1.8: - LexManos: Added Explosion Start and Detonate events to control explosion. - -Build 1.7.10-10.13.2.1254: - LexManos: Added Explosion Start and Detonate events to control explosion. Closes #1469 - -Build 1.7.10-10.13.2.1253: - draco18s: - Update RenderBlockFluid.java - - Added tessellator calls to render the block's back faces, so that the liquid properly renders when the player is immersed in the fluid. - -Build 1.8-11.14.0.1252-1.8: - LexManos: Fix finding of spawn location for mobs. Closes #1546 - LexManos: Only call blockBreak when block itself changes, not just meta. Fixes bottles poping out of brewing stands. - -Build 1.8-11.14.0.1251-1.8: - LexManos: - Updated FML: - MinecraftForge/FML@9c8ca4a4e3c4acc4980535e5c60da169b75a7810 Unlink banner block and item id. Mojang should of matched these up but they didn't -.- - MinecraftForge/FML@84a101f344b8fc21de1201fde717fbcbcba2aa79 Update Dev mcp mappings to 11-30 snapshot. - LexManos: Remove debug patch I left in. - -Build 1.8-11.14.0.1249-1.8: - LexManos: Fix stickey pistons not retracting properly. - -Build 1.8-11.14.0.1248-1.8: - LexManos: Fixed vanilla bug where top part of double plants would flicker a tifferent texture before dissapearing. - LexManos: Fix NPE with BlockSnapshots that caused items with TileEntities to be used up in creative mode. - LexManos: Fixed vanilla issue where exceptions in World tasks would not be logged. - LexManos: Fixed blocks not breaking properly when instantly destroied. - -Build 1.8-11.14.0.1247-1.8: - LexManos: Fix BlockPane's connection detection. - -Build 1.8-11.14.0.1246-1.8: - LexManos: Fixed Entity extended properties init order. Closes #1532 - LexManos: Fixed Entities not being able to climb ladders, Closes #1535 - LexManos: Fixed snow layers not being able to stack more then twice. Closes #1534 - -Build 1.8-11.14.0.1245-1.8: - LexManos: Fix interacting with entities. - -Build 1.8-11.14.0.1244-1.8: - LexManos: Fix debug screen not showing grey background. Closes #1529 - LexManos: Fix not being able to place blocks in liquids, and related issues. - LexManos: - Updated FML: - MinecraftForge/FML@36644e97714b46dbbb24416febdde1332a3e753c Finalize modded handshakes in the World tick thread. Prevents potential CMEs when login event takes to long to fire. - -Build 1.8-11.14.0.1243-1.8: - LexManos: Fix potential NPE in Block.isToolEffective - LexManos: Update RecipeSorter for new 1.8 recipies. - LexManos: Fix destroy particles not being added. Closes #1528 - -Build 1.8-11.14.0.1242-1.8: - LexManos: Fixed crash with caomparators due to wrong position. Closes #1512 - LexManos: Fix inverted logic preventing blocks from breaking. - LexManos: Fix Entityies not taking damage correctly. Closes #1511 - LexManos: Fix wrong state being passed to Block.getDrops - -Build 1.8-11.14.0.1241-1.8: - LexManos: Fix fog colors, Closes #1524 - LexManos: Fix acedential inversion causing some tress to not have leaves. Closes #1522 - LexManos: Fix creative picking a CommandBlock minecart returning wrong item. Closes #1523 - -Build 1.7.10-10.13.2.1240: - LexManos: Fix creative picking a CommandBlock minecart returning wrong item. Closes #1523 - -Build 1.8-11.14.0.1239-1.8: - LexManos: Fix local variable conflict in Forge patch and latest MCP mappings. - -Build 1.7.10-10.13.2.1236: - xcompwiz: - Fixes client-side fake rain - - Changes the updateWeather function in WorldServer to only send the - weather info to players in the correct dimension, rather than all - players on the server. This is what causes the client-side rain, as the - client believes that it has started raining locally, rather than in - another dimension. - -Build 1.7.10-10.13.2.1235: - oliver.kahrmann: - Modify WavefrontObject to allow '.' in group object names - - Blender names objects with .001 ir .002 when separating vertices or duplicating objects and the importer would crash on them. This fixes the regex to allow dots in the name. - -Build 1.7.10-10.13.2.1234: - LexManos: Player sensitive version of Block.getPickBlock Closes #1348 - -Build 1.7.10-10.13.2.1233: - LexManos: Fix slots being black due to vanilla blending leakage Forge fixes. Closes #1325 & #1242 - -Build 1.7.10-10.13.2.1232: - luacs1998: - Create CONTRIBUTING.md - - Simple file (which github will show for those making PRs) containing guidelines for making PRs. - Feel free to comment if you want/need anything added. I can pull the same thing to FML too if you'd like, Lex. - luacs1998: - Update CONTRIBUTING.md - - Add link to wiki page on contributing - -Build 1.7.10-10.13.2.1231: - Adubbz: Fixed desert list initialization. Fixes #1447 - -Build 1.7.10-10.13.2.1230: - LexManos: Fix logic error in Blodd's Snapshot capture that caused blocks to not be updated to the client. Closes #1451 - LexManos: Bump version for new RB. - -Build 1.7.10-10.13.1.1229: - Abrar Syed: implemented crowdin support - matthewprenger: Add username cache for determining a player's last known username - azanor1: - Fix for biome weights under 10 - - This solves the problem where custom mod biomes with weights under 10 - not being generated in the world. - - Cleaned up the code and made the patch smaller - -Build 1.7.10-10.13.1.1226: - LexManos: Compleetly disable stencil bits unless told not to by using the -Dforge.forceDisplayStencil=true flag. Should solve the 'menu in bottom corner' issue with Intel Integrated graphics cards. - -Build 1.7.10-10.13.1.1225: - Parker Young: Added PlayerWakeUpEvent - -Build 1.7.10-10.13.1.1224: - Adubbz: Fixed biome weights not working with non multiples of 10 - -Build 1.7.10-10.13.1.1223: - LexManos: Fix vanilla lighting issue and blending issues in achievements gui. Closes #1445 - -Build 1.7.10-10.13.1.1222: - LexManos: MinecraftForge/FML@d00feb58c762b0bbc506d79faf1ce40bc96732e9 Remove debug code that was causing console spam in Forge. - -Build 1.7.10-10.13.1.1221: - LexManos: Disable by default the Display Stencil bits. Keep FBO bits. Acording to Mumfery and ChickenBones, it should not be nessasary and should solve the 1/4 main menu issue. Use -Dforge.forceDisplayStencil=true to enable old behavior. - -Build 1.7.10-10.13.1.1220: - jadran.kotnik: Prevent client only commands from bleeding through to the server. - -Build 1.7.10-10.13.1.1219: - bloodshot: - Added PlaceEvent and MultiPlaceEvent which fires before placing a block. - - Before calling "ItemStack.tryPlaceItemInWorld", a recording flag is turned on for - setBlock to capture a blocksnapshot for each block that attempts to be placed. - - If 1 block is captured, a "BlockEvent.PlaceEvent" is fired to notify mods. - If 2 or more blocks are captured, a "BlockEvent.PlaceEvent" is fired first with the first block - captured followed by a "BlockEvent.MultiPlaceEvent" with all captured blocks. This extra event - is required for items that have the ability to place 2 or more blocks such as a BlockBed. - - If either event is cancelled, the recorded block snapshot(s), item stacksize, and item meta will - revert back to the captured snapshot(s). - If the events are not cancelled, a notification will be sent to clients and block physics will be updated. - - What this means for mods is Forge will be able to capture all player block placement automatically and fire - a PlaceEvent and/or MultiPlaceEvent. - If for whatever reason your mod does not use the standard placement methods then you will need to fire the - appropriate placement events in order to notify mods/servers. - - This commit also includes a new utility class called BlockSnapshot which is serializable. This new class is used in conjunction with - both PlaceEvent and MultiPlaceEvent in order to record a snapshot of block space before it is altered. This - allows us to restore the block(s) if an event is cancelled. The class also provides the ability to restore a snapshot - to any location using the restoreToLocation method. This should be helpful to many mods that are looking to be able - to capture block data then restore it to back to any location required. - -Build 1.7.10-10.13.1.1217: - cpw: - GIANT FML UPDATE! Bump forge revision number, and fix patches for ItemStack changes. More to come on this branch I expect. - - MinecraftForge/FML@7c5cf219042581545b6073de4e947448ffa10879 Implement STDOUT/STDERR redirection. - MinecraftForge/FML@bc78e31cb7ad4eda6e5faa173cd6b21e70a2c444 added support for \n in tooltip strings added \n test tooltip localization fixed int/double conversion error in slider entry added test slider scenario that highlighted conversion error - MinecraftForge/FML@a2908e5c596bb5502bf455d468d2b1ead0520f55 Clean up a bunch of compiler warnings. - MinecraftForge/FML@7f67523d870ae150071c67b002597542eb206725 Update realms to 1.3.2 - MinecraftForge/FML@73f23c24b85240458f352f248e885684aaff4743 Merge branch 'std-redir' of github.com:Emberwalker/FML - MinecraftForge/FML@1c6b25df740a64c94d9ba05dd7e4412515abf5bb If an IO exception comes from the datawatcher, spew it all over the console don't discard it silently. Should stop pixelmon blaming forge for their mistakes. - MinecraftForge/FML@e77da9eb2f5c58a494ed100dd4c1dd1a0c341dbf And fix the read side too, incase someone is trying to bitbang and failing. - MinecraftForge/FML@305d8950c9332c7a7f290db05e6f18ef328016e2 Make LogContext optional. This can be useful for debugging mod issues, but Apache's implementation in log4j2 is responsible for a very significant % of the overall runtime. Quite frankly this is shockingly bad performance from what is supposed to be a high performance logging framework. Anyway, until we can figure out if we can fix it, we're turning it off by default. - MinecraftForge/FML@bdfca1c8ed463a6053526c7a46a990007711e3d0 Make more noise when people screw up mod downloading and put .jar.zip in their mod folders. - MinecraftForge/FML@21084941127fc882d9968316a8f0669531e484df Add a custom version range factory method. Should hush skyboy's complaints. Closes #486 - MinecraftForge/FML@7c1e6aaa40704001231e602ceaedfa21a5df1edf Add a delegate to every item and block. this should help with renaming fun stuffs. Also, fix all the tabs from my previous commits. *sigh* - MinecraftForge/FML@61fcb4df06dc968fcc31d3e4e524e574acfdbb3b Tweak Itemstack patch to always delegate to the method call. Set the field, so it's in sync. - MinecraftForge/FML@eb8c5ab146f2eb3ad3833d40607da97831278ffb Fix nested directory for language resources. Closes MinecraftForge#1264 - MinecraftForge/FML@7c05e5f70d5387512d0bee33ef99510ee5aac739 Default collections, so that we don't crash if useDependencyInfo is true. Closes #485 - MinecraftForge/FML@9729fe23326a3d4f6b03e60b5cdaf78a484b3657 Kill net.minecraft.src warning. It hasn't served a purpose in a long time now. Closes #313 - MinecraftForge/FML@21e875ef22eef6068ccd6df1bd71cf58cba48eed AllowPlayerLogins only after the server has completed the core init tasks. Closes #372 - MinecraftForge/FML@46cfeade80ae60ad2d8cdb40c5fdfdaeeaf16d00 Add a constructor to CustomModLoadingDisplayException. Closes #387 - MinecraftForge/FML@a6eab2683a15a0cceca7a0ded6095b746cdd017b Update README.txt - MinecraftForge/FML@f75838461cf6d9c5010cbfd2d9ef5ceec03268d7 Last part is the itemstack transformer. Itemstacks should now only be loosely coupled with the items within. - MinecraftForge/FML@51f24e9e6d1bee371cf23cdfd0071de7c5175417 First draft of add alias. It is probably not properly persistent atm. - MinecraftForge/FML@2a4c6424709b20ce1e9bda0d85ce7fac47d157c2 Finally fix stupid NPE error caused by FML trying to parse the super of Object in IDEA envs. - MinecraftForge/FML@c1b1417ee168523154a0edae68c3180814eab1c7 FML now supports passing a json formatted modlist as an argument, as well as a comma separated argument list. These facilitate modpacks mostly, by meaning you don't need to duplicate mods. The modlist is arranged in the maven style, with mods referenced maven-like. - MinecraftForge/FML@3d42cda2a2cf5b24e7a25537d883260857b2107a Build.Gradle Patch - MinecraftForge/FML@20c7add8455cd16a4551ed13336a9ad4f9770cd1 Merge pull request #484 from bspkrs/master - MinecraftForge/FML@26ed4b992eb6341d52d12fb6735415ab8e3c501d Clear button list on FML fatal error screens. The hidden cancel button should not be there. Closes #497 - MinecraftForge/FML@ebe4f5c5e297d5d59ce57138810627a9c7a1b412 Merge pull request #494 from AntonBoch1244/patch-1 - MinecraftForge/FML@ad0da05f5c78d7f3c35a331e993dd6e679fc7ac9 Fix the ItemStack transformer to find the method and field so it works with srg and mcp naming. - MinecraftForge/FML@65d380181a84d35a78791e1bc3c7712cd90506f6 Extend timeout for client to 5 seconds. Should fix Forge #1322 - MinecraftForge/FML@45486a0b6dfca65c4d1dd23176d4c9d13d46b6f5 Fix almost invisible NPE in TerminalTransformer when loading a non-existant class - MinecraftForge/FML@13da3efce07653732971837709ccf4de7e4c5c8e Allow a clean way to exit the game without big ugly warnings, but with logging information available if needed. Closes #496 - MinecraftForge/FML@fda305edfea15ba2015cede72327703f273f74e3 Some more tidying up of the exit handling - MinecraftForge/FML@b087f60c3379d0767247e51cbc3f7c631fe97a08 More cleanup of exit handling, also add a couple more noise classes to the list of things ignored. - MinecraftForge/FML@d6358a466b4614cfc35b403d756fe3ef550ebf50 Cleanup override warnings - MinecraftForge/FML@af7a58b9e50dbacf63cf4b5009abc52301609e1f Update to legacylauncher 1.10 and asm 5.0.3 - MinecraftForge/FML@e6d00440a612c235013f3f92f1756811139a6de0 ItemStack swapping - MinecraftForge/FML@8597e45a0e417948db483006aa54e899f28b05ac Fix NPE from a boolean - MinecraftForge/FML@b9b9daa8a9d1cac8550561f31f118589abc0c30a Fix ups from feedback. - MinecraftForge/FML@d89165021f33fbffb4563d86b30bd261506c6ea6 Mark the promise a success in the outbound handler. - MinecraftForge/FML@2e5ccf7988385d38b964c615776f23a1718f5c27 Update for launchwrapper 1.11. Fixes java 6 compatibility. - MinecraftForge/FML@641250d8536bad3af5a036b70dae94097176b420 Fix java 8u20. Closes #501 and a bunch of other bugs too. - MinecraftForge/FML@292be72639feded03ced26d9a06a98159f7a95b7 Allow client handshake to be reset by server to support BungeeCord. - MinecraftForge/FML@092873fbe5baaee53bee67d26d2fc6d3d003f095 Merge branch 'bungeecord' of github.com:bloodmc/FML - MinecraftForge/FML@134f2f8e8865a91292386a3738bb45bad0477a4b Fix bug with entityspawn - if the entity doesn't extend livingbase, it fails to write a headyaw byte, and everything will be derped for that packet. - MinecraftForge/FML@4852de81e02e2b6c6d006abe20d8497499fdf51f Wrap the server description box a little bit shorter. Stops the overlapping. Closes #489 - cpw: - MinecraftForge/FML@4ce3e73bfe36c02b10f504f93eff1bc94d640e32 Add overloaded version of SimpleNetworkWrapper#registerMessage that takes the MessageHandler instance directly, allowing to specify the same handler for multiple messages. - MinecraftForge/FML@cbe2ccbda461ec0ecf4d776fcd19ab31930cc3f1 Add in ModType to the jar manifest. If it's present, and doesn't have value "FML" it will be skipped from the modloading cycle. This should let liteloader mods have a .jar extension. - MinecraftForge/FML@37cf0174fc62a842d132b2c2cc31e477acfba205 OK, lets make that a csv list. It'll let you be liteloader and fml in one jar file! - MinecraftForge/FML@0475b15eb1a7c35bf4959f1af40606e6ee8a9d03 Change the mods and modListFile argument handling a bit. Other tweakers will get a chance at looking at them now - they're only removed right before launch. - MinecraftForge/FML@abeac06a2e9bf8825b058fa35291165b4d1f1fb3 Two new features. ModLists can have a "parent" mod list. Circularity will result in a crash, so be careful. Mods specified in a child will override ones from a parent (using the maven group:name:classifier triple to identify - ignoring the version component) - MinecraftForge/FML@7fcfedcfef9b5fd85cd1c17aa2013fca1bacd871 Canonicalized file paths in modListFile handling with the minecraftDirectory. - MinecraftForge/FML@633fce19d4b367aed56d79e916f17296842f675c Make Keyevent also fire for key releases - MinecraftForge/FML@57ba2339b630afa22c0fdf060bf28edbf7b34d0f Merge branch 'keyup-event' of github.com:diesieben07/FML - MinecraftForge/FML@1ff048062c7f122731619258a9e5a68a6111d5dd Merge branch 'simple-netw-improve' of github.com:diesieben07/FML - cpw: MinecraftForge/FML@dc02d56195606d3ba2f1c5036fc8c0ddb67c843f Fix derp with ModType annotation. mods should load again now.. - diesieben07: Added Item#isBeaconpayment - cpw: - MinecraftForge/FML@7ab69aff2e19b349e457c1b5fcab8b3b01d22af2 Clean up import - MinecraftForge/FML@c5a90bd456230b201522c268dd9bc5e80a0b57be Is vanilla possible with this mod load, side tests. - MinecraftForge/FML@cad11f3165505e6d725411a9fc2c2ee8362f5827 Allow injecting alternative container types. This is the core support code for allowing sponge plugins! - michafla: - check for IFluidBlock (in addition to Material.liquid) when - determining render height so that non-liquids (gases) render correctly - kat.swales: Fixed Clientside GameProfile UUID being null on offline mode - cpw: - MinecraftForge/FML@63b64482e6dd4c3e2226ec002ceee549045c35ed Add jsr305 dev-time dependancy for Nullable/Nonnull annotations. Unneeded at runtime. - MinecraftForge/FML@5365f5ea3e90ec85552bdb7f1f1237c51b4ea493 Add IEventExceptionHandler for EventBus to allow special handeling exceptions that are fired while running an event. Events now track what 'phase' they are in during the execution process. Each EventPriority is a 'phase'. An exception is thrown if the event attempts to set its phase to a previous one. - -Build 1.7.10-10.13.1.1216-new: - kat.swales: Fixed Clientside GameProfile UUID being null on offline mode - -Build 1.7.10-10.13.1.1215-new: - michafla: - check for IFluidBlock (in addition to Material.liquid) when - determining render height so that non-liquids (gases) render correctly - -Build 1.7.10-10.13.1.1214-new: - cpw: - MinecraftForge/FML@7ab69aff2e19b349e457c1b5fcab8b3b01d22af2 Clean up import - MinecraftForge/FML@c5a90bd456230b201522c268dd9bc5e80a0b57be Is vanilla possible with this mod load, side tests. - MinecraftForge/FML@cad11f3165505e6d725411a9fc2c2ee8362f5827 Allow injecting alternative container types. This is the core support code for allowing sponge plugins! - -Build 1.7.10-10.13.1.1213-new: - diesieben07: Added Item#isBeaconpayment - -Build 1.7.10-10.13.1.1212-new: - cpw: MinecraftForge/FML@dc02d56195606d3ba2f1c5036fc8c0ddb67c843f Fix derp with ModType annotation. mods should load again now.. - -Build 1.7.10-10.13.1.1211-new: - cpw: - MinecraftForge/FML@4ce3e73bfe36c02b10f504f93eff1bc94d640e32 Add overloaded version of SimpleNetworkWrapper#registerMessage that takes the MessageHandler instance directly, allowing to specify the same handler for multiple messages. - MinecraftForge/FML@cbe2ccbda461ec0ecf4d776fcd19ab31930cc3f1 Add in ModType to the jar manifest. If it's present, and doesn't have value "FML" it will be skipped from the modloading cycle. This should let liteloader mods have a .jar extension. - MinecraftForge/FML@37cf0174fc62a842d132b2c2cc31e477acfba205 OK, lets make that a csv list. It'll let you be liteloader and fml in one jar file! - MinecraftForge/FML@0475b15eb1a7c35bf4959f1af40606e6ee8a9d03 Change the mods and modListFile argument handling a bit. Other tweakers will get a chance at looking at them now - they're only removed right before launch. - MinecraftForge/FML@abeac06a2e9bf8825b058fa35291165b4d1f1fb3 Two new features. ModLists can have a "parent" mod list. Circularity will result in a crash, so be careful. Mods specified in a child will override ones from a parent (using the maven group:name:classifier triple to identify - ignoring the version component) - MinecraftForge/FML@7fcfedcfef9b5fd85cd1c17aa2013fca1bacd871 Canonicalized file paths in modListFile handling with the minecraftDirectory. - MinecraftForge/FML@633fce19d4b367aed56d79e916f17296842f675c Make Keyevent also fire for key releases - MinecraftForge/FML@57ba2339b630afa22c0fdf060bf28edbf7b34d0f Merge branch 'keyup-event' of github.com:diesieben07/FML - MinecraftForge/FML@1ff048062c7f122731619258a9e5a68a6111d5dd Merge branch 'simple-netw-improve' of github.com:diesieben07/FML - -Build 1.7.10-10.13.0.1208: - zlyfire.martin: - Update README.txt - - Add in reference to running setupDecompWorkspace to get decompiled classes - -Build 1.7.10-10.13.0.1207: - bernhard.bonigl: Write the correct default value for StringList comments in the config - -Build 1.7.10-10.13.0.1206: - LexManos: Fix AIOOB in BiomeDictionary. Closes #1326 - -Build 1.7.10-10.13.0.1205: - cpw: - Attempt to properly resolve this daft metadata and TE nonsense. This might be mod impacting, if you maintain a reference to a TE via neighbour update calls - you - might see two TEs for a single setblock where previously you saw one. This is a phantom TE being created by badly written neighbour triggers - I'm looking at you - redstone. - - Anyway, with luck, this'll close a slew of bugs across Forge, IC2, MFR, TE, RC. Yeah, fun times. Thanks to LexManos, skyboy and KingLemming for helping figure this - issue out. Quite frankly, from now on, issues with phantom TEs will be mods behaving badly. Modders will need to adapt. - -Build 1.7.10-10.13.0.1204: - LexManos: Fix invalid math in GuiContainerCreative. - -Build 1.7.10-10.13.0.1203: - porcariadagata: Add ItemStack sensitive version of getItemEnchantability - -Build 1.7.10-10.13.0.1202: - LexManos: Add ability for creative tabs that have search bars to customize the text box's width, and prevent the default set of enchanted books from being displayed in those tabs. Closes #1303 Closes #1301 - -Build 1.7.10-10.13.0.1201: - abab9579: - Skylight Hooks for Minecraft Forge - - Mainly for solar/lunar eclipse. - -Build 1.7.10-10.13.0.1200: - JeanGlassmaker: Adds getLocalizedName and getUnlocalizedName to FluidStack - -Build 1.7.10-10.13.0.1199: - vazkii: Fixed items with more than 2 render passes rendering weird in first person - LexManos: Fix patch screwup in Skyboy's Fishing PR -.- - LexManos: Fix metadata for every permutation -.- Closes #1294 - t.tomkins: - Legacy Liquid Load Fix - - nbt.getString("FluidName") no longer returns null, it returns an empty string. - - This patch allows legacy liquids to be resolved once again. - -Build 1.7.10-10.13.0.1198: - DemoXin: - * Added AT for ContainerRepair.stackSizeToBeUsedInRepair (Now public) - * Added ability to AnvilUpdateEvent to alter stackSizeToBeUsedInRepair (vanilla behavior is now reproducable) - * Added AnvilRepairEvent, fired when the player removes an ItemStack from the output slot of ContainerRepair, and allows the chance to damage the anvil to be altered. - -Build 1.7.10-10.13.0.1197: - skyboy026: Add FishingHooks - skyboy026: Update FishingHooks - skyboy026: Add EntityFishHook AT - -Build 1.7.10-10.13.0.1195: - rwtema: Fixed ItemFluidContainer always draining the maximum amount, regardless of the amount remaining. - -Build 1.7.10-10.13.0.1194: - LexManos: Closes #1280 - -Build 1.7.10-10.13.0.1191: - LexManos: Fixed bug that allowed duplication of Fluids with redstone dust. Closes #1279 - -Build 1.7.10-10.13.0.1190: - idont: - Added drainFluidContainer() and getContainerCapacity() helper methods. - -Build 1.7.10-10.13.0.1189: - Adubbz: Added an event for fog rendering - -Build 1.7.10-10.13.0.1188: - cpw: - Revert old light amortization patch. It seems to be breaking chunk sending pretty badly when more - than a couple of people are online. Tests indicate it is not useful anymore. - cpw: MinecraftForge/FML@3231db9376766d619f942b6a526718daa3c68038 Sorta revert 908491d5e7ac26becdac938f38cc90d6b9d73ce1 but merge assets into the map, rather than force overwriting. Fixes skyboy's comment. - -Build 1.7.10-10.13.0.1187: - LexManos: - Updated FML: - MinecraftForge/FML@53887ac59cec8f747e21fd251f94d5a438a69114 Hacky interm solution to #1207 to buy me time to re-write FML's network protocol. - -Build 1.7.10-10.13.0.1186: - LexManos: Fixed NPE that happens sometimes when exiting the game witout fully loading a world {main a dev-time thing} - LexManos: Made skulls respect Block.isReplaceable when placing, also prevented them from deleting blocks when placed at certain angels. Closes #1233 - -Build 1.7.10-10.13.0.1185: - LexManos: - Updated FML: - MinecraftForge/FML@9d40b761974f10ec2b5868a992260792f8a98e5d Don't scan ObjectHolders if there was an error already, derpitude will ensure. - MinecraftForge/FML@76538c1781d6d6a1e4134fb317af99e6f13b46cc Add a terminal transformer and tweaker. - MinecraftForge/FML@aec9228845e50107112bd1f8693f9b4729694c8b Add ExitVisitor to the TerminalTransformer that finds and intercepts any calls to Runtime.exit or System.exit. - MinecraftForge/FML@908491d5e7ac26becdac938f38cc90d6b9d73ce1 Move LaunguageRegistry call above normal asset loading to allow resource packs to override mod's language systems. - MinecraftForge/FML@d13295e28113a1c310d5bbb90ebfe241fefabe02 Fix FMLAT manifest AccessTransformers, class loader fun! - -Build 1.7.10-10.13.0.1184: - Tyler Hancock: - Changed exception message for duplicate enchantment ids to contain the - class path for both enchantments along with the enchantmnet id that has - been duplicated. - -Build 1.7.10-10.13.0.1183: - bspkrs: - Fixed missing assignment of constructor arg (thanks @Lunatrius) - - I must have edited this out when I was cleaning up my formatting commit spam. - -Build 1.7.10-10.13.0.1182: - vincent_a_lee: - Fix comment derp (+1 squashed commits) - - Squashed commits: - - [52c40bc] Fix experience orbs spawning at 32x coordinates clientside - - Add // FORGE comment - - Add // FORGE comment to clarify the purpose of the change - -Build 1.7.10-10.13.0.1181: - vincent_a_lee: - Fix chat opacity - - Add // FORGE comment - - As per convention, add // FORGE comment to clarify the purpose of the change - -Build 1.7.10-10.13.0.1180: - LexManos: - Updated FML: - MinecraftForge/FML@ab52901b8b47a525e2719cf280327e97bad7f91e Force preferIPv4Stack to true early in the load chain to combat netty loopback issues. - MinecraftForge/FML@11893fbbb76569417a415ae794494b8c1150a716 Add system property to skip doing world backups when game registry changes. This is SEVERLY ill-advised, if you do this DO NOT ask for any support. - MinecraftForge/FML@fdb6b34b8fc3f1e0c6beb7bfb940a01a309f1603 Update authlib and realms to latest json data. - MinecraftForge/FML@b3a74882b4d0d704d7061b9d896febb59ab0c269 added slider controls for numerics. default control is textbox, but slider can be used as a custom list entry class. fixed constructor javadocs in GuiConfig - MinecraftForge/FML@7c6d1f7568885ff677e34692ff87b1f0826dfd48 Merge pull request #468 from bspkrs/master - MinecraftForge/FML@692d955c1a5b6d0b8601ae88632ef42136d37393 Update tweaker login to use authlib. - MinecraftForge/FML@c2119eb1c1246ba37304d9e565b4430ed7056db1 Update realms library to 1.3.1, and implement network latch when connecting to Realms. Tested and working. - -Build 1.7.10-10.13.0.1179: - cpw: Add a system property for the stencil, in case config is not available.. - -Build 1.7.10-10.13.0.1178: - the.country.gamer: - RenderBlockOverlayEvent patch - - Fixes skewed XYZ parameters - -Build 1.7.10-10.13.0.1177: - LexManos: Fixed Enchantment.addToBookList Closes #1160 - -Build 1.7.10-10.13.0.1176: - LexManos: Add ability for modders to designate custom biome types. And remove note about automatically registering. Closes #1167 - -Build 1.7.10-10.13.0.1175: - diesieben07: Added hook for custom PotionEffect rendering in the inventory - -Build 1.7.10-10.13.0.1174: - the.country.gamer: - Added RenderBlockOverlayEvent.java - - Adds a Forge event which controls whether an overlay is rendered. - Overlays include: First-person fire, Block (when inside a block) - and water when a player is inside a water block. - - Patched for easier manipulation of event - - Fixed for Lex - - To be squashed - - Removed Contructor - - Added block XYZ parameters - - TODO, the second block overlay event’s XYZ might not be correct - Adubbz: Enhanced the Biome Dictionary with tags based on temperature, vegetation, moisture, trees and others - -Build 1.7.10-10.13.0.1172: - LexManos: Made EmeraldOre respect isReplaceableOreGen. Closes #1157 - LexManos: Added World to ChunkProviderEvent.ReplaceBiomeBlocks, and exposed metadata to End and Nether generation events. Close #1201 - -Build 1.7.10-10.13.0.1171: - tterrag1098: - Add AchievementEvent - - Allows modders to react to players receiving achievements, and cancel - them. - - Fix indentation - - More shortening - - Down to one line... - - Remove newline - -Build 1.7.10-10.13.0.1170: - LexManos: STENCIL buffer and DEPTH buffer, attempt a fix for GL errors. - -Build 1.7.10-10.13.0.1169: - alex grabriel: Added Javadoc comments for Forge Event documentation. - -Build 1.7.10-10.13.0.1168: - LexManos: MinecraftForge/FML@ac994e178a3533aa3c2ad8359aef9e5852c27a72 Scala people test your shit. - -Build 1.7.10-10.13.0.1167: - LexManos: Remove the BLEND enable in rendering damage bars. And exclicitly fix blend states in some GUI elements. - -Build 1.7.10-10.13.0.1166: - cpw: - MinecraftForge/FML@3ee86d0f3e47249030ba2309386f9120025e95c1 updated gradle wrapper to gradle 2.0 - MinecraftForge/FML@627ae73ea655277617912df48b03288ecc79ffea Merge pull request #464 from AbrarSyed/upgradle - MinecraftForge/FML@ee38c1b3f4642c567612f88070d7f9d651994aab Fix unneeded cast causing crash in new Config GUI system. - MinecraftForge/FML@eb92c35a2fa49a0fbe35a33e31cfb58e0674f78e updated run configs for GradleStart/Server classes - MinecraftForge/FML@70dcf80410a6d12c00300c00522582ee49ac4cc8 Merge pull request #465 from AbrarSyed/upgradle - MinecraftForge/FML@0ebdbe77a2b3503db43d36aec50c98ffb8366e20 Updated Scala to latest stable - MinecraftForge/FML@ddba18e6e33a9d9c5b113b1bfc0bfc82803b2607 Merge branch 'patch-1' of github.com:Soaryn/FML into scalaupdate - MinecraftForge/FML@220a37660b2656136c634b435afee6a915fc88fe Update realms to 1.2.9 - MinecraftForge/FML@abd7d0969bed5ce3d766f52b921c2b44e8ba87d2 Merge branch 'scalaupdate' - -Build 1.7.10-10.13.0.1162: - foka_12: - Added FluidStack sensitive version for Fluid's localised name - - Would be helpful for determining names for more complex FluidStacks (with tag compounds for example) - -Build 1.7.2-10.12.2.1161-mc172: - bspkrs: dupe quotes fix for category names - -Build 1.7.10-10.13.0.1160: - Gerard Bruwn: Add RenderItemInFrameEvent - -Build 1.7.10-10.13.0.1159: - LexManos: Fixed issue where Fire's 'fizz' would not play for the person who extinguished the fire. - -Build 1.7.10-10.13.0.1158: - ohai.iChun: Fixed inverted params in FogDensity use - -Build 1.7.10-10.13.0.1157: - LexManos: Add config option to disable attempting to creat screen with Stencil Bits. - LexManos: Add config option to specify the default spawn fuzz factor for the overworld. Closes #1190 - -Build 1.7.10-10.13.0.1156: - LexManos: Fix creative inventory tabs not blending base don items rendered. Closes #1179 - -Build 1.7.10-10.13.0.1153: - bloodshot: - Fixed wrong method call in ChunkIOProvider. - - When a chunk fails to load async, we fallback to the original sync method. - In this case, it was calling the async method twice which ended up causing - a stackoverflow. - -Build 1.7.10-10.13.0.1152: - cpw: MinecraftForge/FML@db219fb287b14fea5148ecdbf07d8ff08704c66a API is now able to "provide" and "own" itself. Useful for libraries without a Mod in them. To go along with this, you can now require an API, with a version, in your mod dependency string - -Build 1.7.10-10.13.0.1151: - bspkrs: fixed compounding quotes issue with category names that require quotes when save is called more than once - -Build 1.7.10-10.13.0.1150: - LexManos: Update to 1.7.10-pre4. - LexManos: Fix flower pots not droping the items that are inside them. - cpw: MinecraftForge/FML@06ab104c9ab798af6d2726e02a238211ff8124e1 Force the descriptors to the right type for the field they're referencing. Fixes the sand issue - cpw: MinecraftForge/FML@e1529845384f4935b7c11d4d36d25db51c0b9a31 Add support for mod access transformers without a coremod requirement. Use the "FMLAT" manifest attribute, with a space separate list of files that live in the 'META-INF' directory. They should conform to standard AT formatting. - cpw: - MinecraftForge/FML@5d6dc5dce37e488188d6fc468c16e8a6183a3610 Fix up other exit points. Should stop process hangs for clean exits. - MinecraftForge/FML@8a240ec3c7e4cf4c57beabdfe9bd408e57de1bdc Merge branch 'master' into mc179 - MinecraftForge/FML@0cd5ef6bb71cda1ef6add892d1247148bf1ecc15 Fix NPE when no FMLAT is defined - cpw: - MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system - MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui - MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' - MinecraftForge/FML@96a7e14a45404449fb72af6d2d5e1efd30003318 Merge branch 'master' into mc179 - MinecraftForge/FML@f45f18b1d71e1c1d12582faa337a19e73ed5fb18 Fix accessing guava from transformers - MinecraftForge/FML@8f7adced471951c798cfa6844b0abc176c93d19b Fix library issue. mojang auth requests newer libs, so we get them at dev time. But the mojang json doesn't refer them at runtime. So there's a lib mismatch. Fortunately all are available at mojang, so we can update the json. - cpw: Fix new method with Side.CLIENT when it shouldn't have it. Closes a bunch of reports of problems. - cpw: Clean patch cruft. - cpw: Fix mcp release number - luacs1998: - Update mc version string - - Or was I not supposed to? - cpw: Fix API incompatibilities. Should mean mods will work with new config changes. - cpw: - Update to MC 1.7.10, bump to 10.13.0 - - MinecraftForge/FML@bc420dcb0b086899e2aaa218a6f5bd7e91091a90 Fix Eclipse launching attribute - MinecraftForge/FML@1e0134a1ca97a1107ebbe604e5318e6f350fe9c4 Merge pull request #455 from rumickon/feature - MinecraftForge/FML@1c5db211afc9962fedb7fd8450abc45d07807634 Update for release 1.7.10 - MinecraftForge/FML@79a0c5e55905f0f08471d026b744a563ea421236 Merge branch 'mc179' - -Build 1.7.10_pre4-10.12.2.1149-prerelease: - cpw: Fix API incompatibilities. Should mean mods will work with new config changes. - -Build 1.7.10_pre4-10.12.2.1148-prerelease: - luacs1998: - Update mc version string - - Or was I not supposed to? - -Build 1.7.2-10.12.2.1147: - cpw: Fix API incompatibilities. Should mean mods will work with new config changes. - -Build 1.7.10_pre4-10.12.2.1146-prerelease: - bspkrs: - Added support for new FML config GUI classes - refactored lots of stuff based on comments - - added Configuration.load() exception handling and logging - cpw: MinecraftForge/FML@5d6dc5dce37e488188d6fc468c16e8a6183a3610 Fix up other exit points. Should stop process hangs for clean exits. - cpw: - MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system - MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui - MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' - cpw: Fix mcp release number - -Build 1.7.2-10.12.2.1145: - bspkrs: - Added support for new FML config GUI classes - refactored lots of stuff based on comments - - added Configuration.load() exception handling and logging - cpw: - MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system - MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui - MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' - -Build 1.7.10_pre4-10.12.2.1144-prerelease: - cpw: Clean patch cruft. - -Build 1.7.10_pre4-10.12.2.1143-prerelease: - cpw: Fix new method with Side.CLIENT when it shouldn't have it. Closes a bunch of reports of problems. - -Build 1.7.10_pre4-10.12.2.1142-prerelease: - cpw: - MinecraftForge/FML@701d98eafa4d55144b166d26030818baa9b2f680 Added config GUI system - MinecraftForge/FML@50164db5c13c85636c7fda0e13bae1fc0aedc745 Merge branch 'master' of github.com:bspkrs/FML into bspkrsgui - MinecraftForge/FML@7eb36a1481aea9f68fa46bc199195769b27d904b Merge branch 'bspkrsgui' - MinecraftForge/FML@96a7e14a45404449fb72af6d2d5e1efd30003318 Merge branch 'master' into mc179 - MinecraftForge/FML@f45f18b1d71e1c1d12582faa337a19e73ed5fb18 Fix accessing guava from transformers - MinecraftForge/FML@8f7adced471951c798cfa6844b0abc176c93d19b Fix library issue. mojang auth requests newer libs, so we get them at dev time. But the mojang json doesn't refer them at runtime. So there's a lib mismatch. Fortunately all are available at mojang, so we can update the json. - -Build 1.7.10_pre4-10.12.2.1141-prerelease: - cpw: - MinecraftForge/FML@5d6dc5dce37e488188d6fc468c16e8a6183a3610 Fix up other exit points. Should stop process hangs for clean exits. - MinecraftForge/FML@8a240ec3c7e4cf4c57beabdfe9bd408e57de1bdc Merge branch 'master' into mc179 - MinecraftForge/FML@0cd5ef6bb71cda1ef6add892d1247148bf1ecc15 Fix NPE when no FMLAT is defined - -Build 1.7.10_pre4-10.12.2.1139-prerelease: - cpw: MinecraftForge/FML@e1529845384f4935b7c11d4d36d25db51c0b9a31 Add support for mod access transformers without a coremod requirement. Use the "FMLAT" manifest attribute, with a space separate list of files that live in the 'META-INF' directory. They should conform to standard AT formatting. - -Build 1.7.10_pre4-10.12.2.1138-prerelease: - cpw: MinecraftForge/FML@06ab104c9ab798af6d2726e02a238211ff8124e1 Force the descriptors to the right type for the field they're referencing. Fixes the sand issue - -Build 1.7.10-pre4-10.12.2.1135-prerelease: - LexManos: Fix flower pots not droping the items that are inside them. - -Build 1.7.2-10.12.2.1133: - Christian: Null check the Item in the supplied stack as well as the stack itself. - -Build 1.7.2-10.12.2.1132: - Christian: And fix firing for single player loading. - -Build 1.7.2-10.12.2.1131: - Christian: Fix derpity derp. - -Build 1.7.2-10.12.2.1130: - Christian: - Fire an event when a player loads or saves from disk. Mods that want to load an additional - player related file from the players dir can now do so in that event. - -Build 1.7.2-10.12.2.1129: - Christian: - Some patch offsets - MinecraftForge/FML@7219061b05db73d245405ef777b412d0787398b6 Also patch in warnings for Vec3Pool - similarly removed. - MinecraftForge/FML@dff22045587b37282adeb2167486a572f51f1f16 FML now sets a security manager (FINALLY!). It's primary purpose at this point is to catch rogue calls to System.exit so that they can cause a proper crash report, rather than silently abandoning the game. - -Build 1.7.2-10.12.2.1128: - lumien231: Fixes a server crash caused by a player joining that is in a non existent dimension - -Build 1.7.2-10.12.2.1127: - thog92: Add missing 1.7 biomes to BiomeDictionary - -Build 1.7.2-10.12.2.1126: - nemesis: - Fixed ArrayIndexOutOfBoundsException in getOreName - - Added sanity check to prevent ArrayIndexOutOfBoundsException in getOreName for negative ids. - -Build 1.7.2-10.12.2.1125: - LexManos: Fixed vines generation for hanging off of trees. - -Build 1.7.2-10.12.2.1124: - bloodshot: - Don't call ChunkDataEvent.Load async - - ChunkDataEvent.Load must be called after TE's are loaded since this is - what mods expect. The event is handled by ChunkIOProvider during - callStage2. - -Build 1.7.2-10.12.2.1123: - bloodshot: - Load chunks asynchronously for players. - - When a player triggers a chunk load via walking around or teleporting - there is no need to stop everything and get this chunk on the main thread. - The client is used to having to wait some time for this chunk and the - server doesn't immediately do anything with it except send it to the - player. At the same time chunk loading is the last major source of file IO - that still runs on the main thread. - - These two facts make it possible to offload chunks loaded for this reason - to another thread. However, not all parts of chunk loading can happen off - the main thread. For this we use the new AsynchronousExecutor system to - split chunk loading in to three pieces. The first is loading data from - disk, decompressing it, and parsing it in to an NBT structure. The second - piece is creating entities and tile entities in the chunk and adding them - to the world, this is still done on the main thread. The third piece is - informing everyone who requested a chunk load that the load is finished. - For this we register callbacks and then run them on the main thread once - the previous two stages are finished. - - There are still cases where a chunk is needed immediately and these will - still trigger chunk loading entirely on the main thread. The most obvious - case is plugins using the API to request a chunk load. We also must load - the chunk immediately when something in the world tries to access it. In - these cases we ignore any possibly pending or in progress chunk loading - that is happening asynchronously as we will have the chunk loaded by the - time they are finished. - - The hope is that overall this system will result in less CPU time and - pauses due to blocking file IO on the main thread thus giving more - consistent performance. Testing so far has shown that this also speeds up - chunk loading client side although some of this is likely to be because - we are sending less chunks at once for the client to process. - - Thanks for ammaraskar for help with the implementation of this feature. - - This commit is based off the following : - - Bukkit/CraftBukkit@b8fc6ab2c12e9b4c8d7b5370e44f23cc838014b2 - Bukkit/CraftBukkit@85f5776df2a9c827565e799f150ae8a197086a98 - Bukkit/CraftBukkit@0714971ca2a31bc729bdd78ded8c69ffb2284813 - Bukkit/CraftBukkit@7f49722f457dcc31f8cac8e011871ff1b7fd3306 - Bukkit/CraftBukkit@53ad0cf1abe9c060ef411a86e9a16352f3e5197e - -Build 1.7.2-10.12.2.1122: - antoine.lucas.33: Add missing onLivingJump calls - -Build 1.7.2-10.12.2.1121: - LexManos: Pop version for new Recomended build. - -Build 1.7.2-10.12.1.1120: - Christian: Warn when chunks are being self-recursively loaded. This can cause serious issues. Modders should watch out. - Christian: MinecraftForge/FML@1a99ec7db612f258983c6ac685da906bf7cde0a6 Deprecate getAABBPool so people can stop using it in mods. Failure to do so will result in 1.7.10 upgrade incompatibility. Use getBoundingBox instead. - -Build 1.7.2-10.12.1.1119: - LexManos: Changed dustLapis to gemLapis to make OM SHUT THE HELL UP. - -Build 1.7.2-10.12.1.1118: - LexManos: Fixed missed metadata offset, and now cache return values of getOres for speed. - -Build 1.7.2-10.12.1.1117: - cojomax99: World fog color and density can now be controlled through an event - -Build 1.7.2-10.12.1.1116: - diesieben07: Fix not being able to change target & attackDamage for EnderTeleportEvent. - -Build 1.7.2-10.12.1.1115: - LexManos: Fixed inverted player parameters in PlayerEvent.Clone, Closes #1142 Closes #1140 - -Build 1.7.2-10.12.1.1114: - LexManos: Changed EntityWolf to EntityTameable in EntityLivingBase.attackEntityFrom, to allow for more custom pets. Closes #1141 - -Build 1.7.2-10.12.1.1113: - LexManos: Rework OreDictionary's internals to be a bit more speedy to help combat modders using it inapropriatly. Closes #1022 Closes #1131 - -Build 1.7.2-10.12.1.1112: - Christian: - MinecraftForge/FML@e3ce211cc798f4d86ca6f974d9ba8b4e389b4dc9 Nullcheck the dispatchers on players. Should stop some crashes when spamming connectivity. - MinecraftForge/FML@480bf2c1d078038bb59c4254a01a5af685c7cb22 Fix REPLY handling in SimpleNetworkWrapper. Closes #440 - -Build 1.7.2-10.12.1.1111: - LexManos: - Fix inverted parameters in OreDictionary.getOreID Closes #1123 - -.- Closes #1120 - -Build 1.7.2-10.12.1.1110: - Adubbz: Greatly simplified the addition of new biomes to the default world - -Build 1.7.2-10.12.1.1109: - LexManos: Added Noteblock change and play events. Closes #1027 #1025 - -Build 1.7.2-10.12.1.1108: - LexManos: Add target world to PlayerInteractEvent for potential 'cross dimension' interaction such as LittleBlocks. Closes #1071 - -Build 1.7.2-10.12.1.1107: - LexManos: Add a couple of localizations to Forge added strings. Closes #1068 - -Build 1.7.2-10.12.1.1106: - rwtema: Fixed setBlock not using the location-specific version of getLightOpacity() - -Build 1.7.2-10.12.1.1105: - LexManos: Filter all vanilla blocks that we missed through Forge's getDrops and BlockDrops events. As well as implemented IShearable for DoublePlants and DeadBushes. Mojang really should generic out some of this stuff instead of repeating logic all over the place! - -Build 1.7.2-10.12.1.1104: - LexManos: Fix patch fuzz - LexManos: Fixed GuiContainer calling button.mouseReleased. Closes #1116 - LexManos: Add comment to RotationHelper telling modders where to actually look, closes #1115 - -Build 1.7.2-10.12.1.1101: - diesieben07: - Add PlayerEvent.StartTracking and .StopTracking & make trackedEntityIDs visible - & Update, as discussed on IRC (squash) - -Build 1.7.2-10.12.1.1100: - vilim.lendvaj: Make finite fluid blocks drainable - -Build 1.7.2-10.12.1.1099: - LexManos: Fix enum helpers for EnumRarity {moved to Commn and changed paramter} and EnumCreatureType {new parameter} and added junit test for them. Closes #1009 - -Build 1.7.2-10.12.1.1098: - Christian: MinecraftForge/FML@1d41aa978d41267e4040ec449e10f49a20edd4fa Fix the side for the compatibility check. Should result in green ticks finally! - -Build 1.7.2-10.12.1.1097: - LexManos: Change IShearable JavaDoc by one line so Anti would shut up. Closes #1054 - -Build 1.7.2-10.12.1.1096: - Christian: MinecraftForge/FML@4512f8e5e316ddaf6a4fe35470f1f88dcdddae1a Warn when the objectholder finds nothing in the registry. Helps debug mismatched names. Also, actually make the scoping thing work with objectholder - -Build 1.7.2-10.12.1.1095: - fry: Added world display list render events - -Build 1.7.2-10.12.1.1094: - foka_12: - Fix getOreIDs not using the wildcard value correctly - - You can see it's not working by requesting the ore IDs from lapis, and you'll see the name "dye" is missing (and that's the one registered using the wildcard). - - Fixed it by inverting the order of the item stack parameters. - -Build 1.7.2-10.12.1.1093: - LexManos: Prevent duplciates in registered Ores in the OreDictionary and clean up some of the code, add new function to return all ores the specified ItemStack satisfies. Closes #1102 - -Build 1.7.2-10.12.1.1092: - vilim.lendvaj: - Fix fluid blocks - For https://github.com/BuildCraft/BuildCraft/issues/1843 . - -Build 1.7.2-10.12.1.1091: - LexManos: - Updated FML: - MinecraftForge/FML@3aba56440aa7a95f6431efcdcb5c127ebafc8891 lastIndexOf, Note Don't code while sick. - -Build 1.7.2-10.12.1.1090: - LexManos: - Updated FML: - MinecraftForge/FML@c828bb63c57cb10c23d9b1c3a6934e9f9ddba37b Make AccessTransformer change INVOKESPECIAL to INVOKEVIRTUAL when making methods visible - MinecraftForge/FML@a9aa468457a1eeed3366505b93e36da654610f05 Merge pull request #431 from diesieben07/at-invokevirtual - MinecraftForge/FML@31d726abad0dec6d1b853e9adf6a01580aee2af4 Fix the null networkHandler in the MessageContext - MinecraftForge/FML@725d988e36a7b104b9f5d8ae2daf993ac12af5bd Add in the objectholder, autopopulated by FML based on simple rules. Allows for reference driven substitution of mod blocks and items based on their server running state. - MinecraftForge/FML@f07bf5cb30a20ca9f62337512e936cfefcfbf0c4 Fixed deobfusication of nested inner classes. And removed legacy ModLoader remaps. - LexManos: - Updated FML: - MinecraftForge/FML@3a687f48b9606b4f9179d63ef0b831a25821ff8f -.- Save File First. My Bad. - -Build 1.7.2-10.12.1.1088: - LexManos: Add Glass, Colored glass, ore storage blocks, alines, and a few others to ore dicitonary. Closes #1011 - -Build 1.7.2-10.12.1.1087: - clashsoft: Update GuiScreen.java.patch - LexManos: Add new PlayerEvent.Clone called when an EntityPlayer is cloned via dimension travil or respawn. - LexManos: Made WorldGenShrub respect Block.canSustainPlant, Closes #1096 - -Build 1.7.2-10.12.1.1085: - delma: - Fluid events now know how much fluid is moved - - Added amount that is being filled/drained to the FluidEvent - - Added constructors without amount to ensure backwards compability - - Added deprecation to amountless constructors - -Build 1.7.2-10.12.1.1084: - LexManos: Fixed Stems not droping a random number of seeds based on metadata, Closes #1087 - -Build 1.7.2-10.12.1.1083: - xcompwiz: - Bug Fixes to Biome Decoration and Chunk - Fixes issue with biome decoration crashing on worlds with exposed void - Fixes same issue in JungleBiome decoration - Fixes forge bug in getting lighting from a block in chunk - -Build 1.7.2-10.12.1.1082: - LexManos: In Flower Forest biome a Poppy should spawn instead of Blue Orchid Closes #1078 - LexManos: Added Farmland to PLAINS type plants as that has changed in 1.7. Also made BlockTallGrass call it's super.canBlockStay to better support custom soils. Closes #1077 - LexManos: Added accessible instance to RenderBlocks and RenderItem for modders to use who don't wish to create there own instance. Warning: Other modders may influance the transient state of the instance, BE WEARY MODDERS. - -Build 1.7.2-10.12.1.1081: - Christian: MinecraftForge/FML@43e3ee1af1cab54db238dab4994076fdbe68bc6a Swap Listenerlist constructor around. Should fix parent resizing issue? - -Build 1.7.2-10.12.1.1080: - Christian: MinecraftForge/FML@70570a863ffa6a3ba7e2dd30b471bb47615b8bf8 Fix up possible CME - -Build 1.7.2-10.12.1.1079: - Christian: MinecraftForge/FML@503da3a2577a069b7847c158a27e8316c85ed852 Don't consider null NetworkDispatchers. This should fix a bunch of fakeplayer issues. - -Build 1.7.2-10.12.1.1078: - LexManos: Fully clear DimensionManager's DimensionID bitset when world is loaded. Closes #1074 - LexManos: Fixed No Blue Orchids spawn in swamp when using bone meal Closes #1072 - -Build 1.7.2-10.12.1.1077: - Christian: Fix forge validating strict versions on remote connections. - -Build 1.7.2-10.12.1.1076: - Christian: - MinecraftForge/FML@a8cbef2321a8e1bdfac56476bdfb5b306f71d38b Finally hopefully fully kills the race condition causing a classcast on slow machines. - MinecraftForge/FML@8dbd1ae0a177a556d03630a059242a2ee7f45e55 Fix ObjectIntIdentityMap sporadically matching non-identical objects. - MinecraftForge/FML@42713c66e565a26e963099baa838800f250089c3 Merge pull request #426 from sfPlayer1/master - -Build 1.7.2-10.12.1.1075: - Christian: - MinecraftForge/FML@d8b6adb2598ce144568a0aaf26fa8b988c028b7c Add a helper for casting some common collection types into generic form - MinecraftForge/FML@5275cea844a6afacc0deb41d153f01c1c25bb924 Try and see if there is anything to the identityHashCode collision hypothesis. If you see this in your error messages, kindly let us know! - -Build 1.7.2-10.12.1.1074: - LexManos: - Updated FML: - MinecraftForge/FML@a70308ef41f1e24074ea718f64caf75b8d6acba7 Update mcmod.info - MinecraftForge/FML@8555344eb33e4f0cc676defdb7391a24ebd5677d updated wrapper to gradle 1.12 - MinecraftForge/FML@1d5fc60f82e911c1abfbebbe781316126c02c987 Merge pull request #411 from matthewprenger/master - MinecraftForge/FML@3612ad0c25d103ba9bc81b32e8ecfef2dfc1cadc Attempt to fix another race condition related to reading NetClientHandler. - MinecraftForge/FML@c73a2076e3dd5d1f60c2fe2f589109cefa2dc6ce Fix potential rance condition in connecting to vanilla servers as well. And move latch into client side only. - MinecraftForge/FML@1436ac2f14fbdb48777c90b1b93378108c9cbf36 Fine use FMLCommonHandler. - MinecraftForge/FML@542e9acec1016c950c6f80af0c9da3190691359b documented dependencies - MinecraftForge/FML@ddc2cfbe864bd377232dbd1aa65df6e710d4639d Merge pull request #402 from AbrarSyed/patch-1 - MinecraftForge/FML@362ec8dee7ed2c291a8ed287c52eacdd80582eff Merge pull request #419 from Thog92/master - MinecraftForge/FML@b9de9ebc960bbf26e7aee570701aa4c226252fee Revert "Fix refreshResources not happening if an error occurs." - MinecraftForge/FML@738ce1d7cd5575269375066586d0a37881c536e2 Re-add removed genericiterable to clean a warning - MinecraftForge/FML@b0eb1ef7c6f4a63689898bf28f28e84d2dbae6e7 Split loadmods into loadmods and preinitmods, to allow resource loading to occur *always* between the two phases. This should fix mods not being able to access resources during preinit. - MinecraftForge/FML@de546bdf6cbeadb612cd6385bac8d54480073496 Clean up some missing generic info - MinecraftForge/FML@cd43eacbb25bc9cc0e81138844fa3aa7fd133037 Ensure that the loadcontroller is ready to preinit. - MinecraftForge/FML@f2fe80dc36972fe9db57e700380b6869abbc1832 Fixed default network mod checking to allow client side mods without the server side. Mods wishing to REQUIRE server side components must specify a custom check handler using @NetworkCheckHandler - MinecraftForge/FML@0c36868f92a3516c83ae363e13e5cb1db81236d1 Fix network disconnect with message on the client side in NetworkDispatcher. - -Build 1.7.2-10.12.1.1073: - bspkrs: Fixed unforeseen NPE - -Build 1.7.2-10.12.1.1072: - LexManos: - Revert "Implemented hashCode and equals in ItemStack, Closes #986" - - This reverts commit 0b01545a03942abca7b7ea28030be81e2ebeaa59. - -Build 1.7.2-10.12.1.1071: - LexManos: Implemented hashCode and equals in ItemStack, Closes #986 - -Build 1.7.2-10.12.1.1070: - LexManos: Fix extended entity properties being lost when leaving the end, This introduces the concept of calling IExtendedEntityProperties.init when entites/worlds change. Lets see if mods explode. - -Build 1.7.2-10.12.1.1069: - bspkrs: New GuiScreen events and a new ElementType DEBUG for RenderGameOverlayEvent - -Build 1.7.2-10.12.1.1068: - LexManos: Added new hook to WeightedRandom.getItem that allows for use of custom rnadom generators, prevents redundant code in mods. - -Build 1.7.2-10.12.1.1067: - LexManos: - Updated FML: - MinecraftForge/FML@2c56c32c5aa8842cfadaf8c237396cdb75673909 Fix saving backups with the raw name. Fix air block not being assigned as the default. - MinecraftForge/FML@d0f8073fa51db7426d5ded373f3404fa60d722f0 Merge pull request #413 from sfPlayer1/master - MinecraftForge/FML@810b1f3075e6061ab189e1f6975bd77b20040d71 Clean some generic warnings up. Make a generic list handler. Helpful for others I think too. - MinecraftForge/FML@fff86ee9d35874bdf77a1eaabe77615441644064 Fix refreshResources not happening if an error occurs. - MinecraftForge/FML@76d8d0e870a4e389167634283984dc10abb08e84 Fix mod version checking - MinecraftForge/FML@b84d0760ae47832e5b1e4d50237b582b2d50d520 Fix display of mod status at the server - MinecraftForge/FML@251af1d09dfbf636e2fb3f323a5345c81cc07aea Fixed memory leak on the client caused by Netty holding references to the World. - LexManos: Fixed hard references in WorldGenBigTree and ForgeCommand that caused worlds to leak in the client. - -Build 1.7.2-10.12.1.1066: - lhb: - Fix for Block.getExplosionResistance getting passed the wrong parameters - - It is being sent the x, x, y coordinates instead of x, y, z - -Build 1.7.2-10.12.1.1065: - CovertJaguar: - Fix issue with flexible rail return value - - Between 1.6 and 1.7 the return value to BlockRailBase.isFlexibleRail() - was inverted. While this is not a huge deal and could be worked around - by simply inverting your return value, it does mean its no longer - consistent with the function name and javadocs. - bioxx2007: Adds a new ReplaceBiomeBlocks Event constructor that supplies the metadata array if applicable and updates the ChunkProviderGenerate class to pass in the metadata array. - -Build 1.7.2-10.12.1.1061: - bspkrs: get a spelling checker :P - -Build 1.7.2-10.12.1.1060: - LexManos: Bump Forge version in prep for release. - -Build 1.7.2-10.12.0.1059: - LexManos: Try and fix invalid framebuffer depth/stencil setup, Thanks Ivoforce. Closes #1032 - -Build 1.7.2-10.12.0.1058: - apricefrench2d: - Fix infinite loop in RecipeSorter - - If recipe is multiple levels of inheritance from Object and not categorized, cls=cls.getSuperclass(); needs to be repeated more than once. It must therefore be moved to inside the while loop. - -Build 1.7.2-10.12.0.1057: - ohai.iChun: Fixes stencil buffers on platforms not supporting OpenGL 3.0 or higher. - -Build 1.7.2-10.12.0.1056: - LexManos: - Small wording change in license to allow for specifc differnet licnense contributions. - - Updated FML: - MinecraftForge/FML@e58562d3edfd1cd37fdc0a9e54181aed7433fdff Fix remaining issue with autoassigned Block and Item IDs overlapping. - MinecraftForge/FML@a82195772e539437911c25508168cb607659bc71 Registry: Block IDs after failing to find a mapping for them - MinecraftForge/FML@fd9389015fd5c6150155531bf1fffb38cfe9d551 Fix FMLMissingMappingsEvent.get - MinecraftForge/FML@5eebd4df718d65ac8426deba61e1ebb6ae2fde18 Registry: Implement support for remapping blocks/items to a new name. - MinecraftForge/FML@7325aa5033e7a5b5db79340777dd7a1c763315a0 Registry: cleanup, fix missing id error GUI formatting - MinecraftForge/FML@eb29d651ebda7086fe6d1f716295b087e2c17e6f Fix old 1.7 worlds with broken ID mappings - MinecraftForge/FML@6fd3c12a4a15a5cf38c421a94576a5cacd3fb7c1 Registry: allow handling missing blocks/items regardless of the mod id - MinecraftForge/FML@038fa17ad33aeba276db84ab170504fce884c1e7 Merge branch 'master' of https://github.com/MinecraftForge/FML - MinecraftForge/FML@49c623f59c440ba177adf2d76332ecee25e12236 initial attempt at a better way to ask the user in case of startup issues - MinecraftForge/FML@9be92dcfcb1c737025397c92b18ed027a6c7f4fa Registry: Complain about bogus registrations - MinecraftForge/FML@fd6d55afcc4f4c650c143ad43e09fbdc2cb9d850 Registry: Allow ignoring missing mods from the GUI, with confirm+backup - Registry: Add confirm+backup for automated corrupted id table fixup Require the user to confirm loading from a backup level.dat - MinecraftForge/FML@c47fc3b382434d435050b4ee02a02550b81f5717 Enable custom gui rendering only as required - MinecraftForge/FML@f77632df35dbf53fb31420fa86e6792f13257020 Remove unneeded entity spawn debug logging. - MinecraftForge/FML@c7adb42199a0684d8748451d39deb8326c0a2194 Registry: Repair mismatched ItemBlocks as well Fix a few misc issues - MinecraftForge/FML@c8a245a985779fd2545ee4b58a93270973aeb435 Registry: Fix debug info - MinecraftForge/FML@c8a0b72eba9265be608670424e1bd835a9d2f1e2 Registry: Complain about missing mods when repairing broken worlds Registry: Reduce console spam - MinecraftForge/FML@8e44006f432f1b36b826ff0469d99986a6051e4b Registry: Protect against putObject misuse, handle duplicate registrations better - MinecraftForge/FML@294c93212cd9f30c50b9d1a3b048a6141c45cdea Registry: Add support for registering ItemBlocks before their Blocks - MinecraftForge/FML@3b42b33b6ec4020b5032cae06760053ed135fae8 Merge pull request #400 from sfPlayer1/master - -Build 1.7.2-10.12.0.1055: - traincrazyb: - Small Fix: Held Items & Multiple Render Passes - - Passes beyond 1 now have the correct icon. - -Build 1.7.2-10.12.0.1054: - LexManos: Fix line offset in Minecraft patch, and mix RenderPlayer looping once to many on multi-pass items. - -Build 1.7.2-10.12.0.1053: - t.tomkins: Update PlaySoundEvent17.java - -Build 1.7.2-10.12.0.1052: - LexManos: Update access transformer, Closes #951 and #1021 - LexManos: Add NPE protection to GuiingameMenu.actionPerformed, Closes #961 - LexManos: Finally do SoundSystem workup for 1.7, Closes #982 - -Build 1.7.2-10.12.0.1051: - LexManos: Use BiomeGenBase's array size instead of hardcoding it in BiomeDictionary. Closes #871 - LexManos: Fix potential threading issue if FluidRegistry.loopupFluidForBlock is called from two threads at the same time before being setup. Closes #936 - -Build 1.7.2-10.12.0.1050: - LexManos: New hook to truely seperate the display of the 'durability' bar from the current / max durability. Allowing modders to control that display easier. - LexManos: ItemStack sensitive version of Item.getAttributeModifiers, Closes #816 - LexManos: Add ANIMALS tpe to PopulateChunkEvent.Populate Custom providers should call this function if they spawn animals curing population. Closes #790 - LexManos: Add AnvilUpdateEvent which is fired when a user places a item in both input slots of a Anvil and allows modders to control the output. Closes #838 - -Build 1.7.2-10.12.0.1049: - LexManos: Add position to BreakSpeed event. Closes #621 - LexManos: Advanced Model Loader available server-side for data driven models. To be cleanuped and re-evaluated in 1.8. Closes #773 - -Build 1.7.2-10.12.0.1048: - Abrar Syed: COnverted patches to SRG names - Abrar Syed: updated for ForgeGradle 1.2 - Abrar Syed: added .exe file.. fixed a bunch of patches - Abrar Syed: updated FML to latest master - Abrar Syed: fixed remaining noop patches and exc derp - LexManos: Update patches for new Fixed FernFlower used in FG 1.2. - -Build 1.7.2-10.12.0.1047: - reflex_ion: - This correctly uses the world height less one block for placement of a - Door. - - Required for placing doors inside a littleblocks area. - -Build 1.7.2-10.12.0.1046: - LexManos: MinecraftForge/FML@ef07de4f65ea16e1db1467845e316cb4c7d01a1f Fix hard link to DedicatedSerever when opening a LAN connection causing stalls on connecting. - -Build 1.7.2-10.12.0.1045: - LexManos: -.- Both null combinations. - -Build 1.7.2-10.12.0.1044: - LexManos: properly implement equals, sod off Player. - -Build 1.7.2-10.12.0.1043: - LexManos: Implement simple hash based equals in Fluid ContainerKey. - -Build 1.7.2-10.12.0.1042: - LexManos: Make StructureVillagePieces.Village public. - -Build 1.7.2-10.12.0.1041: - ohai.iChun: Fixes stencil bits not existing in Minecraft's framebuffer causing stencil test to not work. - -Build 1.7.2-10.12.0.1040: - LexManos: - Updated FML: - MinecraftForge/FML@e8b60441ccca8cccdc130560b4c8bf400aebc605 Reload game settings after mod loading is finished to capture mod keybindings. Closes #378 - MinecraftForge/FML@399770e572c9177babfb65a27280253023db2d9e Kill the modEventTypes list, register anything that extends FMLEvent, Fixes MissingMappingEvent handler, and any futureevents added. - MinecraftForge/FML@b7ad532ab5eb3e00d77ffde946d25675c9f69cf7 Re-enable post initalize texture pack reloading to allow Icons to be registerd through any init phase. - -Build 1.7.2-10.12.0.1039: - t.tomkins: - Small Fix: Held Items & Multiple Render Passes - - Passes beyond 1 now have the correct icon. - DemoXin: * Added Ore Dictionary entries and recipe replacements for Diamond, Emerald, Crops, Redstone, and Glowstone - DemoXin: * Fixed Items.glowstone to Items.glowstone_dust - -Build 1.7.2-10.12.0.1034: - LexManos: Fixed hashcode in FluidContainerRegistry, still needs a redesign. Closes #967 - -Build 1.7.2-10.12.0.1033: - ohai.iChun: Add cancelable RenderHandEvent. - -Build 1.7.2-10.12.0.1032: - LexManos: Fix a typo in our tile entity fix causing it to be ineffective. - -Build 1.7.2-10.12.0.1031: - LexManos: Fix items with color rendering incorrectly. - -Build 1.7.2-10.12.0.1030: - Christian: - Update Forge for patch changes - - MinecraftForge/FML@064b66af3d6c92b19821b88ec26cbb59577d68b4 Prevent players from logging in until server has finished starting. - MinecraftForge/FML@2aa73afa15908dadb0a033c49deb0ffefad2f265 Fix ExampleMod.java for build #1024+ - MinecraftForge/FML@c890206268da3c594d97198f5426b52ff6b8460c Try and handle removal of mods a bit better. Currently no way to allow a world which has missing blocks to load - but i have the code in place to allow it i think. - MinecraftForge/FML@995c204338cd601e118396d4b4ef8feb6e759037 Fix failing to load a world with missing mod blocks and items. There will be a way to force worlds to load when stuff is missing, but for right now, it will fail as this is "world safe". - MinecraftForge/FML@fa5f4c884272f415933329a9e914e0b7d052e31a Some argumentation - MinecraftForge/FML@45409bfa0c136078823a1aef1358396d92a269ee Prevent player dat files getting reset during disconnects. - MinecraftForge/FML@33100d6bab654a4bd59701b1ec2bf91caa3399da Merge pull request #371 from bl4ckscor3/patch-1 - MinecraftForge/FML@572d32358ab11e5916d91c4c7b9c04a70cfed2f6 Merge pull request #373 from bloodmc/master - MinecraftForge/FML@d0dd05a15c2eca9eabd308319c2ed85cb632922b FML expands S3F to support payloads up to 2 megs in size. Should be transparent - -Build 1.7.2-10.12.0.1029: - LexManos: Fixeed a missed -1 in SpawnerAnimals patch. Thanks Blood. - -Build 1.7.2-10.12.0.1028: - LexManos: Cull FakePlayers when worlds are unloaded. - -Build 1.7.2-10.12.0.1027: - LexManos: Use correct tag types when reading Forced Chunk data. Fixes ticket loading. Closes #964 - -Build 1.7.2-10.12.0.1026: - LexManos: Fixed FluidContainerRegisry.contansFluid closes #845 - -Build 1.7.2-10.12.0.1025: - LexManos: Fix AIOOB error with Endermen and blocks >256. Also better support for ID remapping. More to come later. - -Build 1.7.2-10.12.0.1024: - LexManos: - Updated FML: - MinecraftForge/FML@03fb1879d72fbd347badc140fed6c2c3191d2990 Fix obf error when right clicking a Empty Map. - MinecraftForge/FML@6bb9b8b9532b276450d03a3419e0da016aecead8 Clean up FMLEventChannel. Closes #367. - MinecraftForge/FML@b7b3450dcd123ab5df6b3693c9c2123bc3846b88 Update MCP mapping snapshot to latest crowdsourced names. - MinecraftForge/FML@8c9e8b52708bd0630303f8b5dc184ab60e2553a1 Fix isRemote, this is integral to so many parts of the code, everyone knows it by this name, People should not change it. - LexManos: Add the beginnings of a Constants class, to document/clean some of the magic numbers that are in the MC code base. - -Build 1.7.2-10.12.0.1023: - Christian: - MinecraftForge/FML@d87822ad8519da1c808e48bcc0a1bf8eb15c0095 Bump gradle wrapper to 1.10 - MinecraftForge/FML@359ac3ca2a941d70709168fbbbc0725c861668dd Ensure we check both item and block registries when finding valid IDs. Should fix #365 - MinecraftForge/FML@cee0f0b81179d307059843f08401f8700fb3ddb2 Tweak so that writing to the context will automatically send a message back to the originator in handshakeestablished. - Christian: Add a discriminator for fluididspacket. remove extraneous channel handler. - Christian: Fix up the event handler so it knows it's owned by forge - -Build 1.7.2-10.12.0.1022: - LexManos: Uncomment aa few FluidRegistry entries. - LexManos: Fixed issue where enchantment effects caused slight rendeirng issue. - LexManos: Fixed missed parens causing trapdoors to fall off incorrectly. - -Build 1.7.2-10.12.0.1021: - LexManos: Inital Fluid system update, untested. Still in progress. - -Build 1.7.2-10.12.0.1020: - LexManos: Fix NPE when breaking ice. - LexManos: Attempt a AIOOB error fix in tesselator when there are alot of transparent blocks in the rendering range. - -Build 1.7.2-10.12.0.1019: - Christian: - MinecraftForge/FML@544320b8d239df4a5ee2b3a7ec331ce2ec0a2c09 Beginning of a saveinspectionhandler. - MinecraftForge/FML@ab199c5811fe2d831592601d4f77691fbf82d1b8 Try harder to find a mod container. - MinecraftForge/FML@8633d780c925ebb719c37ac52e2f3db5f9957895 And make a loud message if there isn't a modcontainer found, substitute Minecraft. In general, this can only happen for coremods not properly registering their code. Closes #363 - -Build 1.7.2-10.12.0.1018: - LexManos: Fix imporerly efficient tools breaking blocks to fast. - -Build 1.7.2-10.12.0.1017: - LexManos: Fixed potential NPE in SlotCrafting, and added ItemStack sensitive version fo hasContainerItem. Closes #854 - LexManos: Adds a WeatherRender in the style of SkyRender, Closes #844 - -Build 1.7.2-10.12.0.1016: - LexManos: Move change of metadata to immediatly after change of Block, should prevent any 'invalid' tile entities from breaking created. Reference: #897 - -Build 1.7.2-10.12.0.1015: - LexManos: New PlayerUseItemEvents, Start, Stop, Tick and Finish. See PlayerUseItemEvent.java for more details. Closes #924 - -Build 1.7.2-10.12.0.1014: - LexManos: Make ItemBlock.field_150939_a public, closes #945 - LexManos: Missing EntityAITasks.tasks and MapgGenStructreIO register ATs, Closes #949 - LexManos: Implement PlayerPickupXpEvent, fired when a player aquires XP from a EntityXPOrb. Closes #942 - LexManos: Exclude cobblestone slab recipe from ore dictification, closes #940 - LexManos: Add the ability for custom records to have finer control over there sound resource location. Closes #933 - LexManos: Don't short circuit item icons for multiple render passes while being used. Closes #929 - -Build 1.7.2-10.12.0.1013: - LexManos: Fix Furnace stopping on 63rd Item, Closes #947 - -Build 1.7.2-10.12.0.1012: - Christian: - MinecraftForge/FML@b6d95d704b65dd8232ec8ddd333de378db8fe161 Name the log files properly. fml-junk is an early startup annoyance I can't kill because log4j2. - MinecraftForge/FML@8692ca17d13eda036b5ef996ec8e8706e7707d80 Log4j2 logging context for things. This should help add context when things go wrong in mods. - MinecraftForge/FML@a7ca131a337b5f0d4fc6f438626ac2d5b7771b3c And don't spam NONE everywhere - MinecraftForge/FML@741e172ffe163f0dd3018e1474af46ef0696396a Log4j2 doesn't need debug level logging for itself anymore - -Build 1.7.2-10.12.0.1011: - Christian: MinecraftForge/FML@458b0620b43116c943549a0f060c7e8830c2d77a Log the bad packet in a prettier way. Also, don't show the authlib debug data in the log file. - -Build 1.7.2-10.12.0.1010: - LexManos: Add BookCloning to the recipe sorter. - -Build 1.7.2-10.12.0.1009: - Christian: - MinecraftForge/FML@9a8d16b66e67691a4c83a9e1e236304e9f6d5139 Fix log4j2 config. Fix server gui to *show* logging. Fix log spamminess in the console. Fix bug in servergui that can cause deadlock. - MinecraftForge/FML@a355eecb2c14123964c6ae2402a0933d57ae9736 Add in error logging for outbound messages. Fix bug with indexedcodec NPE - MinecraftForge/FML@1c793abe0eef6846f681c9673019b0ebc49caaaf Fix derp with networkcheck - MinecraftForge/FML@675b5a07788ada17bc26a9c4f26598e77d2098cf And turn down some more logging, now we have useful logging back again.. - -Build 1.7.2-10.12.0.1008: - Christian: - MinecraftForge/FML@4aa2416ce5dcd8e77761703c018d1e7d08464025 Propagate Optional method removal to trait implementation classes - MinecraftForge/FML@fc025a7b73d9b3f46ecf2257227657592f5506b5 Logging Changes - MinecraftForge/FML@f0132a6f3b47e746a1a7df3ef84f4be989f140dd changed fml log level to all - MinecraftForge/FML@f23eba4352c38fd21e04e81f3db72c6cafe65a36 put max number of FML log files to 3 - MinecraftForge/FML@449ac98b77025eba38a75d0242113fffe26a8cf9 SSP Worlds updating from 1.6 will now pop a warning message before loading, and will capture a timestamped zip file in the minecraft dir before starting to load. Allows for people to test updates. - MinecraftForge/FML@3557fe31c92ea8d76c90052f9b8b6da963300c4f Throw an exception when discriminator is not found - MinecraftForge/FML@25240457283ba40c32022c97fc982c2ff4408e46 Make NetworkEventFiringHandler sharable - MinecraftForge/FML@dfc0899ec66f87502b5727939ac2f0ad0fabf89f Merge pull request #357 from jk-5/sharable - MinecraftForge/FML@79d42fca8d6b9d73204890ef0edb9d73cf075d87 Merge pull request #355 from jk-5/errorhandling - MinecraftForge/FML@7907e16e96de21e8ba536906ae71adcf02bfa535 Add a type adapter for artifact version. Should fix #354 - MinecraftForge/FML@7ac5bddbc3c227e0ed9385904a2bd9621078e2de Allow indexed messages to validate themselves. Also, catch exceptions from an embedded channel, and cause them to close the connection. It's ugly, but it means that the client doesn't crash if it connects to a screwy bungycord that's trying a 1.6 handshake for some reason. - MinecraftForge/FML@5adacc3b336bacbe30aa06175ef80c3aac08a62a Check the mod, not it's container, in the check handler. Closes #358 - MinecraftForge/FML@3d26f28bcf3e79e1f5fe20fcf056c604487dc35b Allow connection when server is apparently offline. Might allow :NOFML circumvention though. Hmmm. Closes #359 - MinecraftForge/FML@a62374d4aceac1c4ab39b3c0bae624ccbca65b6b findBlock should now return null, not the default block, if the thing being looked for is not found. Closes #352 - MinecraftForge/FML@6a695c4348d062af50b8cf5208530fc5036eba17 Try and stop the epic channel closed spam at close time. Closes #353 - MinecraftForge/FML@35a38d7840a5d0cd842005822c4ec6a9d3b65b6a Make sidedproxy support non-public fields. Closes #344 - MinecraftForge/FML@9d2e089df692655df04315a3822f43140015f3af Merge branch 'logging' of github.com:AbrarSyed/FML into abrar-borked - MinecraftForge/FML@79b04898d43d354714e09ce7e66efb5357ebcf61 And restore suppressions. ABRAR, DON'T TIDY CODE!!!! - MinecraftForge/FML@3dfb54e066ab91e44405706233f2dfffee9add72 Merge branch 'trait-optional' of github.com:RainWarrior/FML - MinecraftForge/FML@32bb7315cc6beff84f186a33e73219cc5280821a Add in example assets dir. Closes #308 - MinecraftForge/FML@16d33d298953b41dbbe3e3b504e800f4f46a3e1b Clean up and document outbound handler a bit better. Add in dispatcher target. Closes #361 - MinecraftForge/FML@5719b9ec533b3e43213dbafcb448221884efd9e8 Fix reply handling. Make the proxy message available for subclasses of indexedcodec. Fire user events into the network event firing. - -Build 1.7.2-10.12.0.1007: - LexManos: Add support in Techne models for the TextureSize tag. Closes #856 - -Build 1.7.2-10.12.0.1006: - LexManos: Updated FML: MinecraftForge/FML@444a7d7fa1cf7fad7dda67f581fa0e3be36069b7 Move placement of single player world load hook to fix NPEs. - LexManos: Fixed RenderWorldLastEvent never being called, was missed in 1.7 update. Closes #932 - -Build 1.7.2-10.12.0.1005: - LexManos: Fix flexible rails, Closes #944 - -Build 1.7.2-10.12.0.1004: - LexManos: Fix warnings in Forge codebase. - LexManos: - Updated FML: - MinecraftForge/FML@7c5d62704ac1d3e586f3bfe26265a534e5362c73 Make UniqueIdentifier final and add a hashCode. Closes #348 - MinecraftForge/FML@ff7b5845e7f6b300d413b917f57adc472a4ebcff Clean up some warnings about @Override - MinecraftForge/FML@275ccac6f14bc66b88c76b1040aa7167f995967c Fix NPE at startup - MinecraftForge/FML@2a5a8d0cd062d3feac9c4de234e3dab1ff4462e5 Fix memory leak?! - -Build 1.7.2-10.12.0.1003: - Christian: - Add exception logging to forge channel handlers as well - - MinecraftForge/FML@53557dcd0582e09f7f35eb3bc2fd130fba3be4a0 Put logging exception handlers on all channel inbounds. Fix problem with failure to login. Closes #350 - -Build 1.7.2-10.12.0.1002: - Christian: MinecraftForge/FML@9c96ca4402e4c231285f170281dd543bfffa191a Fire a custom packet channel registration/deregistration event, for any mods that care about that kind of thing - -Build 1.7.2-10.12.0.1001: - Christian: - MinecraftForge/FML@e14efe786f6255a18e148c4137f560f5e2d2a38f Some fixes and tweaks - MinecraftForge/FML@c013870b1df5e63bd84d92545ebdd434db74b5d1 Merge branch 'simplenet' - MinecraftForge/FML@30882b0c1d2743afebbebc288d73f25696e0815c Clean up some warnings. Add in simple network impl - MinecraftForge/FML@9cab2ab36e7981c847e3e9ae8c3fbbb36531ba6d Add in some tests and examples for the "simple" network stuff - MinecraftForge/FML@a429e106dd00b34302ec5893e0a8fc97c8fc8019 Fix bug with SSP, and hook so we can do confirmation of world loading, as well as other things - -Build 1.7.2-10.12.0.1000: - Christian: - MinecraftForge/FML@b362e8a2733eb3082975edfdf83c996f048b65d3 At the request of AbrarSyed. - MinecraftForge/FML@e344303ec7a5ed27c4378ff072a036df7a350902 Merge pull request #346 from Jezzadabomb338/master - MinecraftForge/FML@a4686b1261a9bad523b4efa8a36a4433a58897cc Added basic Mojang account authentication support for development time login. - MinecraftForge/FML@dd17979a2f6f02ac4a9dda09b52c96365cc5fec9 Fix bukkit connectivity issue. - -Build 1.7.2-10.12.0.999: - Christian: - Updated FML: - MinecraftForge/FML@1db3daa0e82e67fc27ca3d535a09c806c1a54d67 added override toString method for getting full name. - MinecraftForge/FML@acf74a34032224a73c4c03280cafa0042c35cf5a changed the readme to reflect new setup task. - MinecraftForge/FML@96c19b35807fa078cb18b4ae50567d0360bcdb03 undid readme change - MinecraftForge/FML@a89939e57e9ff061df3d53cf1cb075b31de5de1b Merge pull request #336 from jadar/master - MinecraftForge/FML@717a8d694532bd9438eed8d9cf4b57318b2b4cfd Fix csv string vs list of strings. Thanks immibis. Closes #334 - MinecraftForge/FML@584c0f368bca1d5b0223b5b3611b366b9a00f7d7 Fix potential ordering issue, clean up some imports - MinecraftForge/FML@28293b29ea65c30fe80c49e85e2ae15a4db68933 Add in a simple(ish) event driven network handling system. Register using newEventDrivenChannel and you'll get a simple network handler that will fire events at the subscriber(s) of your choice, whenever a packet is received. You'll also get some convenience methods for sending to things. - MinecraftForge/FML@80b00dc7966d96111e2ce8643db8e0f544c2bc89 Fix openGui. Closes #342 - MinecraftForge/FML@fc69bcf2807dc2b85eb52681ba9531cb3e2f1945 Fix up privacy derp in TickEvent. Closes #343 - MinecraftForge/FML@10d056a494aac22137b644cff341a5958e8168fc Fix possible NPE derp - MinecraftForge/FML@5da6dcc7e3607e5f107f6a7d39a4b4e1eb7fb306 Divert connection through FML, so we can deny connections to servers that don't want us - -Build 1.7.2-10.12.0.998: - ohai.iChun: Squash commits so Lex would stop whining. Fix erroneous position when getting player position with changed eye height. - -Build 1.7.2-10.12.0.997: - Christian: - Updated FML: - MinecraftForge/FML@d5bfd69e35b21f701390a8c4c4c58d7ec1fff1fc Fix problem with connecting to vanilla. SHOW what's modded and what's vanilla in the list. Hooks that make the blocking work to come - MinecraftForge/FML@dd098854b0b65b8509b8788422e02d989a991b87 Fix the keybinding array to the right one - MinecraftForge/FML@43068eb9862f280611f26f4107ff5ac2b42b08e4 Fix TargetPoint to be static - -Build 1.7.2-10.12.0.996: - LexManos: Attempt to prevent a NPE when MC renders a lot of things at once. - -Build 1.7.2-10.12.0.995: - minalien: Fixed MinecraftForgeClient for custom Item Renderer implementations. Removed check for forward-slashes (/) in texture asset locations (but left check for backslash in place). - -Build 1.7.2-10.12.0.994: - LexManos: MinecraftForge/FML@0d810c01fab99ac491c2277097a4198518fe6c75 Mark jopt needed on the server, herp derp, blame Abrar! - -Build 1.7.2-10.12.0.993: - LexManos: Deprecate BlockFire.func_149842_a, and throw exception if someone tries to set the burn properties for air. Should prevent 'The Air is on fire!' reports. - LexManos: Fix DoublePlant placement, closes #921 - -Build 1.7.2-10.12.0.991: - verybigbro: Create ru_RU.lang - -Build 1.7.2-10.12.0.990: - Christian: - Updated FML: - MinecraftForge/FML@5317672631f30e1c9655f0bb28dd8b158deea2fb Add a utility method for finding the channel handler name based on type. Should fix naming weirdnesses. - MinecraftForge/FML@9de9a1553086ebeeb5d5fc0f6d96da8680e52df0 Fix stupid hardcoding derp - -Build 1.7.2-10.12.0.989: - Vexatos: Create de_DE.lang - Vexatos: Update de_DE.lang - LexManos: Fixed pipeline naming issue in the ForgeNetworkHandler. - -Build 1.7.2-10.12.0.987: - LexManos: Fixing an infinite recursion case, Closes #916 - LexManos: - Models now load from resource packs - Models must now be loaded from resource packs using the standard resource pack reference. For example, to load a model named "assets/mymod/models/mymodel.obj", you would call AdvancedModelLoader.loadModel("mymod:models/mymodel.obj"); - Closes #670 - LexManos: Fix panes/iron bars not connecting correctly. Closes #904 - LexManos: Fixed the run config for dev time server, Cloases #913 - -Build 1.7.2-10.12.0.986: - Adubbz: Made canBeReplacedByLeaves default to whether a block isn't opaque rather than if it is, also uninverted the checks for canBeReplacedByLeaves in WorldGenBigMushroom, WorldGenSwamp, WorldGenTaiga1 and WorldGenTaiga2 - -Build 1.7.2-10.12.0.985: - Christian: Fix inversion - -Build 1.7.2-10.12.0.984: - Christian: - Updated FML: - MinecraftForge/FML@21b13d63512ce399c82cbb6b9042eefa6dcdaacd Lots of network cleanup. Gui packets now work too! - MinecraftForge/FML@b3f98d1ee0416aa452f8611d458968afdf50775a Fix derpiness with Mods button when Realms is available - MinecraftForge/FML@cdd9d92a4f8cd199e2d8a34bb398ef32e5f1e275 Starting work on the actual GUI. Still work to do. Needs an API. - MinecraftForge/FML@ab5eb3ccfff7f9ccfd8720b23fcef3131e54d57d Fix button size for GuiModList - MinecraftForge/FML@3113138bd1377d71afe3b8290e18511bfb6e5e97 Tweak button positions. - MinecraftForge/FML@c5e29b574a315d48668ebc9189bcc497a0eae13e Avoiding redundant calls to LogManager - MinecraftForge/FML@fbc1f8f6f9effa4a538880f9fec0ce5010226d09 Config GUIs in the modlist now work. - MinecraftForge/FML@fa4f3015a0d7147cbde3edec7664e78e5bcacbb9 Added transparent background for GuiIngameModOptions as per cpw's request. May not compile due to manual de-mcp-fication. - MinecraftForge/FML@7bf119e1e54cadff690ec31a4bab93c0d1d0aad1 Fix up readmes and credits. We no longer support modloader. - MinecraftForge/FML@779cd05aa1ced720a63cc508b82e68cc6fc8daa9 Tweaks - MinecraftForge/FML@b51fb913551a5116cc3b9bb7583b1666f280c650 Merge branch 'patch-1' of github.com:airbreather/FML - Christian: - Updated FML: - MinecraftForge/FML@6f1da6550e10164bd6c678829f111bb5de9383b6 Fix up mcpname derp in GuiScrollingList. - -Build 1.7.2-10.12.0.982: - Adubbz: Fixed sky colour transitions on a render distance of 16, fixed the WorldGen of various things - -Build 1.7.2-10.12.0.981: - jk-5: Update ForgeMessage.java - jk-5: Added a constructor and made the fields package-private - jk-5: Added default constructor for reflection - -Build 1.7.2-10.12.0.980: - LexManos: Update patches for AT changes. - LexManos: Fix inverted login in BlockPistonBase causing blocks to break incorrectly. Closes #910 #909 - -Build 1.7.2-10.12.0.979: - Christian: - Updated FML: - MinecraftForge/FML@22ba6fda5ee2dbf29dc03ba93ff9c7707edeaeee Expose the nethandler in a few places, and pull out FMLEmbeddedChannel, exposing a utility method on it. More to come. - LexManos: Update for the FMLEmbeddedChannel change. - -Build 1.7.2-10.12.0.977: - Christian: - Fix build.gradle for tweakClass property - - Updated FML: - MinecraftForge/FML@f36152398d1d287e7a55a31c77a2614cfb63e1b6 Add in the tweakclass, fix the json for lzma @ the server. - -Build 1.7.2-10.12.0.976: - Christian: - Updated FML: - MinecraftForge/FML@5d069629cf47cd04f2002b3b9a2c32b0ea73c26e Allow itemstacks for furnace recipe inputs. Allow passing extra arguments through registerblock into the itemblock constructor. - -Build 1.7.2-10.12.0.975: - Christian: - Updated FML: - MinecraftForge/FML@061288909de0f0452adf51a5a9935fd09992c801 Fire simple network connect/disconnect gameevents. - -Build 1.7.2-10.12.0.974: - Adubbz: Made BlockCrops.getDrops call its super method - -Build 1.7.2-10.12.0.973: - Christian: Fix the network handler for forge - -Build 1.7.2-10.12.0.972: - Christian: - Updated FML: - MinecraftForge/FML@34819c9303870f560232464a2d16eb46d152515c Make gradlew executable on linux - MinecraftForge/FML@53a1f9841421b41d543d7d1d51319b44c86a527e Attempt to load old pre-1.7 worlds. ENSURE YOU HAVE A BACKUP! - MinecraftForge/FML@6a5f9e135f88b662e4e01e8882f861448910ca90 Fix example mod code for 1.7 - -Build 1.7.2-10.12.0.971: - Christian: Allow tools to override their material harvest levels. - -Build 1.7.2-10.12.0.970: - Christian: Tidier implementation of previous commit. Should fix for subclasses of individual tools too - -Build 1.7.2-10.12.0.969: - Christian: Add in harvesting abilities of the items, should fix effectiveness - -Build 1.7.2-10.12.0.968: - Christian: - Updated FML: - MinecraftForge/FML@f8d6213829d570501166d64d7c8bb4977567131f Update render registry - MinecraftForge/FML@ec316f113fefef12f6defed9eb68de368d7f4420 AT for renderblocks - -Build 1.7.2-10.12.0.967: - LexManos: - MinecraftForge/FML@3714426e19f8f0edaaeda8c787993f8f3615a44d fix derp in example builscript - MinecraftForge/FML@01fb451b6918599de5e732d7ff30c761438ab930 Merge pull request #311 from AbrarSyed/patch-3 - MinecraftForge/FML@30d532f4fc6fc65ea7e79707a75ff4d6ea0ea031 Pass 1: Most patches are restored. - MinecraftForge/FML@53127eec308d3929d68d3d9fafabcfef37e95c37 Merge branch 'master' of github.com:MinecraftForge/FML - MinecraftForge/FML@7ab3c3a37ceb8ab945208206aec86739a2138329 Update gitignore - MinecraftForge/FML@38cec7a11fae7cf12bda3a8d16a50bb6136d8886 The basic network handshaking for FML is done. All scenarios seem to work. - MinecraftForge/FML@9f928963f20bc9bbfbe1391fb16c6f5ca5fd4344 A network design I like. It uses the netty embedded channel to allow mods to build channel pipelines on top of custom payload packets. - MinecraftForge/FML@58f7487cfaf4a25a8349021b9cca5ef4ba0b541c Check in patches. Add in some network timeout tweaking values so you can debug the network. - MinecraftForge/FML@e544adba5c7e9286f917342af2669e5888fa0a17 More cleanup. Bidirectional server <-> client network works for mods as well as FML|HS now. - MinecraftForge/FML@f5c38e2359c2e6eca13cd6606465ee36086a7113 OK, network channels appear to be working well for both dedi and integrated servers. The beginnings of the new mod structure too. - MinecraftForge/FML@9c96a0a10a5cbe34786be8fd41f9818b5ac929bc More network stuff, partially done id syncing. - MinecraftForge/FML@2aaaeba15eabdec189daa8662e9ffdf0b5a09dbe ID loading from the server save now works. - LexManos: Kill liquids finally. - LexManos: Bump data for 1.7 start. - LexManos: Some work on 1.7, waiting for Abrar to fix a few things. - LexManos: - Updated FML: - MinecraftForge/FML@a30f17362764f3e4e594386e193f9e4368e6836e Add sonatype snapshots repo for SpecialSource snapshots. - MinecraftForge/FML@b2550b8a693315ccc205f5315eac67c5283d7af9 Add mappings for Items/Blocks fields. - MinecraftForge/FML@57f7f1d7abd304d3e9f42567f1d66c10122e4ec6 Update for fixed Enum cleaning and names. - MinecraftForge/FML@99c681ad8736e4976053718c3d453b2fb30eefe0 Did it manually, forgot it needed the end comma - LexManos: - Updated FML: - MinecraftForge/FML@1d71c017f45aa7ed9d7d7c5ed5250a8d22477980 ID syncing. - MinecraftForge/FML@fd36f50d8210342f65cb0272bac56a3bcc42dd18 Cleanups - MinecraftForge/FML@89e4e483c204c11b6fdfed34893fc223a7d6a899 Add in a remapping event for mods to consume. - MinecraftForge/FML@cd417c6786256fa23f181ff0b76696bc6dfb0291 Fixed remote and local connections work with mods now. - MinecraftForge/FML@ef492407ef812bb6bbc7f0bd8efbd16d07efcafb Entity spawning works. - MinecraftForge/FML@d0d31d9575403eb2ec058898b86ffd99a9220f75 SpawnAdjustment packet. Clean up stuffs. No more compile errors. - MinecraftForge/FML@3e278acb71e4e3d0406e80f0fad5071c9215ed33 Fix stupid possible compiler error. - MinecraftForge/FML@009d4dee2328cc8d97b74177a2c5a3c359e6564a Fix the exc file. Fix the deobfremapper for handling inner classes. - MinecraftForge/FML@49cb893d12bd4f82b5d1b50d1e6517a256525d32 Fix exc this time *sigh* - MinecraftForge/FML@31efcfc3b2085f5d4e070ddab34a0be1481b4c6f Clean up patches for latest exc. - MinecraftForge/FML@7a4ceebf5efe5b3650080cf912e371d92fc70a55 Kill old patches and add rejects to ignore file. - MinecraftForge/FML@7ea571f593464ad4226ba845da27ff66161621b1 Fix AT, Fix exc. Almost works now! - MinecraftForge/FML@b852e302851cfaf77e1db6f86408e8d049703656 First functional release under reobfuscation. - MinecraftForge/FML@df870c1a3341d8e2e88d7fc3e2f3d9ed2507989f Update shiped ForgeGradle for 1.7 - MinecraftForge/FML@55aa337f952bc72c5a001a6ed661978b11822c63 Rename synthetic bridge methods, these methods are not decompiled, but need to reobf correctly cross the recompile boundary. - MinecraftForge/FML@0098c57f94808751062ee45f2ee267324bb42089 Merge pull request #316 from AbrarSyed/patch-4 - LexManos: Comment out fluids until King gets his hands on it - LexManos: Killed a few hundred compile errors. - Christian: - Moved the core event handler parts to FML. Implemented the Forge network handler based on the new - netty strategy. - - Updated FML: - MinecraftForge/FML@3b2994a3def35a2d3058960b71dc59dc48b802f9 Some patching touchups - MinecraftForge/FML@557357fe179529e0b44aab2f3fcef0c5adf981d5 Update for log4j2 - MinecraftForge/FML@a2b324beb2ef6ec73000678c9305fd70d4ec1643 Copy eventhandler from Forge into FML. It is going to replace a lot of the runtime event systems. - MinecraftForge/FML@4071ff38afe15fddf5db0be882f5627f503a37c6 Patch some GUIs. We're gonna add some basic mod gui config support. - MinecraftForge/FML@0b419ac79c307579f162d47e0388a9d75bcd0a6e Fire a user event down the channels when a handshake has occured. - Christian: - Updated FML: - MinecraftForge/FML@32561265fc935cd6639d5b2e086e879f375676fa Ticks, Player events, keybindings, all migrated to the new event driven system. - LexManos: Inital patch update for 1.7.2, Doesn't compile, not done yet. - LexManos: - Updated FML: - MinecraftForge/FML@a17489172cd54ca955548b15fa0669c9f95d7f45 Code to disable mods at runtime, or other times. - MinecraftForge/FML@85516d9588ebfadbba25f21b2f973e4e81abbaa6 ICraftingHandler, IPickupHandler are now both events. - MinecraftForge/FML@e4b63a1801b453797f5e820eb3f5bd42e6d43948 IWorldGenerator now has an ordering at registration time. This means the order of worldgen should be much more stable. - MinecraftForge/FML@ef3856f9a34e82a05cb2b7715e3611f8fb1a9a6b Update patches for Gradle's rename rewrite: MinecraftForge/ForgeGradle@19e7acf2a27a6c6ae60f6e8ab38337defddc16d3 - MinecraftForge/FML@31ea100b29dfdb4fc907e212c3d49a5240ca72a9 Working on id missing handling - MinecraftForge/FML@3e76dfba34aaba4397fc3fb2bd28e0d1f0abe3e4 More tweaking on id stuffs at worldload - MinecraftForge/FML@f860c8ad3bc7537f885b27c7f045b5b1140c05f4 bump to legacy launcher 1.9 with logging unification stuffs. - bloodshot: - Refactored BiomeManager stronghold add/remove methods to support new - - MapGenStronghold dynamic biome changes. - Changed InitNoiseGensEvent to pass a NoiseGenerator array instead of - NoiseGeneratorOctaves due to new NoiseGeneratorPerlin in - ChunkProviderGenerate. - Fixed worldgen crash caused by wrong metadata in Chunk patch. - LexManos: Get object based on identity not name. - LexManos: Forge uses the FORGE channel for packets. - LexManos: Fix MethodNotFound crash when shutting down internal server. - LexManos: - Fix: - Block placement/interaction - Tesselator crash due to wrong mapping - Missing isreplaceable check in world.canPlaceAt - Small foratting/logging cleanup - Temporarly commented out efficancy changes till I implement it. - LexManos: - Updated FML: - MinecraftForge/FML@58132ccda3a575f10fc209c421fd5d80e01164cc Add new required --accessToken to launch specs. - LexManos: Bump version to 10.12.0 to mark 1.7. - LexManos: Fix debug HUD rendering semi-transparently. - LexManos: Temporary fix for items rendering with effects on one layer. Restores default vanilla rendering, which is considered a bug in modded community. - LexManos: Move Grass {Flower} registry to BiomeGenBase as 1.7 made flowers Biome specifc, this means modders who wish to add global base flowers need to add them to all the biomes indavidually. - LexManos: Fixed accedential inverted logic that caused Potions to render incorrectly. Thanks iChun. - LexManos: Fix items rendering on the GUI with invalid state due to glint rendering changing it. Thanks iChun. - Christian: - Updated FML: - MinecraftForge/FML@156a9ae03a3c80bd1499a8e692c44a322ad9df62 Fix build script - MinecraftForge/FML@7d3b1250e8368886bed0e0da350a94abaa4b6247 Fix handshaking properly. Also, fix ID syncup. It now will completely freeze the idmap after preinit. This frozen map is used to inject "new" stuff into existing serverside worlds. Interesting sideeffect: remote servers lacking things will change the client, to also LACK ids for those things. watch for -1 ids in your remap events. Note: idmaps should be considered temporary per server instance. SERVERSTOPPED will restore "startup" state, as will client logout. - LexManos: - MinecraftForge/FML@c180d9b15735ce89a38c497acd65fa3fab595f77 Add 1.7.2 base json, Gradle will automatically download updated versions of this. Keeping it in the repo allows us to se - e what base json we have built our jsons off of. And if it changes update accordingly. - LexManos: Added constructor to WorldType, and delegated the BiomeLayer management to it. Also updated the access transformer for Item/Block classes. - LexManos: Forgot to regen patches... - LexManos: Resize pending tile updates when it goes over the curent length. Fixed AIOOB error. - LexManos: Add a version check mechanic to startup, it is done in a seperate thread and has a config option to compleetly disable it. This allows us to notify users of new recomended builds. Hopefully stemming the flow of outdated help request. Also adds a warning to the main screen if you are running a 'Beta' Forge. Which means a Forge for a new version of Minecraft that we have not promoted a recomended build for yet. - LexManos: Fix dig speed on redstone ore and obsidian. - ohai.iChun: Add render offset to event. - Christian: - Updated FML: - MinecraftForge/FML@268bbabee6ae3fa1d596bd18e172298e26dc9ce4 Fix handling world reloads when new stuffs are added - -Build 1.6.4-9.11.1.964: - LexManos: - Bump build for gradle fixes: - Now Builds for java 1.6 - Include version,json in universal - Fixed classpath issues in eclipse task. - -Build 1.6.4-9.11.1.963: - luacs1998: - Update readme for ForgeGradle - - Let me know if there's anything else to add or change. - luacs1998: Updated - luacs1998: Another update for eclipse users - luacs1998: Update README.txt - -Build 1.6.4-9.11.1.961: - LexManos: Updated FML: MinecraftForge/FML@c2b919d339e5f63271cfb67a77235c21c5c3b80e Don't validate signatures in dev env. - -Build 960: - Abrar Syed: Step 1: The Purge - Abrar Syed: update FML for gradle changes - Abrar Syed: Step 2: The Reformation - Abrar Syed: Step 3: The Rebirth - Abrar Syed: fixed versioning and stuff - Abrar Syed: added buildSrc to the gitIgnore - LexManos: Fix for new FML, and publish to maven local - LexManos: Update run configs. - LexManos: - Updated FML: - MinecraftForge/FML@e9a7660cb8961660186c7c23e61ab35f9c2dfb81 updated samples - MinecraftForge/FML@30894f7afadf5d3f3c3d5a54c3f904413d5f2309 Merge pull request #307 from AbrarSyed/master - MinecraftForge/FML@c4b8a393f90b00ad7ee4992ea4341ffb6d676abb Make the working directory the root of the eclipse workspace. - LexManos: Regenerate all patches, No functional change as added this is a formatting change only. - Abrar Syed: update build.gradle - porcariadagata: Make the gradle wrapper executable. - LexManos: Proper configuratuion name for jenkins. - LexManos: Fix build file pom closures. - -Build 1.6.4-9.11.1.953: - LexManos: Fix NPE on specific tile entities when the block break event is canceled. Closes #863 - LexManos: Fix NPE in FakePlayers when they are created in a purely client side environment. To remove in 1.7 as FakePlayers should be used for server side interaction with the world on a player's behalf, not for client rendering. - -Build 1.6.4-9.11.1.952: - Christian: - Updated FML: - MinecraftForge/FML@23baf3a8ce58cb8306189401a60647957ccbb4c2 Actually fix the nethandler code - - Update patches - -Build 1.6.4-9.11.1.951: - Christian: - Updated FML: - MinecraftForge/FML@b7f34629c3c47b92ee89d72b0dc935b4997cb009 Don't try and open GUIs on the server. - Christian: - Updated FML: - MinecraftForge/FML@da72640c7ef1f44c49f7f592fbdd193622a30b40 Way to go, missing import. *sigh* - -Build 1.6.4-9.11.1.949: - Christian: - Updated FML: - MinecraftForge/FML@6af42bc656dfb98972d034363352affc9e777805 Add in null protection for client/server sides of handleChat - Christian: Don't send openGui commands from the fakeplayer. Fixes thaumcraft and probably others. - -Build 1.6.4-9.11.1.948: - CovertJaguar: Fix Water/Lava Fluid Localization - -Build 1.6.4-9.11.1.947: - LexManos: Noop out FakePlayer.addStat. - -Build 1.6.4-9.11.1.946: - Christian: - Updated FML: - MinecraftForge/FML@3d25b4e793c59a9131a441d6c7a2d80cac9cd701 Add in the ability to strip interface references for specific interfaces - this is probably mostly useful for scala scenarios where sythetic methods are generated and is not a substitute for using Optional.Method where appropriate. Closes #300 - -Build 1.6.4-9.11.1.945: - onibait: Add block break events based on @bloodmc's initial 1.5.2 Pull Request - onibait: Add block break events based on @bloodmc's initial 1.5.2 Pull Request - onibait: Fixed formatting - onibait: - Cleaned up patches to BlockOre and BlockRedstoneOre - Fixed trailing whitespace (it bugs me too) - -Build 1.6.4-9.11.1.944: - Christian: - Updated FML: - MinecraftForge/FML@f4532410ec1dbf43ce15dfa78d07e5f7be408b08 Change a couple of warnings, as a prelude to 1.7- preinit is now required for all GameRegistry activity, and every item and block REQUIRES registration. - -Build 1.6.4-9.11.1.943: - Christian: - Updated FML: - MinecraftForge/FML@8f87021b0f1ae5b277ad4d1891761b7a7ae1ab71 Fix derp with custom properties. They work now! - -Build 1.6.4-9.11.1.942: - Christian: - Updated FML: - MinecraftForge/FML@bc57ff9e83803d804e9d5374d76273fcd68611f4 Fix recursive API dependency resolution. Allows nested APIs, such as BuildCraft's - -Build 1.6.4-9.11.1.941: - Christian: - Updated FML: - MinecraftForge/FML@de8ab934d8ae960ebc0dede16218ca1e9e488ebc Fix up duplicate entries - -Build 1.6.4-9.11.1.940: - Christian: - Updated FML: - MinecraftForge/FML@81fe1c9682234297443402a54e4b852ef49d0ba8 Add in an API marker for API type packages. This does several things: 1. Packages marked as API will generate a new "modid" (the provides) that can be depended on. 2. Packages marked as API will be searched systemwide, and anything declaring that package (even without the API marker) will get an implicit dependency on the API package. 3. The API package itself will get a soft dependency on the "owner" package. - -Build 1.6.4-9.11.1.939: - LexManos: Add new recipe sorter that is called after all mods are initalized. This is disabled by default in 1.6 to not break current worlds as it may change machine's recipy outputs. Will enable by default in 1.7. Players may enable it in the forge config. - -Build 1.6.4-9.11.1.938: - xcompwiz: - Adds a Check to prevent Biome Replacement - - Splits the BiomeGenBase constructor to create one which takes a flag - that indicates whether to insert the biome object into the biomeList - array. The standard constructor calls the new one with the default of - true. This allows biome wrapper-objects to exist. - -Build 1.6.4-9.11.1.937: - Christian: - Updated FML: - MinecraftForge/FML@dac7f590eabb326c4467dbc829b4aae1e4be2779 Modify ordering of networkmod registration and mod instantiation. This fixes VersionCheckHandler logging an incorrect failure message due to NPE. - MinecraftForge/FML@f0dc530b2833a1c89673208fe296dba5520671c1 Fix up documentation of VersionCheckHandler - it only ever accepted a String and only works on the NetworkMod annotated class - MinecraftForge/FML@243a21a353e6b7717f64008776928c7132110ddf Wrapping coremods as tweakers. Part 1. - MinecraftForge/FML@58a299aabcfadb4139f126a2d46b5247bede4185 Attempt to inject coremods as tweakers, so both can share a dependency ordering - LexManos: Format strings properly in MC's internal logger. Fixes resource pack case warnings. - -Build 1.6.4-9.11.1.935: - LexManos: Updated FML: MinecraftForge/FML@bf54d4d66799f2e58944095826d0722ed0120b1f Make each mod's EventBus log a child of it's main logger. - LexManos: Fix null pointer exception in BiomeDictionary causing the ChunkManager's config to not load/save. - -Build 1.6.4-9.11.1.934: - LexManos: Add wildcard versions of OreDict replacements, Closes #827 - -Build 1.6.4-9.11.1.933: - Christian: - Updated FML: - MinecraftForge/FML@da4337efbfa07b35f5883107768f9ba2f1b24b9b Fix up handling the new method signature data for NetworkCheckHandlers - -Build 1.6.4-9.11.1.931: - Christian: - Updated FML: - MinecraftForge/FML@f92962bbbbb90c19788a5dc2eafdc2eeefdd77ce Use null to empty, so missing values work. *sigh* - -Build 1.6.4-9.11.1.930: - Christian: Add in an event for zombie summoning. Allows for mods to control summoning behaviour, as well as custom summoned mob. - Christian: And remember to make the event class static *sigh* - -Build 1.6.4-9.11.1.928: - Christian: And allow for tweaking baby chance as well. - Christian: And set the RIGHT variable *sigh* - -Build 1.6.4-9.11.1.926: - Christian: Allow configuration of the zombie additional summoning mechanic. The vanilla mechanic is a little borked at times. - -Build 1.6.4-9.11.1.925: - Christian: - Updated FML: - MinecraftForge/FML@58577775d277a4408bda510534eb36841b08ced4 Very minor style fixes - MinecraftForge/FML@96be82343c25b83dd842ada8d6e8b66eb4e4ee00 Merge pull request #280 from mc10/patch-1 - MinecraftForge/FML@2714da10228020a6f2321f6c9a703f0d24fe1370 Primitive capability for tweakers to order. Add a "TweakOrder" integer property to your manifest, or accept the default of zero. - -Build 1.6.4-9.11.1.924: - LexManos: Prevent session from being printed to the console, also make sure the username is not empty. Causes a lot of bugs further down the line. - -Build 1.6.4-9.11.1.923: - Christian: - Updated FML: - MinecraftForge/FML@fc3e7647d2aff01146b1f5bd2ab6b57ef8e833e5 Support, and fix up, interface lists for Optional - -Build 1.6.4-9.11.1.922: - LexManos: Added some missing air checks to world gen features. - -Build 1.6.4-9.11.1.921: - LexManos: Fix repeated argument in CleintCommands. - -Build 1.6.4-9.11.1.920: - LexManos: MinecraftForge/FML@a381874bb9c3bdeeb508bb81719b4d210eb29696 Delay sound system backend initalization to speed up startup and prevent race condition on some computers. - -Build 1.6.4-9.11.1.919: - reflex_ion: - Added PlayerOpenContainerEvent and added ForgeHooks.canInteractWith - - - Used to override the canInteractWith during player tick - - setResult to ALLOW/DENY as required - - Defaults to Vanilla behaviour in any other instance. - - Required for LittleBlocks Mod and to Assist Gullivers Mod - -Build 1.6.4-9.11.1.918: - Christian: - Updated FML: - MinecraftForge/FML@bc64ceabef76b1f4667b22ca8241b72351b44338 Optional shouldn't be constructable itself. It's purely a wrapper thing. - MinecraftForge/FML@55525f6d2eb24f42c26a291b8ce98feb4d4498c9 ModLoader is officially deprecated. It will all cease to be with 1.7. - -Build 1.6.4-9.11.1.917: - Christian: - Updated FML: - MinecraftForge/FML@63ba3aa0099f43183315fb4e16f9e8e8007362f8 Add in support for Optional interfaces and methods. Be gone coremods! - -Build 1.6.4-9.11.1.916: - LexManos: Fix missing patch which caused per-world storage to not be saved. - -Build 1.6.4-9.11.1.915: - rhilenova: Added pre/post to player list rendering in GuiIngameForge. - rhilenova: Moved PLAYER_LIST event inside display check. - -Build 1.6.4-9.11.1.914: - LexManos: - Make isItemStackDamageable() pass the stack to getMaxDamage() to use the Forge version of getMaxDamage(). - Fixes display issues with mods using getMaxDamage(ItemStack) instead of the vanilla one. Closes #805 - LexManos: Bump version number for todays changes. - -Build 1.6.4-9.11.0.913: - ben.blank: allow blocks to choose how they handle indirect power - ben.blank: move `shouldCheckWeakPower` to Forge section - -Build 1.6.4-9.11.0.912: - jrtc27: Pass arguments to install.sh and install.cmd to install.py - -Build 1.6.4-9.11.0.911: - LexManos: Add cancelable EntityStructByLightningEvent, Closes #789 - -Build 1.6.4-9.11.0.910: - LexManos: Stack sensitive version of Item.getItemStackLimit. Closes #771 - -Build 1.6.4-9.11.0.909: - Anthony Lomeli: Villager Trading GUI will not open if Player is sneaking. - -Build 1.6.4-9.11.0.908: - LexManos: Added all the vanilla records to the ore dictionary. Closes #731 - -Build 1.6.4-9.11.0.907: - LexManos: Direct canApplyAtEnchantingTable through canApply Closes #740 - -Build 1.6.4-9.11.0.906: - LexManos: Add pre and post event to rendering Chat, allowing for placement of the chat box. Closes #733 - -Build 1.6.4-9.11.0.905: - LexManos: Set densityDir in BlockFluidBase's constructor, closes #737 - -Build 1.6.4-9.11.0.904: - LexManos: Fix placement of snow cover over metadata 6. Closes #724 - -Build 1.6.4-9.11.0.903: - LexManos: - Add the ability to register chat commands that only execute on the client. Works with autocomplete. - Client commands are gray when shown in the autocomplete list (when you press tab) - Closes #640 - -Build 1.6.4-9.11.0.902: - LexManos: Update workspace to point at launchwrapper 1.8 - LexManos: Vanilla hopper should obey the IInventory contract, TileEntityHopper now takes into account IInventory.getInventoryStackLimit() when inserting items Closes #597. - -Build 1.6.4-9.11.0.901: - hobos_taco: - Added ItemTooltipEvent - - This event is fired at the end of ItemStack.getTooltip(EntityPlayer, boolean), which in turn is called from it's respective GUIContainer. It allows an itemstack's tooltip to be changed depending on the player, itemstack or whether the advanced information on item tooltips is being shown, toggled by F3+H. - -Build 1.6.4-9.11.0.900: - Christian: - Updated FML: - MinecraftForge/FML@5265e34a350adbb762264379f0134bfa40d33eaa Fix null killing the server - -Build 1.6.4-9.11.0.899: - LexManos: MinecraftForge/FML@35ab9f52b02d84592e4c7607feb6009710b2f7d9 Fix md5s for new checksums.sha1 in scala libraries. - -Build 1.6.4-9.11.0.898: - Christian: - Updated FML: - MinecraftForge/FML@e356f4d713b1269825839954fe86f5312ede0fc6 Cross-modsystem compatibility fix with thanks to Mumfrey @ liteloader - MinecraftForge/FML@9b55f1f48f89a5348ac1d58622b71946f310316a Attempt at a shared modlist implementation - should allow visibility between liteloader and fml for "mod list display" - -Build 1.6.4-9.11.0.897: - Christian: - Updated FML: - MinecraftForge/FML@bfc25bc5da1ff0f6fd0faf817b32a8f6d35dedc2 Add to both the classloader and the parent - -Build 1.6.4-9.11.0.896: - Christian: - Updated FML: - MinecraftForge/FML@9f0f9e7288afc6cce9a425ad770a208af9e28648 Fix deobf tweaker - -Build 1.6.4-9.11.0.895: - Christian: - Updated FML: - MinecraftForge/FML@ce6404fd5bb5e8e425af3bcafeaa285575bf39a3 TYPOS!!! - -Build 1.6.4-9.11.0.894: - Christian: - Updated FML: - MinecraftForge/FML@8f18a3de9a02b003762dace891829ef64dfedf49 Separate deobf tweaker so it runs last. Should fix problems with cascaded tweakers expecting an obf environment. - -Build 1.6.4-9.11.0.893: - Christian: - Updated FML: - MinecraftForge/FML@8e26c99de3b44d272d2fdc398e0687db17bce3b7 Add debugging for deobfuscation - MinecraftForge/FML@1d902df5814b815959165e4aa69272003f002d25 Use the negative cache in latest legacylauncher. - MinecraftForge/FML@9815d8c3793182a08fcdbd29376a3f70bff464d0 Update for launchwrapper 1.8 - -Build 1.6.4-9.11.0.892: - LexManos: Add wrapper exception to the new Structure ID system to point to the correct Structure. - -Build 1.6.4-9.11.0.891: - LexManos: Update dev workspace for 1.6.4 .. - LexManos: Remove some side onlys on BiomeEvents that don't need them. - LexManos: Fixed typo in bounding box based ladder checks that caused potential infinite loops with entities in certian positions. Thanks Overmind for reporting it. - LexManos: - Updated FML: - MinecraftForge/FML@fc8c3bef0380d59c0842a252e4f0bd29127ee78b Update to new installer that uses xz compression and better support for non-standard jvms - -Build 1.6.4-9.11.0.886: - Christian: - Updated FML: - MinecraftForge/FML@a4de22c1addf0a6b95d38e467a96f2af417c86d5 And use the parent that's actually going to be valid. *sigh* - -Build 1.6.4-9.11.0.885: - CovertJaguar: - Fluid Rarity should have a default - - Oops. - Christian: - Updated FML: - MinecraftForge/FML@70cffe6982b27df0ea7d8d4d8851a0c0043bb2cb Herpaderp. Make addURL accessible. *sigh* - -Build 1.6.4-9.11.0.884: - Christian: - Updated FML: - MinecraftForge/FML@4a94c2c71bb4cc9644caeb06011a189989b22f87 Fix NPE when loading second single-player world - MinecraftForge/FML@0e80fcb8f716cfef5b016a73ca32ff0e2f3c3c05 Merge pull request #284 from smcv/uninit - MinecraftForge/FML@39620f1e41464f53482277dc3bcb0b9eed8ca25c Fix injection of tweaker into system - -Build 1.6.4-9.11.0.883: - Christian: - Updated FML: - MinecraftForge/FML@79c39f8b7c711377f7919abd1ee6a56a339d1062 Fix classpath for launchwrapper 1.7 - -Build 1.6.4-9.11.0.882: - traincrazyb: Correcting SoundManager Transformer - -Build 1.6.4-9.11.0.881: - Christian: Clean patch fuzz - -Build 1.6.4-9.11.0.880: - Christian: - Updated FML: - MinecraftForge/FML@f6190e8752013c0d6857090ffd42559cf83809ae Update workspaces for 1.6.4 - -Build 1.6.4-9.11.0.879: - Christian: - Updated FML: - MinecraftForge/FML@25981706ef12654b6c2baccc80fa2298bb5afb4a Update for MC 1.6.4 - MinecraftForge/FML@0950b9fc8441a2d3b022ed876f17ee5ac0c47b9c Fix up a deep crash in the early server init hanging the client - -Build 1.6.3-9.11.0.878: - LexManos: Remove duplicate access transformer - LexManos: Move have handler creation up, to prevent NPE. - -Build 1.6.3-9.11.0.877: - LexManos: - Updated FML: - MinecraftForge/FML@e7dd728f955aa4713fef45fea770b1f91246d712 Format the log messages through MessageFormat. Thanks CovertJaguar for the pointer. - MinecraftForge/FML@82d896a35e08be5712bdc15bdb93e5d4fc0ddd46 Make final transformers actually work on methods as well. - -Build 1.6.3-9.11.0.876: - LexManos: Move the Structure data save files to per-world data folders. Vanilla saves them to the global folder which will potentially cause conflicts if two worlds generate 'Villages'. Which in the modded world is highly likely. Refer back to the long standing vanilla issue where nether 'villages' would override the overworlds villages, it's the same situation. - -Build 1.6.3-9.11.0.875: - LexManos: Make MapGenStructureIO name registration functions public, Any mod that has anything extending StructureStart or StructureComponent must register there classes and create a default (no parameter) constructor. - -Build 1.6.3-9.11.0.874: - LexManos: Unfinalized Item.getIconIndex(ItemStack) - -Build 1.6.3-9.11.0.873: - LexManos: - Updated FML: - MinecraftForge/FML@da70cdd35a378d02db47d2aa31fb9aac87beaedc Update tweaker for new Launcher API - MinecraftForge/FML@352117fd78eec745da6c80b8d354947c4dbbbb48 Update for new installer and thank you. - MinecraftForge/FML@40a34af43105ebcb5a63ce2351ca119da5a8158e Merge branch 'master' into newtweak - MinecraftForge/FML@e77d2547ad447025729ae7f3cccaaf343c4c86f9 Update for pre-ninja 1.6.3 update - MinecraftForge/FML@34493b0d99e2cf2bdca080ff226f2dfeedb1cf51 Update for real 1.6.3 update - MinecraftForge/FML@95afc95b248ecc69bc6ffcc5a95912820d8f4066 Update mcp mod info - MinecraftForge/FML@ff75416a325717770a5cf457c859bfb0abcbe281 Update mc_versions data and commands patch and eclipse workspace - MinecraftForge/FML@8f2e67558127f16d92399ea97cbcb0df46d52e19 Update the src distro's eclipse workspace. - LexManos: Bump version for new MC version. - LexManos: Actually push the submodule update -.- - -Build 1.6.2-9.10.1.871: - Christian: - Updated FML: - MinecraftForge/FML@81328b6684c5127427153807b5e498c2efefb96b Add in support for using a mirror list and provide checksums for packed download of libs - -Build 1.6.2-9.10.1.870: - Christian: - Revert "Added a RenderType that allows Map-style rendering w/o inheriting from" - - This reverts commit eb4688bf5ea132cd8ddc802a7dad6d423ad50543. - - Conflicts: - patches/minecraft/net/minecraft/client/renderer/ItemRenderer.java.patch - -Build 1.6.2-9.10.1.869: - vilim.lendvaj: Prevent NPE in fluid lookup for block - Christian: Fix broken PR from vilml. TEST! - -Build 1.6.2-9.10.1.867: - CovertJaguar: - Allow Fluids to have Rarities - - Used for tool tips. - -Build 1.6.2-9.10.1.866: - Christian: Fix the divider - -Build 1.6.2-9.10.1.865: - Adubbz: - Sky colours now smoothly transition - - Made transitions even smoother - - Sky colours now smoothly transition - Christian: Move stuff around a bit- also tie range and enabled to options. - -Build 1.6.2-9.10.1.864: - ml: - Added a RenderType that allows Map-style rendering w/o inheriting from - ItemMap. - Christian: Tweak patch comment - -Build 1.6.2-9.10.1.863: - mitchpetrie29: Check if block is air instead of just ID zero when growing from stem block. - -Build 1.6.2-9.10.1.862: - Christian: Allows proper raytracing from actual player eye position rather than hardcoded eye heights. - -Build 1.6.2-9.10.1.861: - claire.alexandria: Added fov hook - claire.alexandria: fixed merge - claire.alexandria: Small formatting changes (opening braces on new line) - -Build 1.6.2-9.10.1.860: - Christian: - Updated FML: - MinecraftForge/FML@b5af446d7111730c7973c9f0d6b76e62b78b9131 Fix sidedness derp in LanguageRegistry. - -Build 1.6.2-9.10.1.859: - Christian: The partial tick should be available for all render player events. Weird it wasn't. - -Build 1.6.2-9.10.1.858: - Christian: Reverting HarvestEvent, for new implementation - Christian: Redo harvest event. This time with simpler logic, that should be less liable to weird "missing" stuff. - -Build 1.6.2-9.10.1.857: - LexManos: Fix bug where guis were not closed properly, resulting in signs not having there text set. - -Build 1.6.2-9.10.1.856: - Christian: Change trigger calculation so entities get some time to age before refiring the event. - -Build 1.6.2-9.10.1.855: - LexManos: Create helper apply_patches script and add paramter to change patch output folder. - -Build 1.6.2-9.10.1.854: - Christian: - Change from Cancelable to using a Result. This means you can force despawn mobs you - don't want around anymore. Also, deferred check to once every 20 ticks. May tune it - down further or make it a config if this event is a lag issue. - -Build 1.6.2-9.10.1.853: - Christian: - Add a cancellable despawn event- allows mods to decide to prevent the despawning - of certain otherwise normally despawnable mobs. - Christian: - Added fov hook - - Small formatting changes (opening braces on new line) - Christian: Create es_ES.lang - -Build 1.6.2-9.10.1.852: - Christian: Add some javadoc to the HarvestBlock event. - -Build 1.6.2-9.10.1.851: - Christian: Use the dropchance from the event. - Christian: Clean up some formatting. - -Build 1.6.2-9.10.1.850: - claire.alexandria: Added tessellation methods to obj model, for ISBRH-friendliness - claire.alexandria: Fixed both RenderAllExcept behaviours - claire.alexandria: Added more render methods to IModelCustom interface. - jk-5: - Added GuiOpenEvent - - You can use this for a clean way to override guis, without needing an - TickHandler to check if the gui you want to override is open and show - your own gui - - Proper close check - mhahn: - capacity was not respected - - Updated to properly calculate the amount of free space in the tank - before checking that against the amount of the resource. - robin: create french localization - claire.alexandria: Added display name hook - claire.alexandria: Memoization of display name result - claire.alexandria: Added mouse event - claire.alexandria: inserted hook into Minecraft.java - claire.alexandria: fixed logic error - ohai.iChun: - Fix player push out of blocks clientside being hardcoded and not based on entity size. - Added player eyeHeight field to allow changeable eye heights of players rather than being hardcoded per player class as well as add a getDefaultEyeHeight function. - Christian: Reduce patch size significantly - Christian: Fix patch for new MCP naming. - Christian: Add a bit of javadoc - Christian: MachineMuse, remember, there's TWO model formats supported! - Christian: Defer firing CreateDecorator until it's likely mods have had a chance to register their listener. Should close #759 - Christian: - Add a harvestblock event, to allow mods to intercept and change the drops for blocks. Don't abuse this, or we'll have to take safety measures. - Fires for both silktouch and non-silktouch harvesting, and provides the player. Note, you may need to - change your break overrides to pass on the player for best results. - Christian: Add in a block reverse lookup for fluids. Closes #749 - -Build 1.6.2-9.10.1.849: - Christian: - Update forge for MCP naming updates - - Updated FML: - MinecraftForge/FML@d0c6e92900590f578b80d9a6c00fa28fd333d3bf Update MCP data - Christian: Update version to 9.10.1 for mcp naming changes. - -Build 1.6.2-9.10.0.848: - Christian: Fix possible NPE in searching code. - -Build 1.6.2-9.10.0.847: - Christian: - Updated FML: - MinecraftForge/FML@2a9c485edc4cf3382154d5b3b9b600386f2ab8ae Remove @SideOnly from 70318 (getDistance) it makes no sense that it's not on the server. - -Build 1.6.2-9.10.0.846: - Christian: - Updated FML: - MinecraftForge/FML@a13598b17ea9637c054d867a76298d6c080c5e32 Use java 1.6 compatible method of closing the zip file. Stops stupid compile error. - -Build 1.6.2-9.10.0.845: - Christian: Small fix to container registry. emptyContainer is not null, it's "NULL_EMPTYCONTAINER" now and won't match any valid container. - -Build 1.6.2-9.10.0.844: - Christian: Tweak the release to add in assets to the distributable. *sigh* - -Build 1.6.2-9.10.0.843: - Christian: - Updated FML: - MinecraftForge/FML@1c9a853868f7df0daa5f67b99401dfab44ae18e6 Allow coremods to properly inject asset readers. - MinecraftForge/FML@40b54013b4c9b01686411cd47a7866eeb650ea2b Allow server side lang file injection, hopefully - Christian: Add some starting work for a forge tps command. Also update coremod for new FML behaviour - -Build 1.6.2-9.10.0.842: - Christian: - Updated FML: - MinecraftForge/FML@b993cf4a9825865b3a8a0c7b083c23d56dbd1d6f More exception handling for less derpiness. - -Build 1.6.2-9.10.0.841: - Christian: - In the time honoured tradition of trying to fix vanilla, we today attempt to patch the pathfinding AI so that it doesn't lag when - there's a lot of entities. Basically, if the zombie can't reach the villager, backoff subsequent pathfinding attempts. Hopefully - should really help with lag caused by zombie swarms. - -Build 1.6.2-9.10.0.840: - Christian: Allow multipass RenderItem rendering for terrain icons too. Should fix sengir's saplings. - -Build 1.6.2-9.10.0.839: - Christian: - Updated FML: - MinecraftForge/FML@913f6f6d36bd179db7c147db0485e99dee693933 Try and use the relaunch log, which should be classloaded.. - MinecraftForge/FML@ac065ff5f76b6c512b346366107efde66e9e1c88 Reset the IWorldGenerator seed for each mod, before calling. That should mean worldgen is consistent and not dependent on mod ordering, or mod sideeffects. - -Build 1.6.2-9.10.0.838: - LexManos: Cache world on all render passes in case some mod disables the first pass. - LexManos: Skipp toss event for null entity items. Closes #732 - -Build 1.6.2-9.10.0.837: - LexManos: Fix bug with custom Fluids. You can now drown in them! - -Build 1.6.2-9.10.0.836: - Christian: - Updated FML: - MinecraftForge/FML@9468e41bbf3ea425c50daa710cf3ada11c82b238 Fix up scala refs, for better results - -Build 1.6.2-9.10.0.835: - Nick: - Adds Temperature to Lava - - Missing lava temperature. Feel free to change it to any value. - 1300K is the typical max for Magma so wasn't sure what was desired. Regardless, better than the same temp as water at 295K :smile: - -Build 1.6.2-9.10.0.834: - Christian: - Updated FML: - MinecraftForge/FML@4a9d0f9bd522e543b76daaf9c49b6214443c595f Add in some log information - Christian: - Updated FML: - MinecraftForge/FML@f157e7a6ecdeac2758fc0eaf547d3e8a763fb15b And more coremod logging - Christian: - Updated FML: - MinecraftForge/FML@ffdd056a18eddb8f28b74435d40e69c956b9dd48 Check keys, not values *sigh* - -Build 1.6.2-9.10.0.833: - Christian: - Updated FML: - MinecraftForge/FML@03989166665956df03aa85472eb13dca2d74a38d And actually instantiate the collection *sigh* - -Build 1.6.2-9.10.0.832: - Christian: - Updated FML: - MinecraftForge/FML@dec9a3924d361bc016cb7f6b3e95764158cf5ae1 Add in "FMLCorePluginContainsMod" in the manifest. If this value is present, FML will attempt to parse your mod jar file as a normal mod file as well, instantiating mod containers there. - -Build 1.6.2-9.10.0.831: - Christian: - Updated FML: - MinecraftForge/FML@24701206808a43b9c7b10d7130c47b5d1e841bb6 Clean up a couple of resources. Also, don't parse jars just because they're in the mods dir - -Build 1.6.2-9.10.0.830: - Christian: - Updated FML: - MinecraftForge/FML@9a5e24e338c6172531efb086a4b584c26d4f1435 Fix stupid derp is stupid. Closes #275 and means sp614x can do his thing - MinecraftForge/FML@ba90b616070ce15793eb05e5afaed62a6f07c6e7 Make sure we only add args to the argument list if a tweaker hasn't already. Should fix LiteLoader compatibility issue. - -Build 1.6.2-9.10.0.829: - LexManos: Fix NPE in enchangint books. - -Build 1.6.2-9.10.0.828: - LexManos: Fix inverted case, search works now. - -Build 1.6.2-9.10.0.826: - ross.swartz: Add stone and cobblestone to Ore Dictionary - ross.swartz: Update OreDictionary.java - LexManos: Addition: Added isAllowedOnBooks hook to Enchantments Closes #589 - -Build 1.6.2-9.10.0.825: - LexManos: Deprecate Block.addCreativeItems, Kill in 1.6.3+ Closes #655 - -Build 1.6.2-9.10.0.824: - mehvids: Add onNeighborTileChange callback to block by generalizing func_96440_m to all blocks rather than just comparators. - -Build 1.6.2-9.10.0.822: - malc.geddes: Added a new function to allow control over whether an entity is dismounted when the entity it is riding goes under water - LexManos: Allow creative tabs to have a search box if they want to Closes #592 - -Build 1.6.2-9.10.0.821: - tommy.stanley96: Fixed Fluid Non-Solid Block Duplication - tommy.stanley96: Fixed Double Item Drop - tommy.stanley96: Fixed Classic Checking - -Build 1.6.2-9.10.0.820: - LexManos: Add optional feature to check entire bounding box for ladders. Closes #709 - -Build 1.6.2-9.10.0.819: - LexManos: Only refresh vanilla tile entities when IDs change. - -Build 1.6.2-9.10.0.818: - LexManos: - Updated FML: - MinecraftForge/FML@f275a24b43559cfdced243ff77e9848c9d458362 Add in some reverse lookup methods for game registry data - MinecraftForge/FML@cb05c8c4aa60a131de92f0a21c06697c8f8896a8 Add missing SideOnly in BaseMod - MinecraftForge/FML@1857064afa9ace796440c19f3275637a6e659375 Merge pull request #266 from grompe/patch-1 - MinecraftForge/FML@182aa9c0cbe61ac69b0d428ead1dc817dd2a2e71 Fixed install.sh not passing arguments to install.py - MinecraftForge/FML@f46a538b41157081c840f647f123513ac4c5a071 Merge pull request #268 from Bo98/sh-args-fix - MinecraftForge/FML@29ef3d5ab412dcabbd67695558880c45011ace82 Update installer. - -Build 1.6.2-9.10.0.817: - tommy.stanley96: - Fluid Render Fix - - Formatting - ohai.iChun: Add Pre and Post events for RenderLivingEvent - ohai.iChun: Add Pre and Post events firing for RendererLivingEntity - ohai.iChun: if statement added - ohai.iChun: Update RendererLivingEntity.java.patch - tommy.stanley96: - Fixed fluids eating each other - - Fluids check for other fluids density before flowing, if their density - is higher they can flow into the other fluid, if not they can't. - CovertJaguar: Add SneakClick bypass to client - cpw: Fix names for water/lava fluids. Closes #689 - cpw: - Add support for loading legacy liquid stacks as new fluid stacks. - Requires having been written with the "liquidname" code from forge 1.5.x - cpw: - Add a translation map for looking up legacy liquid names to convert - to new fluid names. - tommy.stanley96: Fluid Rendering Fixes - cpw: Fix formatting error in PR - cpw: - Tweak setBlock in update tick - it should only send serverside updates for - source blocks. Experimental attempt to fix worldgen issues for fluid blocks - cpw: - Updated FML: - MinecraftForge/FML@57befa89bbbf2bc2fcc4a97b78e07b3f9e23ef9d Fix keybindings being derped - MinecraftForge/FML@1d84e8063e9d0dc73928dba006e6001201285cad Temporarily add a version of 'reobfuscate.py' that will resolve complex reobfuscation graph issues with specialsource. Copy it over 'reobfuscate.py' in the mcp runtime dir. Hopefully will have an MCP/specialsource fix in the coming days. - ohai.iChun: Fix RenderLivingEvent.Pre/Post not being fired by most Renders. - tonkamatt98: - added temperature to fluids - - it could be useful for blocks that are affected by temperature - mitchel.pyl: Fix render colour on bottom of fluids - mitchel.pyl: Fix small derp - -Build 1.6.2-9.10.0.816: - purpleposeidon: - Add an InputStream constructor to WavefrontObject - - It is said that Resource Packs will return InputStreams. And I like putting my models into texture packs which, obviously, give InputStreams rather than URLs. - 7of9: Add cloud height to WorldType - -Build 1.6.2-9.10.0.815-miscchanges: - mitchel.pyl: Fix render colour on bottom of fluids - mitchel.pyl: Fix small derp - -Build 1.6.2-9.10.0.812-miscchanges: - tonkamatt98: - added temperature to fluids - - it could be useful for blocks that are affected by temperature - -Build 1.6.2-9.10.0.811-miscchanges: - ohai.iChun: Fix RenderLivingEvent.Pre/Post not being fired by most Renders. - -Build 1.6.2-9.10.0.810-miscchanges: - cpw: - Updated FML: - MinecraftForge/FML@57befa89bbbf2bc2fcc4a97b78e07b3f9e23ef9d Fix keybindings being derped - MinecraftForge/FML@1d84e8063e9d0dc73928dba006e6001201285cad Temporarily add a version of 'reobfuscate.py' that will resolve complex reobfuscation graph issues with specialsource. Copy it over 'reobfuscate.py' in the mcp runtime dir. Hopefully will have an MCP/specialsource fix in the coming days. - -Build 1.6.2-9.10.0.809-miscchanges: - cpw: Fix formatting error in PR - cpw: - Tweak setBlock in update tick - it should only send serverside updates for - source blocks. Experimental attempt to fix worldgen issues for fluid blocks - -Build 1.6.2-9.10.0.808-miscchanges: - tommy.stanley96: Fluid Rendering Fixes - -Build 1.6.2-9.10.0.807-miscchanges: - cpw: - Add a translation map for looking up legacy liquid names to convert - to new fluid names. - -Build 1.6.2-9.10.0.806-miscchanges: - cpw: - Add support for loading legacy liquid stacks as new fluid stacks. - Requires having been written with the "liquidname" code from forge 1.5.x - -Build 1.6.2-9.10.0.804: - copyboy: Fix getArmorTexture by passing it the subtype - -Build 1.6.2-9.10.0.802: - LexManos: - Re-added deprecated liquids system. To be removed next major MC versions after issues with Fluids are fixed. (reverse-merged from commit 9b5208fa308f22c24e295ce3be38dcafea2857ea) - This WILL be removed and should not be developed against aside for a temporary 1.6 release. - -Build 1.6.2-9.10.0.801: - LexManos: Remove SideOnly(Client) in IBlockAccess.isAirBlock - -Build 1.6.2-9.10.0.800: - LexManos: MinecraftForge/FML@10b16d32da4b7c32b15e69cf1c636505ebbe2540 Use json 2.9.1 nightly for OSX in release json like vanilla does. - -Build 1.6.2-9.10.0.799: - LexManos: General code cleanup of Fluid system. Made Fluid icons and associated functions non-sided. - -Build 1.6.2-9.10.0.798: - LexManos: MinecraftForge/FML@3f21a2c1b413e591f61f2906c3adbadd9c5b09e3 Stupid spaces and windows escaping -.- - -Build 1.6.2-9.10.0.797: - LexManos: MinecraftForge/FML@b2958c9066db8c95bb4260893fbfe00103fc4ba1 Add quotes for paths with spaces -.- - LexManos: Package 'version.json' with universal jar for maunchers to use. It's the json used by the vanilla Minecraft launcher for Forge. - -Build 1.6.2-9.10.0.796: - LexManos: MinecraftForge/FML@9520978b81d4cba5d8b0af0d5f155bd115023795 Use a temporary file for recompile's command line to combat command length to long issues. - -Build 1.6.2-9.10.0.795: - LexManos: Updated FML: MinecraftForge/FML@4981aa3421262c3c1c4705468fe202df8198b9f0 Fix potential NPE in villager skin registry. Closes #678 - -Build 1.6.2-9.10.0.794: - Nick: - Fixes Vanilla Fluid Still Icon Setters - - Fixes null icons from being set for both the still water/lava icons, and sets the correct Icon. - -Build 1.6.2-9.10.0.793: - LexManos: Updated FML: MinecraftForge/FML@c48b48ee15f38d3e794b6eb3499c536226ca5a79 Fix server launching. - -Build 1.6.2-9.10.0.792: - Christian: Fix for new location of mcp logo. - -Build 1.6.2-9.10.0.791: - Christian: - Updated FML: - MinecraftForge/FML@0378355c3720d587652b7792665a8b70bf104eb3 The server.classpath generates the runtime manifest, so it needs the non-debug asm jars. - MinecraftForge/FML@a3f48734ffbbb2eccffdafcd3cbe73824bd1afd6 Fix up jar sanity check code. FML validation of the jar works now and doesn't derp classloading. - MinecraftForge/FML@9947ba85036542a3231e25328d3300f2a5337370 Fix logo handling. no more NPE if the logo can't be found. Also, fix location of mcp logo now. - -Build 1.6.2-9.10.0.790: - Adubbz: - Made eating particles compatible with metadata - - Removed extra spaces - - Made eating particles compatible with metadata - Christian: - Updated FML: - MinecraftForge/FML@e44e8b3112bd56c716a00c19d0be2f15d9128b70 Force a global asset scan prior to mod construction : you should be able to reference assets anywhere in your mod now. - MinecraftForge/FML@20e93a412ee13498babef02d404f57bf5e0fd919 Fix up logos in the mod screen. Clean up some unnecessary casts and suppressions, use the -debug asm library at dev time, since it contains full symbols and code in compiled form. - LexManos: MinecraftForge/FML@b9f4b02cb0b041594656f05de70225df702a8ddd Kill mcp's truncate method, for more useful logs. - LexManos: - Updated FML: - MinecraftForge/FML@7348929819b0ae8ad35419ef5dbf66e66b442858 Kill release time scala libraries, to be re-evaluated after all movement is done and shit is fixed. May require manual instalation for mods that use scala. - MinecraftForge/FML@6de36d78f57f6f08ec586b67b684d0e5406cd436 Coremods now have a primitive dependency capability. Also, we search mods dir for special "TweakClass" manifests. These are using the vanilla tweak mechanism to inject into Minecraft. Helpful for other "platform" systems, when you don't want to have to deal with json changes! - MinecraftForge/FML@d4b30422b64a62a2f8a8c2cccd94cb0fd06154e0 Update build and eclipse workspaces for debug asm. - LexManos: MinecraftForge/FML@c625ef30093abb0755985c74d1f31e2c4cf6cfdd Update Forge signature for new private key - LexManos: Update changelog generator to point to new jenkins. - LexManos: Monkey patch to try and make print flush properly. - -Build 1.6.2-9.10.0.789: - LexManos: Re-add reverted patch AGAIN cpw check your commits -.- - -Build 1.6.2-9.10.0.787: - Christian: - Updated FML: - MinecraftForge/FML@bab4d87ce76baa40200939cc46780b1d3b2ff466 Update FML for new stealth update for 1.6.2 - -Build 1.6.2-9.10.0.786: - Christian: Remove forge ISidedInventory, deprecated since 1.5. - -Build 1.6.2-9.10.0.785: - Christian: - Allow optional rider interaction for entities, thanks for the suggestion Vswe. - - Updated FML: - MinecraftForge/FML@7af5c21d74679d1a53550f9719bba22b2f28dd13 @InstanceFactory was set to look for Fields instead of methods - MinecraftForge/FML@bc9d1fe657c7a0953adc7d4c5ed81c575bdfb0f1 Merge pull request #254 from CaptainShadows/patch-1 - -Build 1.6.2-9.10.0.784: - LexManos: MinecraftForge/FML@c913258ca38e662264bdf4aafbfbef86881c9290 Disable signature check of client for now, it's broken. - Christian: - Updated FML: - MinecraftForge/FML@97269a5e3dc0a0e2e1a79183f9f5f2ee120e90bd Decode the file URL. Hopefully will make things work more.. - MinecraftForge/FML@d4d522c5978ecd7a9195977b3327b441901bb5b4 And don't forget to remove the test code - -Build 1.6.2-9.10.0.781: - LexManos: - Updated FML: - MinecraftForge/FML@dfa3a2665d6782b87713cea26dda558ac990a72a Add MC Version to installed version name. - MinecraftForge/FML@e91431fb707ce3e7e4296ccb8f3b2e5208b4dfac Don't validate signatures on servers, they are not signed. - MinecraftForge/FML@c7ab872c85dd057a4e44e12e34089dfd1a1184b6 Temporarily disable GuiModList's Mod logos. - -Build 1.6.2-9.10.0.780: - LexManos: - Updated FML: - MinecraftForge/FML@c997f2adbc4c11cd8c2abe5f82ccd00b0e954b68 FML now verifies that the minecraft jar is correct and intact. This is intended to discourage those who think that modifying the minecraft jar is still acceptable. - MinecraftForge/FML@0db4624b27a5ecf59ed506ccfc26459ca26ee408 Don't initialize the server. - MinecraftForge/FML@4fa375683fdb7edff67c951fb371ab4a23435308 Fix NPE in new debug line when patch targets don't exist. - -Build 1.6.2-9.10.0.779: - LexManos: Fix accedential reverted patch. - LexManos: Proper return for getRegisteredFluidContainerData thanks Soaryn. Ref issue #634 - -Build 1.6.2-9.10.0.778: - Christian: Make resourcelocation the class available on the server. - -Build 1.6.2-9.10.0.777: - Christian: - Drop two domain related fixes that have been applied in vanilla. - - Updated FML: - MinecraftForge/FML@c47d08c89dfcacb96e36c427593174e08dcb4224 Tweak debug data on patched classes - MinecraftForge/FML@dbf5fe38cee04288e92d57f8782114b452245bce We now generate an adler32 checksum for each patched file and verify at load time that they match. Mismatch won't crash, but will emit a big warning.. - MinecraftForge/FML@e88a0cd13f63904f7317e1a73880611f58820389 Update for stealth update. Thanks mojang! - MinecraftForge/FML@2336002f20e9412a7663781b23c51de0eff6a692 The game is going to exit in face of patch mismatch, unless you force it to run with fml.ignorePatchDiscrepancies in the system properties. - -Build 1.6.2-9.10.0.776: - LexManos: - Updated FML: - MinecraftForge/FML@1d0384f8f664d7002019b865675a5fddf2963b3d Update for 1.6.2 and MCP 8.04 - MinecraftForge/FML@111b0216fdc55f56a8361a584141bca7c9c3f070 Add the jsons for 1.6.2 - MinecraftForge/FML@6f96d89e2bf9313b26eeb4c334a208bf3e1c9ad4 Update eclipse workspaces for 1.6.2 - LexManos: Remove deprecated Liquids API, Use new Fluids system as replacement. - LexManos: Bump version to 9.10 for new MC version and removal of Fluids. - -Build 1.6.1-8.9.0.775: - Christian: - Updated FML: - MinecraftForge/FML@c97ac284a5e7dbdbccbad2f7ccc95252c4aef239 Update ModLoaderFuelHelper.java - MinecraftForge/FML@3a200e901e34ade679e4485307f57bee725bbe94 Fix coremod injection into main system. Should stop double-dipping coremods. - MinecraftForge/FML@2676c8999cbede05b5475ba68bfc25467a67d4fc Update mcp data. fixes #248 - MinecraftForge/FML@5990e29af7b70e343dfd9cf38bb3e033e71a4489 Merge pull request #247 from jk-5/patch-1 - MinecraftForge/FML@adc89722770b7319884619cadc6f10cc9050df24 Add cascadedTweaks. This will allow simple coexistence for any other mod framework using the tweaker system as well. Hi Voxel and LiteLoader! - -Build 1.6.1-8.9.0.774: - xcompwiz: - Makes player-specific spawnpoints dimension aware - - Makes ServerConfigurationManager correctly get player-specific spawn - point for the target dimension - Changes EntityPlayer to store and save a (bed) spawn point for every - dimension, as well as transfer them to respawn "clones" - -Build 1.6.1-8.9.0.773: - LexManos: Re-gather list of Icons when atlas textures are stitched, allows for addition/removal of blocks/items after the atlas's inital constrction. - -Build 1.6.1-8.9.0.772: - LexManos: Fix enchantment effect on single pass items. Closes #644 - -Build 1.6.1-8.9.0.771: - kinglemming: - Forge Fluid System! - - Signed-off-by: King Lemming - LexManos: Mark old liquid system as deperated to be removed next Minecraft release. - -Build 1.6.1-8.9.0.770-newliquid: - LexManos: Mark old liquid system as deperated to be removed next Minecraft release. - -Build 1.6.1-8.9.0.769-newliquid: - richard: Techne model loader (incomplete for debugging) - richard: Complete it, got the bug figured out - Christian: - Updated FML: - MinecraftForge/FML@24c405665105a789a0708a7e30c8bcb96899da6b Add in an optional modid identifier for @SidedProxy. It's main use is when both scala and java @Mods reside in the same package, and you want the @SidedProxy behaviour for a specific @Mod language type. In general it should not be needed otherwise. - MinecraftForge/FML@cd0466395a8f1af3ec44f124bf4088df2d318603 Fix sysout with trailing messages after a newline - LexManos: Disable ImageIO's File based cache, should speed up texturepack loading/stitching. - jadran.kotnik: Added rotation support for all vanilla blocks that can be rotated. - LexManos: - Add NPE protection to ItemStack delegates. Closes #601 - Also cleaned up the names of said delegates, we do not have to follow MCP's crowdsourced names as they are very bad. - Redirected damage through setItemDamage to allow items to have finder control of breaking. - LexManos: Fix Air block check in BlockPortal. - LexManos: Fix hoes being able to till dirt under other blocks, and made it look for air type blocks. - LexManos: Add NPE protection to refernce to MinecraftServer.worldServer - LexManos: Fix AIOOB exception in crash reporting if exception does not have a stack. Possible, but odd. - LexManos: Fixed changelog generation. - LexManos: Forgot most important side, release script. - Christian: Make glass panes and iron fences connect to block sides based on solidity. This does change IBlockAccess, so anything with a custom IBlockAccess may need to implement the new method. - Christian: - Fix server patch FML update - - Updated FML: - MinecraftForge/FML@22738de028a9ba51d43d73857dfb8969985566f0 Attempt to properly fix deadlock if the internal server derps. It should never hang now. Damn you fast computer.. - MinecraftForge/FML@05a854cd2af53ca822ee8b249b0b3bbe44f94675 Small tweaks to the mcp data. Nothing major.. - mitchel.pyl: Fix tripwire patches for solid sides - LexManos: Added EntityLiving to Block.isLadder arguments, deperacating older version. New parameter has the possibility of being null, so modders must take care. Closes #608 - LexManos: Add air checks to BlockSand falling and Piston pushing. Please report any other issues with custom 'Air' blocks in issue #602 - LexManos: Bump Forge revision and mark recomended. - LexManos: Fic Chest content gneeration delegate call. Cloases #609 - LexManos: Add air check to Flint and Steel Ref: #602 - LexManos: Update workspace for new library structure. - LexManos: Update FML to 16launch branch - LexManos: Initial patch update to 1.6, Does not compile, need to update references to the old TexturePack system. - LexManos: Small fixup, need to Update GuiIngameForge for new HUD changes. - LexManos: - Updated FML: - MinecraftForge/FML@6a318ddb784ca8b2bef0f6718089f7beb4d404e0 Fix typo in new packages. - MinecraftForge/FML@3711da9c456d20865a965734cc5aeaf7f5cb5e5d Another typo - MinecraftForge/FML@e35e4b16ff3d6dea547c41f02f2ca31ebe1f74aa More fixups - MinecraftForge/FML@18371bd8c9bd107f774289da35519f593ccc8ee7 Some fixes for updated mcp code - MinecraftForge/FML@ef646d3146e1f285d2cb8e79a74373beffa84774 Merge branch '16launch' - MinecraftForge/FML@7406b38d8ad1bc5c2c641c74f1614b946f246588 1.6.1 - MinecraftForge/FML@12c928c538c1c04d3a21255c747d15468328ace9 Tweak commands patch - MinecraftForge/FML@3f15cd54c2d776ea161aaedbecad9e188d66578f Functional client @ 1.6.1 - MinecraftForge/FML@71a92de5d95fccc4fe17cc39d0836891c6622f4d Client launch for eclipse - LexManos: - Updated FML: - MinecraftForge/FML@8960f6869fbe30d358a40997c47999025c3eae68 Add windows lzma executable http://tukaani.org/xz/ He states that most things are under public domai - n, But I couldn't find an exact reference to this executable. I'm going to assume it under public domain and distribuiting it here is fine. If not someone pleas - e direct me to the apropriate license and I will act accordingly. - MinecraftForge/FML@70cfe24e67adf6872ef1501599e2115e420c2539 Fix wrong project name in distro eclipse launch. - MinecraftForge/FML@7a004087f79b94bc92f29d50eb71288b6c1c968c Add deobf data to src dist. Dont create deobf jar as we ship the lzma Added *.lzma to .gitignore - LexManos: - Updated FML: - MinecraftForge/FML@110cf372eb5aa85df20b248976f1acdefa85e102 Add deobf data to merge-common, workspace is now actually runnable! - LexManos: Support dirty submodules in changelog script. - LexManos: 1.6.1 Update - LexManos: Add new launch configs to dev workspace. - LexManos: Update GuiIngameForge to reflect Mojang changes in 1.6.1 - LexManos: - Updated FML: - MinecraftForge/FML@c418da353f6a8420b095fa737e8b0eae270d31ae Cleanup coremod code, server side working now. - LexManos: Update release script to generate binary patches and include deobf data. - LexManos: Deprecation sweep and update version to 8.9 to reflect 1.6.1 update. - LexManos: MinecraftForge/FML@7fecf2ad6bdd918149a3c43453f6a78bd11e5404 Update mcp URL. - LexManos: Try absolute path, to not confuse jenkins. - LexManos: - Updated FML: - MinecraftForge/FML@1229c4c4ea888f4f69272eed94ef5a53ce79ccda Fix src distrabution, and got rid of pesky common folder in eclipse workspace. src is now installable. - MinecraftForge/FML@902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016 Revert common folder fix, Common folder does nothing, feel free to delete it after first load. - LexManos: Update src distro installer script. Source distro works now! - LexManos: Update ToolMaterial enum helper. - LexManos: Release will now build a installer jar and use the standard 'target' output folder. - LexManos: - Updated FML: - MinecraftForge/FML@29d6c875d0675ffa14428c511bd6ebe9232a486c Add FML Installer logo crated by @ZaverSLO https://twitter.com/ZaverSLO/status/349947190300508162 - MinecraftForge/FML@3d17434510e890574b68c8a181b80c830b5d043a Build installer package for the new client launcher. - MinecraftForge/FML@bf38d947569911dab03319a8b0f1964f36b195b2 Update json samples - MinecraftForge/FML@7037184a4e724300001dfc1f8df2e76a0ec30368 Fix up release JSON - MinecraftForge/FML@dc7d02ebf6c9fc5965344a9aeca79f230a40afb4 Fix json syntax error. - LexManos: - Fix installer unintended replace. - - Updated FML: - MinecraftForge/FML@9b6525e80504ff72a1798cf5797bf148295db776 Point scala downloads to our servers, Launcher doesn't like standard maven repos. - LexManos: - Updated FML: - MinecraftForge/FML@91ecf711092e1610dd10e77cdd517c3324e62d8d Fix -rel json - MinecraftForge/FML@efc369ee83a7b62f605c13e16efad66b63b4bd8c Fix EventHandler annotation. - MinecraftForge/FML@fbd57b32641b540d609314d91fd64350d50b9013 Mods are now loaded as resource packs. Vanilla will scan for valid prefixes based on subdirs of 'ass - ets' which can then be referenced as ResourceLocations with the ":path" notation. - LexManos: - Updated FML: - MinecraftForge/FML@5a97d183dfb13b0f831172a1afef7407347ea7bc Remember to update your patches!!!! - MinecraftForge/FML@f1b533ad87ea08d6e62259c59779bcec1636e2fe Keep these on our servers until the launcher is actually fixed -.- - LexManos: Fix bound texture in Controls screen, Closes #631 and #629 - LexManos: Make Block.setIconName public - LexManos: Update filler block to prevent useless console warning. - LexManos: Fix resource domain when loading icon. Textures should be located in /assets/{domain}/textures/{block|item}/{name}.png Same strcutre as before except 'assets' instead of 'mods'. - LexManos: Update ChestGenHooks for new Dungeon chest strcture. - Christian: - Start: f1b533ad87ea08d6e62259c59779bcec1636e2fe - End: f21cd286ca8e974b75536224a38cc0dacaca8454 - Updated FML: - MinecraftForge/FML@f21cd286ca8e974b75536224a38cc0dacaca8454 Resource packs, part two. FML mods are now resource packs. Vanilla will scan anything under 'assets' and turn it into a resource prefix. Use resourcelocations to look stuff up. - LexManos: Move resource location resolution down to TextureAtlasSprite and allow for sprites that are not stitched. - LexManos: Attempt to gather lastBuild information to fix ChangeLog's off-by-one issue. - LexManos: - Updated FML: - MinecraftForge/FML@6f0eedc9a64e4e246c40335e91b4868ad7f5a9e2 Fixed ClassCastException when loading ModLoader mods - MinecraftForge/FML@8844554da6d5d15756d7b0a9da2f5924006b3190 Merge pull request #243 from jrtc27/modclassloader - MinecraftForge/FML@7aa7221756d62ea1fbc750d7cf7acfdb28d75f2e Fix transformer search - MinecraftForge/FML@5f7df5e742cbc21565cee0d25709b5cb5462127c Revert "Keep these on our servers until the launcher is actually fixed -.-" - MinecraftForge/FML@ad79b9ed86eaf8c2702d79505d78a931c1774560 Fix up some deprecation warnings, and clean up coremod code that's going away. - MinecraftForge/FML@ba3707af22376f8f18103f63db56e4614a9c37db More javadoc cleanup - LexManos: Update dev worksapce: Proper natives location and new server launch profile. - LexManos: TEMPORARY fix for MCP mapping issue. - LexManos: Include MANIFEST file from FML's universal.jar, makes the jar runnable now! - LexManos: - Updated FML: - MinecraftForge/FML@155e8468180c93f1886a64028628764b1b22dd58 Add in support for mods/ as a mod location. Also drop coremods as a location. They go in mods too now. - MinecraftForge/FML@3f4bf61ae6757605b27078c7321de9f640876836 Update key - MinecraftForge/FML@4545beb49d5348d8632e42965627b9837115525b Add deobf-data to setup env. - MinecraftForge/FML@e24f94951741709329208f738000b72933302a24 Fix eclipse workspaces and launch configurations. - MinecraftForge/FML@532bee7ce1c4392ee11f0389d98f0c2be6240aa0 Update to new MCP bugfix version, Fixes: Missing Armor/Item rendering, and Boss health mapping issues. - LexManos: - Updated FML: - MinecraftForge/FML@7ce84491d1d4eada442944e02fc0e50c51f8045c Fix missing argument and startclient/startserver support. - LexManos: Fix domain issue with SoundPool entries. - LexManos: Add hook for EntityWither trying to destroy a block. - LexManos: Fix lether item rendering colors. - LexManos: Render pass sensitive version of Item.hasEffect, Closes #517 - LexManos: Fix compile errors temporarily, dont use till updated to new system. - LexManos: Add missing air checks to WorldGenTrees and ChunkCache Closes #593 - LexManos: Updated FML: MinecraftForge/FML@54e06e841d1c8df24fc30e1ec3a51def67f58858 Move Resource refreshing until affter postInit. - -Build 1.6.1-8.9.0.768: - LexManos: Add missing air checks to WorldGenTrees and ChunkCache Closes #593 - LexManos: Updated FML: MinecraftForge/FML@54e06e841d1c8df24fc30e1ec3a51def67f58858 Move Resource refreshing until affter postInit. - -Build 1.6.1-8.9.0.767: - richard: Techne model loader (incomplete for debugging) - richard: Complete it, got the bug figured out - LexManos: Fix compile errors temporarily, dont use till updated to new system. - -Build 1.6.1-8.9.0.766: - LexManos: Add hook for EntityWither trying to destroy a block. - LexManos: Fix lether item rendering colors. - LexManos: Render pass sensitive version of Item.hasEffect, Closes #517 - -Build 1.6.1-8.9.0.765: - jadran.kotnik: Added rotation support for all vanilla blocks that can be rotated. - -Build 1.6.1-8.9.0.764: - LexManos: - Updated FML: - MinecraftForge/FML@7ce84491d1d4eada442944e02fc0e50c51f8045c Fix missing argument and startclient/startserver support. - LexManos: Fix domain issue with SoundPool entries. - -Build 1.6.1-8.9.0.763: - LexManos: - Updated FML: - MinecraftForge/FML@155e8468180c93f1886a64028628764b1b22dd58 Add in support for mods/ as a mod location. Also drop coremods as a location. They go in mods too now. - MinecraftForge/FML@3f4bf61ae6757605b27078c7321de9f640876836 Update key - MinecraftForge/FML@4545beb49d5348d8632e42965627b9837115525b Add deobf-data to setup env. - MinecraftForge/FML@e24f94951741709329208f738000b72933302a24 Fix eclipse workspaces and launch configurations. - MinecraftForge/FML@532bee7ce1c4392ee11f0389d98f0c2be6240aa0 Update to new MCP bugfix version, Fixes: Missing Armor/Item rendering, and Boss health mapping issues. - -Build 1.6.1-8.9.0.762: - LexManos: Update dev worksapce: Proper natives location and new server launch profile. - LexManos: TEMPORARY fix for MCP mapping issue. - LexManos: Include MANIFEST file from FML's universal.jar, makes the jar runnable now! - -Build 1.6.1-8.9.0.761: - LexManos: - Updated FML: - MinecraftForge/FML@6f0eedc9a64e4e246c40335e91b4868ad7f5a9e2 Fixed ClassCastException when loading ModLoader mods - MinecraftForge/FML@8844554da6d5d15756d7b0a9da2f5924006b3190 Merge pull request #243 from jrtc27/modclassloader - MinecraftForge/FML@7aa7221756d62ea1fbc750d7cf7acfdb28d75f2e Fix transformer search - MinecraftForge/FML@5f7df5e742cbc21565cee0d25709b5cb5462127c Revert "Keep these on our servers until the launcher is actually fixed -.-" - MinecraftForge/FML@ad79b9ed86eaf8c2702d79505d78a931c1774560 Fix up some deprecation warnings, and clean up coremod code that's going away. - MinecraftForge/FML@ba3707af22376f8f18103f63db56e4614a9c37db More javadoc cleanup - -Build 1.6.1-8.9.0.760: - LexManos: Attempt to gather lastBuild information to fix ChangeLog's off-by-one issue. - -Build 1.6.1-8.9.0.759: - LexManos: Move resource location resolution down to TextureAtlasSprite and allow for sprites that are not stitched. - -Build 1.6.1-8.9.0.758: - Christian: - Start: f1b533ad87ea08d6e62259c59779bcec1636e2fe - End: f21cd286ca8e974b75536224a38cc0dacaca8454 - Updated FML: - MinecraftForge/FML@f21cd286ca8e974b75536224a38cc0dacaca8454 Resource packs, part two. FML mods are now resource packs. Vanilla will scan anything under 'assets' and turn it into a resource prefix. Use resourcelocations to look stuff up. - -Build 1.6.1-8.9.0.757: - LexManos: Update ChestGenHooks for new Dungeon chest strcture. - -Build 1.6.1-8.9.0.756: - LexManos: Make Block.setIconName public - LexManos: Update filler block to prevent useless console warning. - LexManos: Fix resource domain when loading icon. Textures should be located in /assets/{domain}/textures/{block|item}/{name}.png Same strcutre as before except 'assets' instead of 'mods'. - -Build 1.6.1-8.9.0.755: - LexManos: Update ToolMaterial enum helper. - LexManos: Release will now build a installer jar and use the standard 'target' output folder. - LexManos: - Updated FML: - MinecraftForge/FML@29d6c875d0675ffa14428c511bd6ebe9232a486c Add FML Installer logo crated by @ZaverSLO https://twitter.com/ZaverSLO/status/349947190300508162 - MinecraftForge/FML@3d17434510e890574b68c8a181b80c830b5d043a Build installer package for the new client launcher. - MinecraftForge/FML@bf38d947569911dab03319a8b0f1964f36b195b2 Update json samples - MinecraftForge/FML@7037184a4e724300001dfc1f8df2e76a0ec30368 Fix up release JSON - MinecraftForge/FML@dc7d02ebf6c9fc5965344a9aeca79f230a40afb4 Fix json syntax error. - LexManos: - Fix installer unintended replace. - - Updated FML: - MinecraftForge/FML@9b6525e80504ff72a1798cf5797bf148295db776 Point scala downloads to our servers, Launcher doesn't like standard maven repos. - LexManos: - Updated FML: - MinecraftForge/FML@91ecf711092e1610dd10e77cdd517c3324e62d8d Fix -rel json - MinecraftForge/FML@efc369ee83a7b62f605c13e16efad66b63b4bd8c Fix EventHandler annotation. - MinecraftForge/FML@fbd57b32641b540d609314d91fd64350d50b9013 Mods are now loaded as resource packs. Vanilla will scan for valid prefixes based on subdirs of 'ass - ets' which can then be referenced as ResourceLocations with the ":path" notation. - LexManos: - Updated FML: - MinecraftForge/FML@5a97d183dfb13b0f831172a1afef7407347ea7bc Remember to update your patches!!!! - MinecraftForge/FML@f1b533ad87ea08d6e62259c59779bcec1636e2fe Keep these on our servers until the launcher is actually fixed -.- - LexManos: Fix bound texture in Controls screen, Closes #631 and #629 - -Build 1.6.1-8.9.0.751: - LexManos: - Updated FML: - MinecraftForge/FML@1229c4c4ea888f4f69272eed94ef5a53ce79ccda Fix src distrabution, and got rid of pesky common folder in eclipse workspace. src is now installable. - MinecraftForge/FML@902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016 Revert common folder fix, Common folder does nothing, feel free to delete it after first load. - LexManos: Update src distro installer script. Source distro works now! - -Build 1.6.1-8.9.0.750-1.6: - LexManos: - Updated FML: - MinecraftForge/FML@1229c4c4ea888f4f69272eed94ef5a53ce79ccda Fix src distrabution, and got rid of pesky common folder in eclipse workspace. src is now installable. - MinecraftForge/FML@902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016 Revert common folder fix, Common folder does nothing, feel free to delete it after first load. - LexManos: Update src distro installer script. Source distro works now! - -Build 1.6.1-8.9.0.749: - LexManos: Update workspace for new library structure. - LexManos: Update FML to 16launch branch - LexManos: Initial patch update to 1.6, Does not compile, need to update references to the old TexturePack system. - LexManos: Small fixup, need to Update GuiIngameForge for new HUD changes. - LexManos: - Updated FML: - MinecraftForge/FML@6a318ddb784ca8b2bef0f6718089f7beb4d404e0 Fix typo in new packages. - MinecraftForge/FML@3711da9c456d20865a965734cc5aeaf7f5cb5e5d Another typo - MinecraftForge/FML@e35e4b16ff3d6dea547c41f02f2ca31ebe1f74aa More fixups - MinecraftForge/FML@18371bd8c9bd107f774289da35519f593ccc8ee7 Some fixes for updated mcp code - MinecraftForge/FML@ef646d3146e1f285d2cb8e79a74373beffa84774 Merge branch '16launch' - MinecraftForge/FML@7406b38d8ad1bc5c2c641c74f1614b946f246588 1.6.1 - MinecraftForge/FML@12c928c538c1c04d3a21255c747d15468328ace9 Tweak commands patch - MinecraftForge/FML@3f15cd54c2d776ea161aaedbecad9e188d66578f Functional client @ 1.6.1 - MinecraftForge/FML@71a92de5d95fccc4fe17cc39d0836891c6622f4d Client launch for eclipse - LexManos: - Updated FML: - MinecraftForge/FML@8960f6869fbe30d358a40997c47999025c3eae68 Add windows lzma executable http://tukaani.org/xz/ He states that most things are under public domai - n, But I couldn't find an exact reference to this executable. I'm going to assume it under public domain and distribuiting it here is fine. If not someone pleas - e direct me to the apropriate license and I will act accordingly. - MinecraftForge/FML@70cfe24e67adf6872ef1501599e2115e420c2539 Fix wrong project name in distro eclipse launch. - MinecraftForge/FML@7a004087f79b94bc92f29d50eb71288b6c1c968c Add deobf data to src dist. Dont create deobf jar as we ship the lzma Added *.lzma to .gitignore - LexManos: - Updated FML: - MinecraftForge/FML@110cf372eb5aa85df20b248976f1acdefa85e102 Add deobf data to merge-common, workspace is now actually runnable! - LexManos: Support dirty submodules in changelog script. - LexManos: 1.6.1 Update - LexManos: Add new launch configs to dev workspace. - LexManos: Update GuiIngameForge to reflect Mojang changes in 1.6.1 - LexManos: - Updated FML: - MinecraftForge/FML@c418da353f6a8420b095fa737e8b0eae270d31ae Cleanup coremod code, server side working now. - LexManos: Update release script to generate binary patches and include deobf data. - LexManos: Deprecation sweep and update version to 8.9 to reflect 1.6.1 update. - LexManos: MinecraftForge/FML@7fecf2ad6bdd918149a3c43453f6a78bd11e5404 Update mcp URL. - LexManos: Try absolute path, to not confuse jenkins. - -Build 1.6.1-8.9.0.748-1.6: - LexManos: Try absolute path, to not confuse jenkins. - -Build 1.5.2-7.8.1.738: - LexManos: Fic Chest content gneeration delegate call. Cloases #609 - LexManos: Add air check to Flint and Steel Ref: #602 - -Build 1.5.2-7.8.1.737: - LexManos: Bump Forge revision and mark recomended. - -Build 1.5.2-7.8.0.736: - LexManos: Added EntityLiving to Block.isLadder arguments, deperacating older version. New parameter has the possibility of being null, so modders must take care. Closes #608 - LexManos: Add air checks to BlockSand falling and Piston pushing. Please report any other issues with custom 'Air' blocks in issue #602 - -Build 1.5.2-7.8.0.735: - mitchel.pyl: Fix tripwire patches for solid sides - -Build 1.5.2-7.8.0.734: - Christian: - Fix server patch FML update - - Updated FML: - MinecraftForge/FML@22738de028a9ba51d43d73857dfb8969985566f0 Attempt to properly fix deadlock if the internal server derps. It should never hang now. Damn you fast computer.. - MinecraftForge/FML@05a854cd2af53ca822ee8b249b0b3bbe44f94675 Small tweaks to the mcp data. Nothing major.. - -Build 1.5.2-7.8.0.733: - Christian: Make glass panes and iron fences connect to block sides based on solidity. This does change IBlockAccess, so anything with a custom IBlockAccess may need to implement the new method. - -Build 1.5.2-7.8.0.732: - LexManos: Forgot most important side, release script. - -Build 1.5.2-7.8.0.731: - LexManos: Fixed changelog generation. - -Build 1.5.2-7.8.0.730: - LexManos: Fix AIOOB exception in crash reporting if exception does not have a stack. Possible, but odd. - -Build 1.5.2-7.8.0.729: - LexManos: Fix hoes being able to till dirt under other blocks, and made it look for air type blocks. - LexManos: Add NPE protection to refernce to MinecraftServer.worldServer - -Build 1.5.2-7.8.0.728: - LexManos: Fix Air block check in BlockPortal. - -Build 1.5.2-7.8.0.727: - LexManos: - Add NPE protection to ItemStack delegates. Closes #601 - Also cleaned up the names of said delegates, we do not have to follow MCP's crowdsourced names as they are very bad. - Redirected damage through setItemDamage to allow items to have finder control of breaking. - -Build 1.5.2-7.8.0.726: - LexManos: Disable ImageIO's File based cache, should speed up texturepack loading/stitching. - -Build 1.5.2-7.8.0.725: - Christian: - Updated FML: - MinecraftForge/FML@24c405665105a789a0708a7e30c8bcb96899da6b Add in an optional modid identifier for @SidedProxy. It's main use is when both scala and java @Mods reside in the same package, and you want the @SidedProxy behaviour for a specific @Mod language type. In general it should not be needed otherwise. - MinecraftForge/FML@cd0466395a8f1af3ec44f124bf4088df2d318603 Fix sysout with trailing messages after a newline - -Build 1.5.2-7.8.0.724-newliquid: - jeffreykog: RenderGameOverlayEvent.Post(ALL) is now called in GuiIngameForge - LexManos: Fix arbitrary GUIContainer text coloring by forcing lighting to be disabled. Closes #594 - Christian: Patch village distance checking to use floats instead of ints, to avoid int wrapping - Christian: Fix isAir check to see if a portal can light. Should fix w/Railcraft and others - LexManos: Make changelog generation non-fatal untill we get jenkins issue figured out. - LexManos: Add cache for ASM Event Handler bridge classes, should not need to redefine a class to invoke the same method on different instances. - LexManos: Ignore registration of a object that is already registered. Preventing duplicate callback invocations. Thanks King_Lemming for pointing this out. - Christian: - Updated FML: - MinecraftForge/FML@6f3da9736531153629fb4213e3b2cae776bfb50a Don't throw an exception if the scala adapter find a java proxy. I may add some distinguishers to @SidedProxy so you know which mod it's for. - MinecraftForge/FML@59fe905695421a5be9370b0009ef794abaaf75bb Don't continue trying to send events to mods that depend on errored mods. - -Build 1.5.2-7.8.0.723: - Christian: - Updated FML: - MinecraftForge/FML@6f3da9736531153629fb4213e3b2cae776bfb50a Don't throw an exception if the scala adapter find a java proxy. I may add some distinguishers to @SidedProxy so you know which mod it's for. - MinecraftForge/FML@59fe905695421a5be9370b0009ef794abaaf75bb Don't continue trying to send events to mods that depend on errored mods. - -Build 1.5.2-7.8.0.722: - jeffreykog: RenderGameOverlayEvent.Post(ALL) is now called in GuiIngameForge - -Build 1.5.2-7.8.0.721: - LexManos: Ignore registration of a object that is already registered. Preventing duplicate callback invocations. Thanks King_Lemming for pointing this out. - -Build 1.5.2-7.8.0.720: - LexManos: Add cache for ASM Event Handler bridge classes, should not need to redefine a class to invoke the same method on different instances. - -Build 1.5.2-7.8.0.719: - Christian: Fix isAir check to see if a portal can light. Should fix w/Railcraft and others - LexManos: Make changelog generation non-fatal untill we get jenkins issue figured out. - -Build 1.5.2-7.8.0.716: - Christian: Patch village distance checking to use floats instead of ints, to avoid int wrapping - -Build 1.5.2-7.8.0.715: - LexManos: Fix arbitrary GUIContainer text coloring by forcing lighting to be disabled. Closes #594 - -Build 1.5.2-7.8.0.713: - Christian: - Updated FML: - MinecraftForge/FML@843a13c1ab1e3901160082fa63c557243fb64675 Try and clean up cycle detection output a bit - MinecraftForge/FML@82e9de8641c6a559eec711ea6d1e940d99cbc98f More tweaks to the mod sorting code - MinecraftForge/FML@ac97370f94d10beee5f021795cddda827c4411d4 Add in a pretty sorting error screen - MinecraftForge/FML@f1d68ed4c82cd28e50ec6a0befc55ff0165bfe08 Throw the sorting exception - MinecraftForge/FML@edc1fb24e2cad9badd2dd18ccccd590d77156e18 Send the "suspect list", and print the suspect versions - -Build 1.5.2-7.8.0.711: - bloodshot: - Add support for servers to register dimensions on client. - - In order to support multi-worlds such as MultiVerse, the server needs the - ability to register dimensions on client or many forge mods such as IC2 - will not function correctly. This has been an issue for MCPC which - provides both Forge and Bukkit support to players. By adding the - DimensionRegisterPacket class, MCPC now has the ability to send the - required packet to client to register a dimension with DimensionManager. - LexManos: Cleanup Dimension Registration packet, generate takes no arguments, and added fix to world to prevent providers from overwriting the dimension ID. - LexManos: Fix potential GL issue when atlas animations bind textures without informating RenderEngine. - -Build 1.5.2-7.8.0.710: - LexManos: - Introduced the framework for Forge's packet handler system. Heavily based off FMLPacket. - Packet splitting and reconstruction is handled. - -Build 1.5.2-7.8.0.708: - Christian: - Updated FML: - MinecraftForge/FML@3bf50c4bbe82f0cc317dafcf2a569cb5210bc738 Fix server side derp with Forge network packet handler - -Build 1.5.2-7.8.0.707: - LexManos: Fix type in biome list. - LexManos: Fixed creative tab rendering with invalid color closes #588 - -Build 1.5.2-7.8.0.706: - Christian: - Add forge network handling support - - Updated FML: - MinecraftForge/FML@4922e90d81d8b8b9374c4d04858a06c5bf03965c Separate network mod config from setup. Allows for Forge Packet Handler nicety - -Build 1.5.2-7.8.0.705: - mehvids: Add hitInfo field to MovingObjectPosition for when an int doesn't suffice - -Build 1.5.2-7.8.0.704: - LexManos: Fix another NPE when Items are in Block range with custom renderers, Modders keep your items out of the block range! Closes #581 - LexManos: Fixed render count for stacks of blocks 40+ and distrabution of items based on scale. Closes #579 - -Build 1.5.2-7.8.0.703: - Christian: Remember x & z passed to getTopSolidOrLiquidBlock and use it for foliage tests. Fixes #575 - -Build 1.5.2-7.8.0.702: - Christian: Fix blending on the hotbar. Closes #574 - -Build 1.5.2-7.8.0.701: - Christian: - Updated FML: - MinecraftForge/FML@23b070c7d02a8da44bf04c2f9ba2b485a44ad967 Alternative @SidedProxy setter for Scala. - MinecraftForge/FML@2cca7aa759b4b6c3a128ce43bbd924e4762c43c2 Some more Scala @SidedProxy adjustments. Now properly supporting pure singletons, i.e. object C { @SidedProxy(...) var proxy: P = null } Removed fallback, as all such singletons are properly handled by the new code now, and class implementations fall back to the code also used for plain Java mods. - MinecraftForge/FML@8517a824e5251c409e05999d42fc6d70497609f5 Merge declaration and initialization of a variable. - MinecraftForge/FML@a3a920437f3ede6841ae2c449a38975b02b28088 Merge pull request #230 from fnuecke/master - Christian: Add in a very simple stencil bit registry to try and arbitrate between mods wanting to use stencil bits in rendering - -Build 1.5.2-7.8.0.700: - hbiede: - Added oreQuartz - - Gives a default quartz Ore Dictionary (I know of at least 3 used by different mods that use Nether Quartz as an equivalent). - gholdampf: updated FurnaceRecipes.java.patch - mike.stengel: Created an ItemStack sensitive version of canHarvestBlock. - -Build 1.5.2-7.8.0.699: - CovertJaguar: - Possible NPE if the liquid isn't in the LD - - https://github.com/BuildCraft/BuildCraft/issues/787 - -Build 1.5.2-7.8.0.698: - LexManos: Fix NPE when rendering EntityItems that are not blocks but int he block range. - -Build 1.5.2-7.8.0.697: - LexManos: Prevent water from dropping snowballs. - -Build 1.5.2-7.8.0.696: - LexManos: Fire EntityJoinWorled event for forced entities {Players and there mounts} as well, just ignore the cancelled value. - -Build 1.5.2-7.8.0.695: - LexManos: - MinecraftForge/FML@787c0c4a6af3af60928b3a90f383a305a17a4347 Don't spit error on LWJGL not supporting 4.3 just warning. - Make custom item renderers attempt to use EQUIPPED type when running first person. For backwards compatiblity, will be removed in 1.6. - And a small change to make the 1.6 check not print it's stack trace. - -Build 1.5.2-7.8.0.693: - purpleposeidon: Fix render bounding box of trapped double chests - jholcroft: - Make getStencilBits static - - Made getStencilBits static so it can be called. - -Build 1.5.2-7.8.0.692: - LexManos: Move Partical rendering down in the order, after everything else. Should fix particals rendering behind water, digging process, and selection. - -Build 1.5.2-7.8.0.691: - LexManos: Fixed NPE in rendering dragged items. - -Build 1.5.2-7.8.0.690: - LexManos: - Attempt to allocate a 8-bit stencil buffer when creating Minecraft's display context. If that throws an error it will revert back to it's default values. - Also contains a method for modders to rereive how many bits the context was created with. Closes #552 - -Build 1.5.2-7.8.0.689: - LexManos: EntityPlayer sensitive version of Item.isValidArmor, deprecated older version. Closes #551 - LexManos: Changed to just plane entity for flexability. - LexManos: New RenderPlayer and RenderLiving events. Closes #493 - -Build 1.5.2-7.8.0.688: - pahimar: Update forge_at.cfg - -Build 1.5.2-7.8.0.687: - mitchpetrie29: Separate EQUIPPED and EQUIPPED_FIRST_PERSON Item Render Types - -Build 1.5.2-7.8.0.686: - LexManos: Capture and fire the PlaySoundAtEntity event for The client entity. Minecraft does some odd bypasses for no good reason. Thanks iPixile for reporting this. - -Build 1.5.2-7.8.0.685: - LexManos: - Updated FML: - MinecraftForge/FML@99bb50d8f8d27217ba58a41c802a504213e99461 Improved Entity Spawn Error - MinecraftForge/FML@c0cca7f41d5b080e39dd8d3d6cfc329295c822e6 Merge pull request #227 from CovertJaguar/patch-1 - MinecraftForge/FML@49111e9c5cffab49ec35f965801c3f0496f6def6 Add version detection to astyle and print error if it doesnt detect version 2.0+ - Also fixed astyle's config for max-instatement-indent that sometimes caused crashes with certian versions of astyle. - -Build 1.5.2-7.8.0.684: - LexManos: - Update to 1.5.2 PR. - MinecraftForge/FML@f0bba74a4748935ef3a715ae2f45feb75cc20376 Update for minecraft 1.5.2 - MinecraftForge/FML@62fdbad74c2507d147ecab56f56029135d88c6f5 Update MCP's md5 for the fixed srg files. - LexManos: - Updated FML: - MinecraftForge/FML@00f00b17bf0da262e6fe3e327ca2deedf7146305 Fix scalac detection to actually use the located command instead of defaulting to 'scalac' - LexManos: Fixed hardcoding of MC version in debug text. - LexManos: Bump version number for 1.5.2 - -Build 1.5.2-7.8.0.683-1.5.2: - LexManos: Bump version number for 1.5.2 - -Build 1.5.1-7.7.2.682: - cadyyan: Fixed build error handling using invalid Python syntax. - -Build 1.5.2-7.7.1.681-1.5.2: - LexManos: Fixed hardcoding of MC version in debug text. - -Build 1.5.2-7.7.1.680-1.5.2: - LexManos: - Updated FML: - MinecraftForge/FML@00f00b17bf0da262e6fe3e327ca2deedf7146305 Fix scalac detection to actually use the located command instead of defaulting to 'scalac' - -Build 1.5.1-7.7.2.679: - LexManos: Changelog generator will now bundle failed builds with the next successful build. Should make it look better and prevent the version numbers from being confusing. - -Build 1.5.1-7.7.2.678: - LexManos: Bump version to 7.7.2 so I can make a release. - -Build 1.5.1-7.7.1.676: - tobias: Fixed ListenerListInst not being rebuild after unregistering a listener, causing calls to unregistered event listeners. - tobias: Replaced derpy tabs with spaces - -Build 1.5.1-7.7.1.675: - kinglemming: - -Add vanilla Ores to the Ore Dictionary. No recipe replacement required. - -Add NBT-sensitive getMaxDamage() for ItemStack. - - Signed-off-by: King Lemming - -Build 1.5.1-7.7.1.674: - LexManos: Attempted a fix for the changelog generation, should print all builds back to 1 now. - -Build 1.5.1-7.7.1.673: - Christian: - Updated FML: - MinecraftForge/FML@cf9b5b445ba284d389c7e32a03d9c8ef43469042 Don't leave scala running in interactive mode. - -Build 1.5.1-7.7.1.672: - Christian: - Updated FML: - MinecraftForge/FML@cfda7fc738ce6079f625a3822ebff5e7e0db5669 Fix URL for MCP - MinecraftForge/FML@781c68121626321e0efddaf4c4db9f1b8b5911db Some fixups for scala compilation in MCP. Scala should now be compilable and reobfuscatable with srgnames in MCP. - Christian: Try and be less noisy about world leaks - Christian: ItemStack delegation to Item for damage values. - LexManos: Fix rotation issue with non-block items. - Christian: - Updated FML: - MinecraftForge/FML@ddadf93ca1d648d88fdb61c9625cd675c3650ccd Fix when an old scalac is present on the system to not fail the build - Christian: - Updated FML: - MinecraftForge/FML@aa200923f0fe0c548faa4f103d803ade2e49d19d Fix patch derp. - -Build 1.5.1-7.7.1.667: - Christian: - Updated FML: - MinecraftForge/FML@dcf069ca52738a7bb7bde01f1c7ebd2e06cd0ac6 Attempt to reduce lines on the screen for id mismatch. Hopefully prevents game crashes. - MinecraftForge/FML@58ba24add2a96bf4c079d5919f2d90dcc2f380e4 Fix possible NPEs in GameData - -Build 1.5.1-7.7.1.666: - Christian: - Updated FML: - MinecraftForge/FML@a3b5eaacfdd9218ef68d3dc064bba729b797cb3d Fix a small modloader compatibility derp: closes #222 - MinecraftForge/FML@677a6e578e84109702365da4a784f9a57d8c9957 Fix scala supporting SidedProxy. It should work now. - MinecraftForge/FML@334a76de75f2b417f04c23526c7e66ceb48e0de2 Update FMLDeobfuscatingRemapper.java - MinecraftForge/FML@42f1d8795599e0d1a516a1fdd7488a09b77e4565 Merge pull request #224 from Glought/master - MinecraftForge/FML@2dcabe01232b48009acbca6724565598761f561b Add a to string to fmlmodcontainer: should mean less derpy cyclic dependency data - MinecraftForge/FML@11ac46daebe901a6012a09ba5f6fe44af5b1be06 Fixing the GameRegistry. Now it is possible to register a Block with a BlockItem using following code: MyBlock myBlock = new MyBlock(); GameRegistry.registerBlock(myBlock, MyBlockItem.class, "myBlock"); where MyBlockItem class has one constructor with signature: public MyBlockItem(int id, Block block) - MinecraftForge/FML@c3fda11d100f9db7c32ef212ac37eade3e35d701 Merge pull request #225 from MarcinSc/master - Christian: Add forge/FML data to the f3 screen. - -Build 1.5.1-7.7.1.665: - LexManos: - Forge now takes control of GuiIngame's renderGameOverlay, and spits out a ton of events to give modders control of how the screen is rendered. - Inital draft for community feedback. - -Build 1.5.1-7.7.1.664: - LexManos: Allow spawning of Bonemeal particles even if block is not set. - -Build 1.5.1-7.7.1.663: - LexManos: Fix the BLOCK_3D render helper for items that aren't an instance of ItemBlock Closes #533 - LexManos: Fix replaceable checks to work on blocks with a non-replacable material, Closes #532 - LexManos: Restore world unload event for client worlds Closes #531 - -Build 1.5.1-7.7.1.662: - LexManos: Fix logic issue in CrashReportCategory patch, blame Jadedcat for sloppy quick patch. - -Build 1.5.1-7.7.1.661: - lhb: - Fix for ClassCastException when attempting to fetch Biome types from BiomeDictionary - - Attempting to fetch the BiomeDictionary types linked to a biome throws a ClassCastException. This fixes that - lhb: getBiomesForType will cause the same problem - -Build 1.5.1-7.7.1.660: - Christian: - Updated FML: - MinecraftForge/FML@b3d4ea05ec633fb1898e97febf786f1a3e420986 Fix possible NPE in findItemStack, closes #218 - Christian: - Simple block recolouring API: closes #525 - Fix up documentation on "rotation" API: it is up to the mod to decide interpretation of "rotation" for the mod/block. - -Build 1.5.1-7.7.1.659: - LexManos: Fix return value of EnchantPower hook, closes #518 - LexManos: Adds a field to the player for maximum health. Player.dat additions are present, getMaxHealth() needs a magic number for spawning. Closes #527 - -Build 1.5.1-7.7.1.657: - LexManos: New hook to allow Items to render Helmet overlays like pumpkins do. - -Build 1.5.1-7.7.1.656: - Christian: - Updated FML: - MinecraftForge/FML@394f424185a044afcd6b31f400e731478171dd18 Fix to output versions in crash logs - MinecraftForge/FML@8f35adca7a41c280a4b63d4787f042f615966cac Use more expressive language when a version specifier is a simple unbounded above condition - -Build 1.5.1-7.7.1.655: - Christian: - Updated FML: - MinecraftForge/FML@5673c1dd2966536000c2b3f17f85131204c4a291 Add srgname to registerTileEntityWithAlternatives - MinecraftForge/FML@7aea09f4ca2f087d59ff6cb0de1c8e3e8b9ea4df Add type info to properly deobfuscate overloaded fields. Fixes #210. - MinecraftForge/FML@edffd04ed2e89ece75189f76b92ae47643ec92f8 Add in some caching of the read field descriptions for efficiency - MinecraftForge/FML@0daf1a6df4203d97be65a76a46550f6ad22ccc79 Merge branch 'agaricusb-fix-deobf-field' - MinecraftForge/FML@ada52078c75fdfa506a4287c112d01d9af961d5a Merge pull request #216 from agaricusb/add-srgname - -Build 1.5.1-7.7.1.654: - jmacwilliams: fixed a bug that prevented proper lava generation near bedrock - -Build 1.5.1-7.7.1.653: - LexManos: Fix AIOOB in crash report stack trimming. - -Build 1.5.1-7.7.1.652: - pahimar: Fix a derp in that we provision the various arrays for a face, even if we are not going to parse data into it. Solves NPEs for when obj models that don't have texture coordinates attempt to render. - pahimar: Missed a bit - -Build 1.5.1-7.7.1.651: - LexManos: Cave and Ravine gen will now take into account the Biomes top and foller block, allowing them to break the surface in modded biomes. Beaches, MushroomIslands and Deserts are exempt from this check to preserve vanilla world gen functionality. Closes #491 - -Build 1.5.1-7.7.1.650: - Christian: Fix offset in AdvancedModelLoader. *doh* - -Build 1.5.1-7.7.1.649: - LexManos: Added NBT data to liquid stacks. Closes #501 - LexManos: Added a small method in the Block.java to specify the amount of enchanting power it can supply to an enchanting table. Closes #508 - -Build 1.5.1-7.7.1.648: - LexManos: Item callback for EntityItem update tick. Closes #426 - LexManos: Add Item 'swing' callback for use when playing the arm swing animation. Closes #505 - -Build 1.5.1-7.7.1.647: - Christian: Delete sneaky extra file - -Build 1.5.1-7.7.1.645: - LexManos: Re-add and mark deprecated the old signature for ForgeHooksClient.getArmorTexture. - -Build 1.5.1-7.7.1.644: - Christian: - Deprecate preloadTexture, make it a no-op. Should stop derpiness with new - texturing system performance tweaks. - -Build 1.5.1-7.7.1.643: - LexManos: - Updated FML: MinecraftForge/FML@4836b3272a9b292c62816c1d1f9e845486753839 Re-worked the Texture patches, optifine helper function, and re-added support fo - r dynamically rotating the texture for mod authors who do things horribly wrong. - -Build 1.5.1-7.7.1.642: - Christian: - Fix performance of texture uploads - - Updated FML: - MinecraftForge/FML@00c788308881a07a683e17e2e9382313f3719b45 Very significant improvement in performance by using glSubImage to upload data. Inspired by frequent complaints about performance of hires texture packs. They probably still need a beefy system but should work. Hopefully I can figure out why the subImage GL side copy isn't working properly for an even more significant speed boost. But this gets things started. - MinecraftForge/FML@57ad221cc6d9605b9d521f86620c2a31f922ac24 And add the patches *sigh* - Christian: - Updated FML: - MinecraftForge/FML@a31607ae7d0214101679a1ecf1ae8032a5257eda Fix compilation derp, and clean up rotation helper. - -Build 1.5.1-7.7.1.640: - LexManos: Small optimization for usages of Minecraft.getGLMaximumTextureSize(), only need to calculate it once. - LexManos: Small bugfix in Stitcher that was preventing ti from fully filling the possible texture space. Should lower the amount of empty space in textures. - LexManos: - Optimize Texture loops a bit for non-rotated textures. Should help the FPS loss on higher resolution texture packs. If it becomes a major issue we may have to look into a more optimized animation system. - - https://mojang.atlassian.net/browse/MC-13206 - -Build 1.5.1-7.7.1.639: - LexManos: Fix scoreboard saving bug caused by our fix of vanilla map saves. - -Build 1.5.1-7.7.1.638: - LexManos: Updated FML: MinecraftForge/FML@1de89525cc2265bdce8704d9bd0d31c57bca4d97 Fixed issue with instalation when java/javac commands had quotes. - LexManos: Deprecate long dead interface that moved to FML. remvoe next MC version. - -Build 1.5.1-7.7.1.637: - LexManos: Updated FML: MinecraftForge/FML@704a70902fca3de620375116a33dccd3d6d576d0 Sanitize input to isRemappedClass to use '/' as a package seperator like the srg files. - -Build 1.5.1-7.7.1.636: - froggytheturtle: - This allows the result of the explosion to take into account metadata, - tile entities, or even to cancel it altogether. - - Allowed block exploding to take into account tile entity and metadata - LexManos: New hook to allow Items to provide there own armor models. Closes #487 - -Build 1.5.1-7.7.1.635: - LexManos: Fix item deletion in creative menu for items that are the same id/meta but differnet NBT's. Closes #479 - LexManos: Untag NBTTagList.removeTag as client side only, allowing simple removal ont he server side. Closes #477 - -Build 1.5.1-7.7.1.634: - LexManos: Allow items to provide there own FontRenderer for there tooltips. Added for #463 - -Build 1.5.1-7.7.1.633: - ProjectZulu: Added maxCanSpawnInChunk event to allow overriding of creature chunk spawn cap - ProjectZulu: Clarify Factory call and Event Functionality - LexManos: Add function to remove categories from a configuration, indavidual properties can be removed using ConfigCategory.remove() Closes #462 - -Build 1.5.1-7.7.1.632: - LexManos: - Pulled Biome Tag System by Emasher, Closes #433 - An issue with biome adding mods which is becoming increasingly annoying for players, is that many mod authors that add biome specific world generation or mobs in their mods, for the most part, hard code them to work with vanilla biomes only. This becomes a huge problem when it's difficult to even find a vanilla biome, let alone a specific one, when biome mods are installed. - - A simple solution to this problem is a tag system for biomes that allows mod authors to set up their world generators, or mobs to generate or spawn in biomes that have been registered with a specific tag such as "FOREST", or "FROZEN". I wrote such a system a few months ago, which I've been using with my own mods, and have made available to anyone who wants to use it. Since then, I've had requests from mod authors and players alike to try and get it, or at least similar functionality, into Forge, where other mod authors will be more comfortable using it. - - Aside from the tags, it also includes a rule based system to classify biomes that have not already been registered with it when information is requested on them (You can opt out of this by registering a biome as type "NULL"). And additionally, the ability to register IWorldGenerators for specific biomes, or biome types (tags) to speed up chunk generation a little bit. - -Build 1.5.1-7.7.1.631: - LexManos: Deprecate IArmorTextureProvider, moved to Item. And exposed more information to the function. Closes #365 - -Build 1.5.1-7.7.1.630: - LexManos: Updated FML: MinecraftForge/FML@570faeb790745c35403c67fabab57651b71da576 Added the ability to save transformed classes to disc for debugging. - LexManos: Add checking for 'ENUM$VALUES' in EnumHelper. Eclipse uses it's own internal compiler which does not follow the java standard of making the values field names $VALUES and private. Instead its public and ENUM$VALUES. Closes #502 - -Build 1.5.1-7.7.1.629: - LexManos: Revert MinecraftForge/MinecraftForge@f594109b30c87f5a0996eee9e8c4513380733cee If concurancy issues arise we will reassess. The provided solution caused entities to be removed incorrectly and cause 'invisible' entities client side. - -Build 1.5.1-7.7.1.628: - LexManos: Fix EntityPlayer passed to Bonemeal event. - -Build 1.5.1-7.7.1.627: - LexManos: Fix off-by-one in rotated textures. - LexManos: Removed index bounds checking in some chunk functions, if you error blame Grum. - -Build 1.5.1-7.7.1.625: - LexManos: Fix vanilla texture bug causing rotated textures to be placed wrong. - -Build 1.5.1-7.7.1.624: - Christian: - Updated FML: - MinecraftForge/FML@8b8837c9ff635d4988e0a1504fca38667825daf0 Fix NPE when branding isn't present - -Build 1.5.1-7.7.1.623: - kraphteu: Remove unneeded SideOnly. ref: Buildcraft/Buildcraft#710 - -Build 1.5.1-7.7.1.622: - Christian: - Removed obsolete patches - Updated FML: - MinecraftForge/FML@26ccb9106e443e664b0fdc1b95c3600b90ab2bc5 Change snooper/crash report brand handling. fmlbranding now loads another string! - MinecraftForge/FML@eff464cf0e656d92dfedf16e79e5cd6c36b9fc76 And the core patches for that - -Build 1.5.1-7.7.1.621: - Christian: Sanity check the item ID for loaded liquid stacks better. - -Build 1.5.1-7.7.1.620: - Christian: Make liquidstacks immutable in their type data. Sorry about this, but it makes things a lot easier. - Christian: Add in persistence code for LiquidTank. Using it should protect against liquids that get removed f.e. Closes #395 - -Build 1.5.1-7.7.1.618: - Christian: Fix up liquidstack so it knows about the texture sheet for it's icon - -Build 1.5.1-7.7.1.617: - Christian: Fix AT file - -Build 1.5.1-7.7.1.616: - Christian: Fix possible NPE in ChunkManager. Closes #478 in reality - -Build 1.5.1-7.7.1.615: - Christian: made BlockFluid.theIcon protected - Christian: fix bug #489 from #429 - Christian: Fix up some liquid logic - -Build 1.5.1-7.7.1.614: - Christian: - Updated FML: - MinecraftForge/FML@2bc6a0666f8a54f6b1fbc3398c6e3a385ecd35b5 Attempt to make any "default package" class public. This might fix problems with certain modloader mods that ship changes to vanilla classes. - Christian: Use the liquid name in liquid stack persistence. Closes #429 - Christian: Fix hashCode - Christian: - Updated FML: - MinecraftForge/FML@0d844874124649099dbcbb9ae2b36719e1dda25f Fix up derp in access transformer - -Build 1.5.1-7.7.1.611: - LexManos: Bump version number for 1.5.1 Note: We really need to do this more... - -Build 1.5.1-7.7.0.610: - LexManos: Fix NPEs when modders stupidly register null texture names. - -Build 1.5.1-7.7.0.609: - LexManos: Fixed issue with Event.hasAnnotation ignoring it's parameter. And cached its values for potential performance gain. Closes #482 - -Build 1.5.1-7.7.0.608: - jesse: - Entity Extended Properties Changes - - Adds IExtendedEntityProperties interface, which specifies three methods - that are needed: Init, Save, and Load. - - Adds the EntityConstructing event, which is called during the - constructor of Entity. It is needed there so that the reference is in - place during the ReadNBT call. - - Adds hooks into Entity that allow registration of - IExtendedEntityProperties classes, as well as saving and loading to NBT. - jesse: - Brewing Stand Changes - - Added an event on potion ingredient applied. Event contains the item - stacks of each of the potions being brewed as well as any remaining - ingredients. - - Changed TileEntityBrewingStand and SlotBrewingStandPotion to look for - instanceof ItemPotion rather than potion.itemID - jesse: - Player Flyable Fall Event - - Adds an event to EntityPlayer that is posted on player fall when the - player has flight capabilities. - Christian: Fix itemframe render bug - Christian: Add in block rotation support. It supports most vanilla blocks (hopefully), logs should be added soon. - jesse: - Access Transformer Changes - - AT changes and corresponding class changes. - Additions (all made public): - EntityLiving.targetTasks - PotionHelper.potionRequirements - PotionHelper.potionAmplifiers - PotionEffect.duration - Potion.setIconIndex - Item.setPotionEffect - Block.blockHardness - Block.blockResistance - jesse: - Enderman Teleport Event - - New event when an enderman teleports that allows the teleport location - to either be modified or completely cancelled. - jesse: - Enderman attackEntityFrom changed - - Changed so that if the teleport fails upon being attacked, Endermen will - take damage as normal. - jesse: - Ender Teleport Changes - - Renamed Ender Teleport Event and added it in to ender pearls. - jesse: - quick bugfix in entityenderman - - reversed boolean check on event result - Christian: - Updated FML: - MinecraftForge/FML@2d368c4c2eb6b4e0bb60757b6e1679c23aaad9db Itemstacks in the GameRegistry (manual registration by mods) - Christian: - Updated FML: - MinecraftForge/FML@5e1949eb0e3a43d3ec6c710289532d93f6819934 Clone the itemstack, and allow for passing in a stacksize - Christian: - Updated FML: - MinecraftForge/FML@ede93d438f2b5fab92cd6a459247ca158354e430 Validate supplied stack size - MinecraftForge/FML@d73ac867df775174dafdd2da193fabd7c3e7407e Add a mechanism to dump the registry- useful for mod developers. - Christian: - Updated FML: - MinecraftForge/FML@82bc9f1b35f5d51a722d294dd252e6bab4d54fa4 Add some information, and a log message letting you know it worked - Christian: Update patches! - Christian: Re-enable changelog? Hopefully... - Christian: Changelog fixup - Christian: Damn you python and your tab obsession! - -Build 1.5.1-7.7.0.605: - Christian: Fix AT config for texturemap - -Build 1.5.1-7.7.0.604: - Christian: - Allow itemstack sensitive damage computation for attacks. Should allow - storing data in the nbt :) - -Build 1.5.1-7.7.0.603: - Christian: - Updated FML: - MinecraftForge/FML@d9db27275ea06d37ae75e201140019ca152314b0 Fix mismatch screen a bit. Should render more correctly now and at least not be blank in a lot of circumstances.. - Christian: Allow items to decide if they can or cannot have book enchantments applied - -Build 1.5.1-7.7.0.602: - Christian: - Updated FML: - MinecraftForge/FML@d1ff1967b50f2ff2edf0b60acdb6508c0a3eeb06 Fixed FMLRelaunchLog's Newline Handling - MinecraftForge/FML@591a25722b36d2d1b200a31278cb8da117363f6b Merge pull request #208 from jrtc27/patch-1 - -Build 1.5.1-7.7.0.601: - Christian: - Updated FML: - MinecraftForge/FML@f709ce757984b13acb7208d6d8fbdeaa83d2928d Fix missing block world rendering - MinecraftForge/FML@748eece456e079a21112a77047d004d4f410b170 Merge pull request #206 from mDiyo/patch-1 - MinecraftForge/FML@012a755bb9ce9737c843b0dfd86473d143b637be Fix up patch properly. Also, fix md5s for the jars. - -Build 1.5.1-7.7.0.600: - LexManos: - Update to 1.5.1 Pre-Release: - MinecraftForge/FML@9565529baf77de27ed8b75be2065da3ba08d16c8 Updated to latest MCP and Minecraft 1.5.1 Pre-release. - MinecraftForge/FML@a573faf92def5dd01af380b3ca86de877c1178a2 Someone derped up this function bad, revert name. - LexManos: MinecraftForge/FML@aaf02ea2ac938d8cbaafdd2f59985c0604d648d7 Updated for new PR client jar. - -Build 1.5-7.7.0.598: - LexManos: - Updated FML: - MinecraftForge/FML@3c346247e1c5de12d4548f6a99349157057e2de6 Fix NPE with CoreMods who do not have the new MCVersion annotation. - LexManos: - Updated FML: - MinecraftForge/FML@625da6492dddcaca8133718aeee97f9981ced623 Fix install.py --mcp-dir option. Fixes #204. - MinecraftForge/FML@687d3c059d054c338c25a489be206a9f3dc63d81 Merge pull request #204 from agaricusb/fix-mcpdir - -Build 1.5.1-7.7.0.597-1.5.1: - LexManos: MinecraftForge/FML@aaf02ea2ac938d8cbaafdd2f59985c0604d648d7 Updated for new PR client jar. - -Build 1.5-7.7.0.595: - LexManos: Change placement of ChunkDataEvent.Save call to apply before sending to worker thread. - -Build 1.5-7.7.0.594: - Christian: - Updated FML: - MinecraftForge/FML@5cc90f060caace93c0bf041d3cc37208f425f623 Fix the logger to treat newlines better, hopefully. Closes #199 - MinecraftForge/FML@5e3af8ac0e18cfa3a92f9ba726ec1a6b55e87d97 Use the relaunch log, for class circularity safety. - MinecraftForge/FML@ce949e6099fe2a63ee6774acd6e55aa55d3b3673 Support simple mc version test in coremods, only effective through jar loading. Also, log some more data about the environment. - -Build 1.5-7.7.0.593: - LexManos: - New TextureStitchEvents called before and after a TextureMap gathers and stitches textures together. - Also added a config option to diable the writing of resulting stitched textures to disc. Default disables the writing. - -Build 1.5-7.7.0.592: - LexManos: - Updated FML: - MinecraftForge/FML@24022ab6ba79e4babb57fc0db893c23d4aec85bc Added comments to note FML-only methods - MinecraftForge/FML@8905237306230a33e2a3bab7a2b6f7a8b42d94e4 Merge pull request #200 from bspkrs/patch-2 - MinecraftForge/FML@577b19c1cf12a354112e829fb5704c32fd6cd0a5 Fix potential NPE in class loading and add extra debug information. - -Build 1.5-7.7.0.591: - LexManos: Fix placing of certian items on Redstone Blocks. - -Build 1.5-7.7.0.590: - LexManos: Fix equipment slots for items when right clicked, and dispensed using a dispensor. - -Build 1.5-7.7.0.589: - LexManos: Prevent pistons from generating snowballs. - LexManos: Fix logic inversion that allowed SnowMen to create snow on hoppers. - -Build 1.5-7.7.0.588: - lepko.san: Fix ShapedOreRecipe checking mirrored recipes - -Build 1.5-7.7.0.587: - Christian: Fix multipass item rendering so that it uses the right spritesheet for the item. - -Build 1.5-7.7.0.586: - froggytheturtle: - Made WorldServer.allPlayersSleeping public - - Made EntityPlayer.sleepTimer public - - Sleep changes - -Build 1.5-7.7.0.585: - LexManos: Fix Activator rails activating TNT carts, closes #458 - -Build 1.5-7.7.0.584: - github: Update ForgeDummyContainer.java - -Build 1.5-7.7.0.583: - Christian: - Updated FML: - MinecraftForge/FML@c5d5f4e5164111c5ae63e8de7ce97cc583d73e6e Fix AllPublic access transformer not affecting methods. Should fix modloader compatibility - -Build 1.5-7.7.0.582: - LexManos: - Updated FML: - MinecraftForge/FML@4762d4d8ef00bd789ffb6bccbd12f7478b07da62 Allocate more ram {typically 256 is defailt} to fermflower, should fix decomplication issues on OSX - MinecraftForge/FML@6370c242f0e1cb8ec80c7dccc1133cb0d0607bae OS X's python 2.6.1 has a bug in zipfile.extractall that makes it unzip directories as regular files. So switch to extract - -Build 1.5-7.7.0.581: - LexManos: Remove the block if TE errors. - -Build 1.5-7.7.0.580: - LexManos: Add config toggle to atempt to remove TileEntities and Entities that error during there update without fully crashing the server, use at your own risk. Closes #424 - -Build 1.5-7.7.0.579: - Christian: - Updated FML: - MinecraftForge/FML@8f2dbf7046f52d836993edb946d7d310b399bf9d Fix up stupid derp in IMC code: actually reset the IMC list after each delivery. Fixes a bunch of mods. Sorry everyone. - -Build 1.5-7.7.0.578: - ohai.iChun: - [Bugfix] One should not assume an item would use the item spritesheet. - - Item class has a func to return an int to use terrain.png or items.png. This makes forge take account of it. - -Build 1.5-7.7.0.577: - LexManos: Fix bug with rendering one too many passes for ItemEntities Closes #450 - LexManos: Fix RedstoneBlock power issues, Closes #452 - LexManos: Fix for nether quartz not generating in the nether, Closes #454 - -Build 1.5-7.7.0.576: - LexManos: Deprecation Sweep in DungeonHooks and fixed wildcard in ChestGenHooks remove function. - -Build 1.5-7.7.0.575: - LexManos: Fix RenderItem to work with items that use the terrain texture map that aren't in the block ID range. Close #443 - LexManos: Move the RenderWorldLastEvent back to before renderHand like it was in 1.4 Closes #444 - LexManos: Add call to EntityLiving when counting entities for Spawning Cap. Closes #447 - LexManos: Fix missed wildcard change in OreDictionary closes #448 - -Build 1.5-7.7.0.574: - LexManos: Fix crash when EnumHelper can't find $VALUES field, log info, and return gracefully. - -Build 1.5-7.7.0.573: - Christian: - Updated FML: - MinecraftForge/FML@23ea835fa7bc0cdb466d058814b5a0e0c67e8c9a Pass obfuscation status to coremods - -Build 1.5-7.7.0.572: - Christian: Some tweaks to the liquid dictionary, to allow for canonical liquid stacks for things like rendering - Christian: - Updated FML: - MinecraftForge/FML@d88db6c0cfd5484428b574889eae02d34535beae Fix up deep tree deobfuscation - -Build 1.5-7.7.0.571: - LexManos: Removed get/setTextureFile from Block, nolonger used. - LexManos: - Updated FML: - MinecraftForge/FML@7b722bfcd6d4c6867d15492c293a455dfd50d272 Update MCP for latest PR silent update. - MinecraftForge/FML@c6dab815f4e036e25b8f56bef7b8ee63f838adb4 Missed joined.exc, must fix scripts. - -Build 1.5-7.7.0.569: - LexManos: - Updated FML: - MinecraftForge/FML@a90504315e928915345c7b04972d912cdaa0bfdb Readjust size of mods button when Minecraft Realms button is enabled. - -Build 1.5-7.7.0.568: - Christian: Fix the oredictionary for the new recipe wildcard value of Short.MAX_VALUE. - -Build 1.5-7.7.0.567: - Christian: - Updated FML: - MinecraftForge/FML@3765ceb02d783ae5156976f3165bafdb6a3ddbb3 Update MCP, fixes the "broken texture packs" problem. - -Build 1.5-7.7.0.566: - Christian: - Updated FML: - MinecraftForge/FML@179c504746910d4196eef3ee2d56f63cf585c983 Simplify logic in tick start/end - MinecraftForge/FML@29edd242cd7a1fadedf4fb874ea8bbd4e643bffa Fix coremods without a manifest crashing the game. Closes #181 - MinecraftForge/FML@ac16845fc4661fa046a252eda7f9a9a847940189 Fix demo mode crash. Closes #187 - MinecraftForge/FML@984291cee91f585a6f4300eedfed882c814843f8 Fix supertype parsing to handle null superclass (Hi Object!). Closes #160 - MinecraftForge/FML@f6479299936f0f94cfc43210dd9dd44b8b5350ef Merge branch 'master' of github.com:Uristqwerty/FML - MinecraftForge/FML@b301e8e4c1877be246fd4f0b45085b70773d8f2b Change type of connection queue to a concurrent linked queue. Much more efficient, hopefully. Closes #189 - Christian: - Updated FML: - MinecraftForge/FML@dab22f5b74f3f2a410e20583f811605dc8e3c05f Fix "0 mods" display when installed in forge. - -Build 1.5-7.7.0.565: - Christian: - Updated FML: - MinecraftForge/FML@485db6be2e6b54a9a523a2b06e0d886792b0826a Use the reobfuscation maps in the reflection helper for field lookups: should help some reflection cases with the deobf. - Christian: - Updated FML: - MinecraftForge/FML@591e65fa1aa52d2a72dc527ad1c2ac53c8eb94c4 Revert "Use the reobfuscation maps in the reflection helper for field lookups: should help some reflection cases with the deobf." - MinecraftForge/FML@2a779ec3289f695b477ec6b0822a27801e2deba1 Try a different way of remapping the fields. Should work because it's userspace, not relauncher space - MinecraftForge/FML@ca2d8bd83475f37946b86cf6fabd8ff810f9c2bf Fix reflection helper: it needs to unmap the classname to find the field maps. - -Build 1.5-7.7.0.563: - Christian: - Updated FML: - MinecraftForge/FML@25f3fcad4654d19637878bdfb2b70a9586fb3fc9 Fix up some relauncher stuff: the vanilla applet works now, as do other applets. Deobf data is resolveable for them too. - -Build 1.5-7.7.0.562: - LexManos: - Updated FML: - MinecraftForge/FML@6bf7c9878cc959d5f5fa8ec0bf9d0d75037df882 Fixed srg name of minecraftDir for runtime deobf. - -Build 1.5-7.7.0.561: - Christian: Refresh patch - Christian: - Updated FML: - MinecraftForge/FML@95d0ff18cdca3b5a91b648c847c00f559f8ce6f2 Fix runtime deobfuscation for remapped inner classes - -Build 1.5-7.7.0.560: - LexManos: - Updated FML: - MinecraftForge/FML@86a9c7d35953296f7c8bd3a2b1b43115ef0f9308 Fixup reobfusication of server code if present. - MinecraftForge/FML@8e7956397dd80902f7ca69c466e833047dfa5010 Just enable server side compile, and warn not to complain tous. - MinecraftForge/FML@889efc1c0a9216b55f6de275e4f4a279d977e60c Fixes GameRegistry.registerBlock - MinecraftForge/FML@fe1623a36a1bb8b0a046d833e896fd46d88898ef Merge pull request #195 from RainWarrior/snapshot15 - MinecraftForge/FML@62f5adf8e21d59408af409a88b2c81757fd3c587 Revert "Fix modlist to use the new texture binding functions, i think" - MinecraftForge/FML@58ee06ea8edf508daa4ab3920790c0153cf6660d Some fixes for the snapshot - MinecraftForge/FML@368a2245ef0071b0b7a35d3bd78ab1ae379f8faf Merge branch 'snapshot15' - MinecraftForge/FML@1eba1dfdc00edf12ca3d8586dc342563218fc717 Fix accidental commands.patch overwrite - MinecraftForge/FML@ebdb166ec87e63503f0071e557cdb44629a0e0c2 Merge branch 'snapshot15' - MinecraftForge/FML@450dd8313c2e9e46d173bbd242f84d48266af7c8 Fix up some small things, merging into mainline - MinecraftForge/FML@1642bad402efe819f4e763bf4b460d8c04194849 Fix Multi-part entity children ID issue, mobs with custom spawning must deal with child ids themselves. - -Build 1.5-7.7.0.559: - LexManos: Update patche for jad-style names. - LexManos: Updated FML and at config for 1.5 snapshot - LexManos: First patches updae to 1.5, Many rendeirng related changes, most notibly removed Item/Block's getTextureFile() functions. - LexManos: Removed some dead code, We don't bind custom tessellators - CovertJaguar: MCL Update - LexManos: Bump major and minor version numbers to mark 1.5, it's gunna break everything. Should be a compileable 1.5 build. - Christian: - Fix a couple of forge patches - - Update FML: d075daf - d075daf Merge branch 'master' into snapshot15 Fix up compilation and patching errors - 1bd6847 Fix up packages.csv ordering for easier diffing - dd832f2 Update for MCP7.30c - fixes redstone rendering issues - aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti - 8921cfe Remember to add the new patches! - cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. Also, added in a "pre-server - e1c6630 Javadoc cleanup - 5ce4e31 Fix breaking change - a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates - 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates - 7ad8529 Update MCP to MCP7.26a and refresh MCP names - 15534ed Update address of the FML repository to the new location in all the files - aa822e3 Fix logical error in comment text - a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. - 0165742 Fix mcp conf md5 signatures for the snapshot - 26a5b31 FMLLogFormatter: dynamic log level name - LexManos: - Merge commit '695b080197bd577cc34fe6dbc72b74f4a74b2d5c' into snapshot15 - Testing cherry picking. - LexManos: - Sync up with FML, Will not run nativly as you need deobfusication_data.zip in your libs folder. - We have not setup the download for that yet, to make it yourself just zip joined.srg name it deobfusication_data.zip and put it in lib - LexManos: Not supposed to have debug stuff... - LexManos: Updated Forge to s13w09c - Christian: Fix up patches for FML, also, add in FML as a submodule rather than a zip - Christian: - Add in simple texture management for mods using the stitcher. Scope with "{domain}:{texture}" to - get textures that are not at /textures//{texture}.png but /mods/{domain}/textures//{texture}.png - instead - LexManos: Testing selective commit of submodule. - LexManos: - Added submodule changelog ganerator: - - Updated FML: - MinecraftForge/FML@e74087ee430633475c3ca058e54e3ef242a9d6aa Ignore again, testing submodule. - LexManos: Removed GNUWin32 files and uneeded files seince FML is now a submodule. - LexManos: Remove window helper batch files. - LexManos: Update python scripts to reflect that FML is now a submodule. Delete updateasmdata as it's in /fml/ now. Build should work once again. - LexManos: Change FML module to read-only connection. - Christian: Update submodule - LexManos: Copy over some needed files for debugging. - LexManos: Rework configuration, configs should now use Config.hasChanged to deterne if thehould call save(), also re-worked the saving to not use String.format as much. - LexManos: Fixed new python changes. - LexManos: - Updated FML: - MinecraftForge/FML@aed2cc446ad8d5882890c5f218eb894ea7bd2577 Force file name encoding to UTF-8, caused different zips on different systems. - LexManos: Fix animation location for textures with domains - LexManos: Add helper functions for deling with custom TextureStitched - LexManos: Add callback on TextureStitched to control texture loading. - LexManos: New world event for controlling potential entity spawnlists. For #430 - LexManos: Removed erroring imports and update build function to die on errors. - LexManos: Fix ItemSeedFood respecting custom soils. - LexManos: - Updated FML: - MinecraftForge/FML@debbdc00be8ea1a261cdff83785ddc7100419a74 Capture Minecraft logs into FML logging - MinecraftForge/FML@74fffc6fdc2eda8caa9a7feb0826d7babb84751a Update next render to 40 - Christian: - Call stitcher for non-existent textures as well. Probably allows - for generated textures. Hmmm - Christian: let's do it right this time. Hmmm - Christian: - Updated FML: - MinecraftForge/FML@abe4f73a9a3158f6f9d1ea2334798f54a25817bf FIX massive performance issue with FML. Thanks to @sfPlayer1 for finding this epic derp on my part! - Christian: Add an Icon to the LiquidStack, for rendering the liquid in various ways - LexManos: Readd second render pass to TileEntities and Entities, patches were missed when merging in master branch. As note, CB can DIAF. - LexManos: Fix compile error, forget to flush to disc. - LexManos: Make release quit on compile error. - Christian: Clean up Access Transformer mapping data - Christian: - Updated FML: - MinecraftForge/FML@e9ff699c2dcd787a3e0ebaa427c625a48de4c9fb Refresh the renderengine after modloading is complete. Should fix issues with out-of-place texture registration by mods. - MinecraftForge/FML@a723aa68606d57b0ee5bac8b1d1905abef440b54 Refresh copyright notices on everything - MinecraftForge/FML@c42a2101408b21799728c88e2d02c718c3b0dd36 Strip deprecated code - MinecraftForge/FML@6eeae8c49ff4359dc21c44eb73e4e043285cd8bf Fix up state transition derp when the server crashes with an error- it shouldn't double-derp - MinecraftForge/FML@81c6421f84c1bff359dfe927974e8730b348806a Tweak license text- any osi licensed project can use the asm transformer code - LexManos: - Updated to 1.5 Pre-release - Updated FML: - MinecraftForge/FML@2d98835db8c6a7665ef55117d60ab4318876836b Scala support! It's still primitive, I hope that people will like it. I do :) - MinecraftForge/FML@5bfaf7c1700191b6ed8f4752c9a95bf8c25323ef Global object registry, also, support the new itemblockwithmetadata constructor - MinecraftForge/FML@80a40c03e644840d827eb7d67ff97f6558eaa2e4 Update to MCP 1.5 and minecraft 1.5. - MinecraftForge/FML@b3e854a15d7c50b4967be8237df5fdace95a15ee Update for new MCP with srg reobf. - LexManos: Fix typos. - LexManos: Deprecated Forge's ISidedInventroy, there is a vanilla solution. Added temporary config option to legacy furnace slot orientation. - LexManos: - Updated FML: - MinecraftForge/FML@f1c6bdd57d41a938cb3326d509042f6842e42396 Support the MCP format of partial reobfuscation for portability. Ensure modloader-like compatibility - MinecraftForge/FML@0419b9d9751ade4497343aefaf2ca43703eb479a Update MCP info for latest - LexManos: Early define CrashReport classes to combat invalid crash details. - LexManos: Fix reobf call. - -Build 1.5-7.7.0.558-snapshot15: - Christian: Clean up Access Transformer mapping data - Christian: - Updated FML: - MinecraftForge/FML@e9ff699c2dcd787a3e0ebaa427c625a48de4c9fb Refresh the renderengine after modloading is complete. Should fix issues with out-of-place texture registration by mods. - MinecraftForge/FML@a723aa68606d57b0ee5bac8b1d1905abef440b54 Refresh copyright notices on everything - MinecraftForge/FML@c42a2101408b21799728c88e2d02c718c3b0dd36 Strip deprecated code - MinecraftForge/FML@6eeae8c49ff4359dc21c44eb73e4e043285cd8bf Fix up state transition derp when the server crashes with an error- it shouldn't double-derp - MinecraftForge/FML@81c6421f84c1bff359dfe927974e8730b348806a Tweak license text- any osi licensed project can use the asm transformer code - LexManos: - Updated to 1.5 Pre-release - Updated FML: - MinecraftForge/FML@2d98835db8c6a7665ef55117d60ab4318876836b Scala support! It's still primitive, I hope that people will like it. I do :) - MinecraftForge/FML@5bfaf7c1700191b6ed8f4752c9a95bf8c25323ef Global object registry, also, support the new itemblockwithmetadata constructor - MinecraftForge/FML@80a40c03e644840d827eb7d67ff97f6558eaa2e4 Update to MCP 1.5 and minecraft 1.5. - MinecraftForge/FML@b3e854a15d7c50b4967be8237df5fdace95a15ee Update for new MCP with srg reobf. - LexManos: Fix typos. - LexManos: Deprecated Forge's ISidedInventroy, there is a vanilla solution. Added temporary config option to legacy furnace slot orientation. - LexManos: - Updated FML: - MinecraftForge/FML@f1c6bdd57d41a938cb3326d509042f6842e42396 Support the MCP format of partial reobfuscation for portability. Ensure modloader-like compatibility - MinecraftForge/FML@0419b9d9751ade4497343aefaf2ca43703eb479a Update MCP info for latest - LexManos: Early define CrashReport classes to combat invalid crash details. - LexManos: Fix reobf call. - -Build 13w09c-7.7.0.556-snapshot15: - LexManos: Make release quit on compile error. - -Build 13w09c-7.7.0.555-snapshot15: - LexManos: Readd second render pass to TileEntities and Entities, patches were missed when merging in master branch. As note, CB can DIAF. - LexManos: Fix compile error, forget to flush to disc. - -Build 13w09c-7.7.0.553-snapshot15: - Christian: Add an Icon to the LiquidStack, for rendering the liquid in various ways - -Build 13w09c-7.7.0.552-snapshot15: - Christian: - Updated FML: - MinecraftForge/FML@abe4f73a9a3158f6f9d1ea2334798f54a25817bf FIX massive performance issue with FML. Thanks to @sfPlayer1 for finding this epic derp on my part! - -Build 13w09c-7.7.0.551-snapshot15: - Christian: let's do it right this time. Hmmm - -Build 13w09c-7.7.0.550-snapshot15: - Christian: - Call stitcher for non-existent textures as well. Probably allows - for generated textures. Hmmm - -Build 13w09c-7.7.0.549-snapshot15: - LexManos: Fix ItemSeedFood respecting custom soils. - LexManos: - Updated FML: - MinecraftForge/FML@debbdc00be8ea1a261cdff83785ddc7100419a74 Capture Minecraft logs into FML logging - MinecraftForge/FML@74fffc6fdc2eda8caa9a7feb0826d7babb84751a Update next render to 40 - -Build 13w09c-7.7.0.548-snapshot15: - LexManos: Removed erroring imports and update build function to die on errors. - -Build 13w09c-7.7.0.547-snapshot15: - LexManos: New world event for controlling potential entity spawnlists. For #430 - -Build 13w09c-7.7.0.546-snapshot15: - LexManos: Add callback on TextureStitched to control texture loading. - -Build 13w09c-7.7.0.545-snapshot15: - LexManos: Fix animation location for textures with domains - LexManos: Add helper functions for deling with custom TextureStitched - -Build 13w09c-7.7.0.544-snapshot15: - LexManos: Copy over some needed files for debugging. - LexManos: Rework configuration, configs should now use Config.hasChanged to deterne if thehould call save(), also re-worked the saving to not use String.format as much. - LexManos: Fixed new python changes. - LexManos: - Updated FML: - MinecraftForge/FML@aed2cc446ad8d5882890c5f218eb894ea7bd2577 Force file name encoding to UTF-8, caused different zips on different systems. - -Build 13w09c-7.7.0.543-snapshot15: - Christian: Update submodule - -Build 13w09c-7.7.0.542-snapshot15: - Christian: Fix up patches for FML, also, add in FML as a submodule rather than a zip - Christian: - Add in simple texture management for mods using the stitcher. Scope with "{domain}:{texture}" to - get textures that are not at /textures//{texture}.png but /mods/{domain}/textures//{texture}.png - instead - LexManos: Testing selective commit of submodule. - LexManos: - Added submodule changelog ganerator: - - Updated FML: - MinecraftForge/FML@e74087ee430633475c3ca058e54e3ef242a9d6aa Ignore again, testing submodule. - LexManos: Removed GNUWin32 files and uneeded files seince FML is now a submodule. - LexManos: Remove window helper batch files. - LexManos: Update python scripts to reflect that FML is now a submodule. Delete updateasmdata as it's in /fml/ now. Build should work once again. - LexManos: Change FML module to read-only connection. - -Build 13w09c-7.7.0.539-snapshot15: - LexManos: Updated Forge to s13w09c - -Build 13w05b-7.7.0.538-snapshot15: - LexManos: Not supposed to have debug stuff... - -Build 13w05b-7.7.0.537-snapshot15: - LexManos: - Sync up with FML, Will not run nativly as you need deobfusication_data.zip in your libs folder. - We have not setup the download for that yet, to make it yourself just zip joined.srg name it deobfusication_data.zip and put it in lib - -Build 13w02b-7.7.0.536-snapshot15: - mehvids: Gave entities and tile entities access to the second render pass for translucency. - Christian: Attempt to fix a possible NPE in the face of ChickenBones' hackery. ChickenBones. stop it! - Christian: - Fix a potential problem with "Entity already added" when using the dormant - chunk cache capability. The entities in the dormant chunk cache will get new - IDs prior to the cached chunk returning. - Christian: Fix NPE causing issue with the cache. Derpy derp. - Christian: - Add in TESR culling, and a new TileEntity method to allow for differential sizing of the - TESR view culling vs the TE collision bounding box (the former defaults to the latter) - Checked into a branch because it's likely to break expanded TileEntities. - Christian: Bump the revision number for the TESR and renderpass changes - Christian: - Add in a mechanism for explicit subclassing of WeightedRandomChestItem to allow for - generational style chest content generation rather than static. Cleans up some old code nicely - Christian: - We try and log a message if we detect a world leak: it's probably not infallible, but it should - help mod developers- if you see this when testing your mod with, say, mystcraft, you're probably - keeping a hold of an invalid handle to the World (either directly, or indirectly via Entity or TileEntity) - and you should look to refactor to wrap those handles in WeakReferences - LexManos: Moved warning logic down, so that no more tickets are isues if the mod is over it's alotment. Fixes #378 - LexManos: Forge Additions: Exposed ChunkCache.worldObj to public PR #383 - LexManos: Fixup a resource leak warning. - LexManos: Add DimensionManager.unregisterProviderType for PR #388 - LexManos: Added input getters for Ore recipies, and javadoc warning for modders, #390 - LexManos: Rework canSilkHarvest hook to try and honor vanilla overrides, should close #391 - LexManos: Added catch to TileEntityChestRenderer for potential crash when modders do bad things -.- Closes #389 - LexManos: Change access of upper and lower chest fields of InventoryLargeChest to public. Closes #387 - LexManos: Change WorldServer.allPlayersSleeping to public, and remove the SideOnly annotation on EntityPlayer.getSleepTimer() Closes #393 - LexManos: Fix initalization issue with the clamping threshold config value. And remove vanilla console spam related to it. - Christian: Fix small derp in TE - Christian: - Update FML:549b6fd - 549b6fd IMC tweaks: runtimeMessages now work (thanks for all that testing for this much requested feature!) and IMCEvent will no longer rem - 9fafdc1 More logging tweaks. You can probably configure individual mod log files if you wish now - f169f7c A log of logging cleanup. FML will now read logging.properties to configure logging channels a couple of times during startup. You - 3ac891f Try and handle "death on startup" a bit cleaner - 2dc0189 Deprecate the old GUI ticktype. They're dead and have been for some time. - dd98784 Tweak a method signature - 1c9a510 Add parameters to FML install to enable/disable certian aspects. Applying patches, running transformer/merger, and decompiling serv - 1bd6847 Fix up packages.csv ordering for easier diffing - Christian: - Add in "armor ticking"- implement the interface and the armor piece will tick. - - Update FML:22dbe41 - 22dbe41 Fix up mistake that broke all modloading. Nice. - Christian: Fix TESR rendering for double chests - Christian: Fix possible null case for collision bounding box. - Christian: Remove the single use interface ITickingArmor, and apply to Item directly. - Christian: - Fix ServerBrand retriever- forge is now forge,fml! - - Update FML: cd96718 - cd96718 Fix HD mob skins, FINALLY!!! Stupid eyes are stupid. - LexManos: Kill generated timestamp in config files, if you want to retreive this information, usethe file's modified time. Closes #404 - LexManos: Actually use the line parameter in ServerChatEvent, closes #401 - LexManos: Kill .sh wrappers until someone writes more robust versions, closes #392 and closes #402 - LexManos: Made LiquidStack.isLiquidEqual(ItemStack) properly check the contained liquid, in addition to obvious id/meta closes #399 and closes #403 - LexManos: Add item frame transformations to the EntityItem render helper Closes #407 - LexManos: Added a hook into SlotArmor so Items can control if they are classified as a Armor type. Closes #408 - LexManos: Fixes comparison for items in creative inventory, closes #411 - LexManos: Fix fortune modifier always passed as 0 to idDropped closes #412 - LexManos: Fix EventTransformer throwing an NPE when transforming a class that doesn't exist. Closes #413 - LexManos: Fix profiler issue with RenderGlobal patch. Closes #414 - LexManos: Jenkins needs this script, *pokes Overmind* -.- - LexManos: - Update FML to 556: - b6d6f235 Fix sprite map issue. - 1158aa46 Fix Language Registry, closes #FML 163 - 50ce6fb3 Option to disable renaming for srgnames. - LexManos: Disable automatic equiti of pcke dup items for players, and fixed index issues in Player.setCurrentItemOrArmor. - LexManos: Fixed entity colision above max world height, and below 0. Closes #400 - LexManos: Change usage of ketSet/get to entrySet in OreDictionary, closes #422 - LexManos: Fix movement speed check, closes #420 - LexManos: clarify what the size is measured in for the dormant chunk cache. -.- - LexManos: ItemStack sensitive versions of Item.getPotionEffect and Item.isPotionIngredient Closes #321 - LexManos: WorldGen*Trees shoud not respect custom soils. Closes #355 - LexManos: Added unload event for client worlds Closes #405 - LexManos: Store the glMultiTexCoord lightmap for later use with glDrawArrays closes #406 - LexManos: Add water and lava to liquid dictionary by default, closes #419 - LexManos: Bump version to 6.6.2, declaring Forge for MC 1.4.7 feature complete, as 1.5 is on the horizon, only bug fixes from this point on. Unless something major happens on Mojang's end. - LexManos: Fix TESR culling for beacons, and implement a good enough measure for Chests. - -Build 13w02b-7.7.0.535-snapshot15: - LexManos: - Merge commit '695b080197bd577cc34fe6dbc72b74f4a74b2d5c' into snapshot15 - Testing cherry picking. - -Build 1.4.7-6.6.2.534: - LexManos: Fix TESR culling for beacons, and implement a good enough measure for Chests. - -Build 1.4.7-6.6.2.533: - LexManos: Bump version to 6.6.2, declaring Forge for MC 1.4.7 feature complete, as 1.5 is on the horizon, only bug fixes from this point on. Unless something major happens on Mojang's end. - -Build 1.4.7-6.6.1.532: - LexManos: Added unload event for client worlds Closes #405 - LexManos: Store the glMultiTexCoord lightmap for later use with glDrawArrays closes #406 - LexManos: Add water and lava to liquid dictionary by default, closes #419 - -Build 1.4.7-6.6.1.531: - LexManos: WorldGen*Trees shoud not respect custom soils. Closes #355 - -Build 1.4.7-6.6.1.530: - LexManos: Fix movement speed check, closes #420 - LexManos: clarify what the size is measured in for the dormant chunk cache. -.- - LexManos: ItemStack sensitive versions of Item.getPotionEffect and Item.isPotionIngredient Closes #321 - -Build 1.4.7-6.6.1.529: - LexManos: Disable automatic equiti of pcke dup items for players, and fixed index issues in Player.setCurrentItemOrArmor. - LexManos: Fixed entity colision above max world height, and below 0. Closes #400 - LexManos: Change usage of ketSet/get to entrySet in OreDictionary, closes #422 - -Build 1.4.7-6.6.1.528: - LexManos: - Update FML to 556: - b6d6f235 Fix sprite map issue. - 1158aa46 Fix Language Registry, closes #FML 163 - 50ce6fb3 Option to disable renaming for srgnames. - -Build 1.4.7-6.6.1.527: - LexManos: Kill generated timestamp in config files, if you want to retreive this information, usethe file's modified time. Closes #404 - LexManos: Actually use the line parameter in ServerChatEvent, closes #401 - LexManos: Kill .sh wrappers until someone writes more robust versions, closes #392 and closes #402 - LexManos: Made LiquidStack.isLiquidEqual(ItemStack) properly check the contained liquid, in addition to obvious id/meta closes #399 and closes #403 - LexManos: Add item frame transformations to the EntityItem render helper Closes #407 - LexManos: Added a hook into SlotArmor so Items can control if they are classified as a Armor type. Closes #408 - LexManos: Fixes comparison for items in creative inventory, closes #411 - LexManos: Fix fortune modifier always passed as 0 to idDropped closes #412 - LexManos: Fix EventTransformer throwing an NPE when transforming a class that doesn't exist. Closes #413 - LexManos: Fix profiler issue with RenderGlobal patch. Closes #414 - LexManos: Jenkins needs this script, *pokes Overmind* -.- - -Build 1.4.7-6.6.1.524: - Christian: - Fix ServerBrand retriever- forge is now forge,fml! - - Update FML: cd96718 - cd96718 Fix HD mob skins, FINALLY!!! Stupid eyes are stupid. - -Build 1.4.7-6.6.1.523: - Christian: Remove the single use interface ITickingArmor, and apply to Item directly. - -Build 1.4.7-6.6.1.522: - Christian: Fix possible null case for collision bounding box. - -Build 1.4.7-6.6.1.521: - mehvids: Gave entities and tile entities access to the second render pass for translucency. - Christian: - Add in TESR culling, and a new TileEntity method to allow for differential sizing of the - TESR view culling vs the TE collision bounding box (the former defaults to the latter) - Checked into a branch because it's likely to break expanded TileEntities. - Christian: Bump the revision number for the TESR and renderpass changes - Christian: Fix small derp in TE - Christian: - Update FML:549b6fd - 549b6fd IMC tweaks: runtimeMessages now work (thanks for all that testing for this much requested feature!) and IMCEvent will no longer rem - 9fafdc1 More logging tweaks. You can probably configure individual mod log files if you wish now - f169f7c A log of logging cleanup. FML will now read logging.properties to configure logging channels a couple of times during startup. You - 3ac891f Try and handle "death on startup" a bit cleaner - 2dc0189 Deprecate the old GUI ticktype. They're dead and have been for some time. - dd98784 Tweak a method signature - 1c9a510 Add parameters to FML install to enable/disable certian aspects. Applying patches, running transformer/merger, and decompiling serv - 1bd6847 Fix up packages.csv ordering for easier diffing - Christian: - Add in "armor ticking"- implement the interface and the armor piece will tick. - - Update FML:22dbe41 - 22dbe41 Fix up mistake that broke all modloading. Nice. - Christian: Fix TESR rendering for double chests - -Build 1.4.7-6.6.1.520-TESRculling: - Christian: Fix small derp in TE - -Build 1.4.7-6.6.1.519-TESRculling: - Christian: - Add in a mechanism for explicit subclassing of WeightedRandomChestItem to allow for - generational style chest content generation rather than static. Cleans up some old code nicely - Christian: - We try and log a message if we detect a world leak: it's probably not infallible, but it should - help mod developers- if you see this when testing your mod with, say, mystcraft, you're probably - keeping a hold of an invalid handle to the World (either directly, or indirectly via Entity or TileEntity) - and you should look to refactor to wrap those handles in WeakReferences - LexManos: Moved warning logic down, so that no more tickets are isues if the mod is over it's alotment. Fixes #378 - LexManos: Forge Additions: Exposed ChunkCache.worldObj to public PR #383 - LexManos: Fixup a resource leak warning. - LexManos: Add DimensionManager.unregisterProviderType for PR #388 - LexManos: Added input getters for Ore recipies, and javadoc warning for modders, #390 - LexManos: Rework canSilkHarvest hook to try and honor vanilla overrides, should close #391 - LexManos: Added catch to TileEntityChestRenderer for potential crash when modders do bad things -.- Closes #389 - LexManos: Change access of upper and lower chest fields of InventoryLargeChest to public. Closes #387 - LexManos: Change WorldServer.allPlayersSleeping to public, and remove the SideOnly annotation on EntityPlayer.getSleepTimer() Closes #393 - LexManos: Fix initalization issue with the clamping threshold config value. And remove vanilla console spam related to it. - -Build 1.4.7-6.6.0.518: - LexManos: Fix initalization issue with the clamping threshold config value. And remove vanilla console spam related to it. - -Build 1.4.7-6.6.0.517: - LexManos: Moved warning logic down, so that no more tickets are isues if the mod is over it's alotment. Fixes #378 - LexManos: Forge Additions: Exposed ChunkCache.worldObj to public PR #383 - LexManos: Fixup a resource leak warning. - LexManos: Add DimensionManager.unregisterProviderType for PR #388 - LexManos: Added input getters for Ore recipies, and javadoc warning for modders, #390 - LexManos: Rework canSilkHarvest hook to try and honor vanilla overrides, should close #391 - LexManos: Added catch to TileEntityChestRenderer for potential crash when modders do bad things -.- Closes #389 - LexManos: Change access of upper and lower chest fields of InventoryLargeChest to public. Closes #387 - LexManos: Change WorldServer.allPlayersSleeping to public, and remove the SideOnly annotation on EntityPlayer.getSleepTimer() Closes #393 - -Build 1.4.7-6.6.0.516: - Christian: - We try and log a message if we detect a world leak: it's probably not infallible, but it should - help mod developers- if you see this when testing your mod with, say, mystcraft, you're probably - keeping a hold of an invalid handle to the World (either directly, or indirectly via Entity or TileEntity) - and you should look to refactor to wrap those handles in WeakReferences - -Build 1.4.7-6.6.0.515: - Christian: - Add in a mechanism for explicit subclassing of WeightedRandomChestItem to allow for - generational style chest content generation rather than static. Cleans up some old code nicely - -Build 1.4.7-6.6.1.514-TESRculling: - Christian: Bump the revision number for the TESR and renderpass changes - -Build 1.4.7-6.6.0.513-TESRculling: - mehvids: Gave entities and tile entities access to the second render pass for translucency. - -Build 1.4.7-6.6.0.511: - Christian: Fix NPE causing issue with the cache. Derpy derp. - -Build 1.4.7-6.6.0.510: - Christian: - Fix a potential problem with "Entity already added" when using the dormant - chunk cache capability. The entities in the dormant chunk cache will get new - IDs prior to the cached chunk returning. - -Build 1.4.7-6.6.0.509: - Christian: Attempt to fix a possible NPE in the face of ChickenBones' hackery. ChickenBones. stop it! - -Build 13w02b-7.7.0.508-snapshot15: - scott: Add ability to WorldTypes to display the 'Customize' button and react to it - LexManos: - Update FML: - New scripts for signing jars, and repackging source folders. - Fix LanguageRegistry loading files in UTF-8 format. loadLocalization should work for non-xml in all languages now (assumes UTF-8) - Fix incorrect end length calculation. Closes #161 Thanks BStramke! - LexManos: Fix check in getItem() to allow lowest item ID #361 - CovertJaguar: - Fixed render passes for EntityItems - - Should be < instead of <= - Christian: - Update licencing information to make clear that forge is allowed to redistribute and automatically - download parts of MCP, but this permission is not transitive to people distributing MinecraftForge - source independently of the MinecraftForge project. - - Update MCP to 7.26a and FML: 7ad8529 - 7ad8529 Update MCP to MCP7.26a and refresh MCP names - 15534ed Update address of the FML repository to the new location in all the files - a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. - Christian: - Update FML: a99c488 - a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates - 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates - aa822e3 Fix logical error in comment text - 26a5b31 FMLLogFormatter: dynamic log level name - Christian: Merge part of PR #375 related to ChunkEvent.Load for the client side - Christian: - Update FML: 5ce4e31 - 5ce4e31 Fix breaking change - Christian: - Add in patch to change how playerinstance sends TE chunk updates. It should always send just the TEs - that changed now, and not "ALL" TEs. Also, added configuration value to change the 64 threshold to a - configurable number - Christian: Some javadoc fixes - Christian: - Change DimensionManager.getCurrentSaveRootDirectory() to try and work even for the new server about to start event - - Update FML:8921cfe - 8921cfe Remember to add the new patches! - cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. A - Christian: - Update FML:aebf6eb - aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti - Christian: - Fix a couple of forge patches - - Update FML: d075daf - d075daf Merge branch 'master' into snapshot15 Fix up compilation and patching errors - 1bd6847 Fix up packages.csv ordering for easier diffing - dd832f2 Update for MCP7.30c - fixes redstone rendering issues - aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti - 8921cfe Remember to add the new patches! - cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. Also, added in a "pre-server - e1c6630 Javadoc cleanup - 5ce4e31 Fix breaking change - a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates - 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates - 7ad8529 Update MCP to MCP7.26a and refresh MCP names - 15534ed Update address of the FML repository to the new location in all the files - aa822e3 Fix logical error in comment text - a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. - 0165742 Fix mcp conf md5 signatures for the snapshot - 26a5b31 FMLLogFormatter: dynamic log level name - -Build 1.4.7-6.6.0.507: - Christian: - Update FML:aebf6eb - aebf6eb Add in a registry method to allow for alternative TileEntity names- they will be used to support loading maps containing the older definiti - -Build 1.4.7-6.6.0.506: - Christian: - Change DimensionManager.getCurrentSaveRootDirectory() to try and work even for the new server about to start event - - Update FML:8921cfe - 8921cfe Remember to add the new patches! - cd67596 The "ServerStarting" event should now properly crash the server if it fails, so the client will properly exit. A - -Build 1.4.7-6.6.0.505: - Christian: Some javadoc fixes - -Build 1.4.7-6.6.0.504: - Christian: - Update FML: 5ce4e31 - 5ce4e31 Fix breaking change - Christian: - Add in patch to change how playerinstance sends TE chunk updates. It should always send just the TEs - that changed now, and not "ALL" TEs. Also, added configuration value to change the 64 threshold to a - configurable number - -Build 1.4.7-6.6.0.503: - scott: Add ability to WorldTypes to display the 'Customize' button and react to it - CovertJaguar: - Fixed render passes for EntityItems - - Should be < instead of <= - Christian: Merge part of PR #375 related to ChunkEvent.Load for the client side - -Build 1.4.7-6.6.0.502: - Christian: - Update FML: a99c488 - a99c488 Merge branch 'patch-1' of https://github.com/bspkrs/FML into gh-updates - 94282c5 Merge branch 'FMLLogFormatter' of https://github.com/donington/FML into gh-updates - aa822e3 Fix logical error in comment text - 26a5b31 FMLLogFormatter: dynamic log level name - -Build 1.4.7-6.6.0.501: - Christian: - Update licencing information to make clear that forge is allowed to redistribute and automatically - download parts of MCP, but this permission is not transitive to people distributing MinecraftForge - source independently of the MinecraftForge project. - - Update MCP to 7.26a and FML: 7ad8529 - 7ad8529 Update MCP to MCP7.26a and refresh MCP names - 15534ed Update address of the FML repository to the new location in all the files - a14ab91 Update license text to make clear that FML is not a way to sidestep MCP licensing. - -Build 13w02b-7.7.0.500-snapshot15: - LexManos: Bump major and minor version numbers to mark 1.5, it's gunna break everything. Should be a compileable 1.5 build. - -Build 1.4.7-6.6.0.499: - LexManos: - Update FML: - New scripts for signing jars, and repackging source folders. - Fix LanguageRegistry loading files in UTF-8 format. loadLocalization should work for non-xml in all languages now (assumes UTF-8) - Fix incorrect end length calculation. Closes #161 Thanks BStramke! - LexManos: Fix check in getItem() to allow lowest item ID #361 - -Build 1.4.7-6.6.0.497: - LexManos: Added getter for Metadata smelting list, because, why not.. PR: #352 - LexManos: Fixed incorrect lighting in some cases. Closes issue #349 - LexManos: - Added event hooks to control to allow mod control of mob spawning. PR: #337 - Deprecated LivingSpecialSpawnEvent in favor of new LivingSpawnEvent.SpecialSpawn - -Build 1.4.7-6.6.0.496: - LexManos: Fix issue where dungeon loot table had wrong values. - LexManos: Fixed issue where ChunkPriderEvent.InitNoiseField used the wrong sizeY value. - LexManos: Some small code cleanups. - -Build 1.4.7-6.6.0.495: - Christian: - Update FML:6f1b762 - 6f1b762 Move server stopped *after* the server has actually stopped. *sigh* - -Build 1.4.7-6.6.0.494: - Christian: - Update FML:d9bfb29 - d9bfb29 Add in a "server stopped" event - -Build 1.4.7-6.6.0.493: - Christian: - Attempt to resolve the entity concurrency issue, by simply deferring unload - to the next tick - -Build 1.4.7-6.6.0.492: - Christian: Fix noisy exception logging - Christian: - Update FML:6fc7bc4 - 6fc7bc4 Add in some classloader debugging information: use fml.debugClassLoading=true as a system property to track down prob - -Build 1.4.7-6.6.0.491: - Christian: - Fix a missed patch and cleaned up other patches - Rollback a method name change that breaks a lot of mods - Update FML: fb701cd - fb701cd Revert MCP name change for canConnectRedstone - it conflicts with a forge method of the same name and breaks 1 - -Build 1.4.7-6.6.0.490: - Christian: - Update for MC 1.4.7 - Update FML: f7cc50b - -Build 1.4.6-6.5.0.489: - LexManos: Attempt a fix for the new chunk compression changes. - -Build 1.4.6-6.5.0.488: - Christian: - Update FML:1a232cf - 1a232cf Fix multiple GUI containers for ML containers. Sorry ultimatechest that this fix took so long, a bug report at - 853f54b Log if there's a problem reading the class bytes - -Build 1.4.6-6.5.0.487: - LexManos: Fix mobs spawning on inverted slabs/stairs. - -Build 1.4.6-6.5.0.486: - LexManos: Use nanoTime instead of currentTimeMillis for potential performance increase. - LexManos: Fixed order <.< you saw nothing. - -Build 1.4.6-6.5.0.484: - LexManos: Fixed issue with Efficancy enchatment when connected to vanilla servers. - LexManos: Fixed EntityMinecard missed patch, Issue #338 - LexManos: Fixed typo in dungeon loot - -Build 1.4.6-6.5.0.483: - Uristqwerty: - Force parent ListenerListInsts to rebuild. - - Without this change, it is possible (and, in fact, nearly guaranteed) for lists to rebuild endlessly if a parent list is marked as needing a rebuild but never actually read. This change forces the parent list(s) to rebuild as well, resulting in a significant performance increase and smoother framerate due to greatly reduced GC activity. - Christian: Protect deflation with a simple semaphore. Should close #336 - -Build 1.4.6-6.5.0.482: - LexManos: Update FML: Fix NPE in fingerprint loading, and pass expectged fingerprint to FMLFingerprintViolationEvent - -Build 1.4.6-6.5.0.481: - Christian: - Update FML: 7e6456d - 7e6456d Fix a message delivery issue in IMC - 664ebda Some tweaks for signing and ID matching - -Build 1.4.6-6.5.0.480: - LexManos: - Fixes a vanilla bug where the player view would dip when stepping between certain blocks - https://mojang.atlassian.net/browse/MC-1594 - Issue #318, let me know if you notice any issue. - -Build 1.4.6-6.5.0.479: - LexManos: Fixed parameter ordering u.u - -Build 1.4.6-6.5.0.478: - LexManos: - Re-write/Deprecated DungeonHooks loot tables, now uses ChestGenHooks like the rest of the world gen. Also fixes issue #330 by adding in enchanted books. - - Should be API compatible. - -Build 1.4.6-6.5.0.477: - LexManos: - Move chunk compression to the network thread in Packet 51 and 56 - - This will reduce the server load considerably by doing the chunk data compression in writePacketData, which will be run from the network thread. - - The chunk compression can easily use 1/4th of the overall server thread CPU time if someone is exploring much, especially when moving quickly (e.g. with quantum leggings). - - Player, this is how it's properly done. - -Build 1.4.6-6.5.0.476: - LexManos: Fix missed patch in EntityMinecart, #334 - LexManos: Explicitly check if useItem is not denied, allows for denying the item without denying the block - -Build 1.4.6-6.5.0.475: - LexManos: Delete unneeded patch. - -Build 1.4.6-6.5.0.474: - Christian: Some access transformations to allow mystcraft to work again. Closes #331 - -Build 1.4.6-6.5.0.473: - Christian: Fix Fireworks to always work in SMP - -Build 1.4.6-6.5.0.472: - Christian: - Fix up enchantment at the enchanting table vs via a book. Adds in a method - that previously exists under a new name: canApplyAtEnchantingTable() - to determine enchantments that can apply at the enchanting table (a smaller - subset of all possible enchantments for an item, now). Also, add your - enchantments to the anvil book application list, if neccessary. - -Build 1.4.6-6.5.0.471: - Christian: Tweak packet56 to see if this resolves the apparent worldgen derpiness - -Build 1.4.6-6.5.0.470: - Christian: - Server side only item callback: allow a held item to decide if it wants to pass sneak-clicks through - to a block, or not. Defaults false- the same as the new vanilla behaviour (sneak clicks with an item - in hand don't activateBlock anymore). - -Build 1.4.6-6.5.0.469: - Christian: Move another patch up a bit - should actually close #329 - -Build 1.4.6-6.5.0.468: - Christian: Add IPlantable to itemseedfood. Potato and carrot support! - -Build 1.4.6-6.5.0.467: - LexManos: - Update FML: - Fixed issue with users who don't have the JDK installed in there path - MCP will now output bfusicated files with windows reserved names to _name.class and FML will prioritize those names. - Fixed placement of onConnectionClosed callback - LexManos: Updated NetClientHandler for onConnectionClosed placement fix. - LexManos: Fixed cpw's derp in the PlayerInteractEvent logic. - -Build 1.4.6-6.5.0.466: - Christian: Fix ItemInWorldManager so that itemUseFirst works, and the playerinteractevent works. Minor patching mis hit. Apologies. - -Build 1.4.6-6.5.0.465: - Christian: OK. AT the right thing, and add in a call to always get the right thing. Clean up patch fuzz too. - -Build 1.4.6-6.5.0.464: - Christian: Access Transform a couple of methods - -Build 1.4.6-6.5.0.463: - LexManos: Fixe BiomeDecorator AT entry. - -Build 1.4.6-6.5.0.462: - Christian: Drop the item in onBlockHarvested, not breakBlock - -Build 1.4.6-6.5.0.461: - Christian: Fix up block drops for skulls and cocoa - -Build 1.4.6-6.5.0.460: - Christian: And fix up the other equals - -Build 1.4.6-6.5.0.459: - Christian: Fix comparing ItemStack tags for equality - -Build 1.4.6-6.5.0.458: - Christian: - Update FML: 40e57a2 - 40e57a2 Update MCP to newer version Fix fingerprint fire - -Build 1.4.6-6.5.0.457: - Christian: - Fix accidentally removed not-deprecated methods. - - Update FML: d604e44 - d604e44 InterModComms now supports a runtime polling based model for inter-mod comms at runtime. Deprecate method that shouldn't be used. COPY it's content to your mod. Don't CALL it. - 8b7778c Don't be as alarming about item overwrites. - -Build 1.4.6-6.5.0.456: - Christian: Fix binding the texture for multiple render passes. Thanks mdiyo! Closes #320 - -Build 1.4.6-6.5.0.455: - Christian: Allow RenderItem to be easily overridden for things that need to render entityitems. IronChest, BuildCraft, RP2, whatever... - -Build 1.4.6-6.5.0.454: - LexManos: Fixed items dieing improperly due to new EntityItem sync changes, also made items render offset when rendered in 3d. - -Build 1.4.6-6.5.0.453: - Christian: Fix RenderItem so that forge textures load for it - -Build 1.4.6-6.5.0.452: - LexManos: Removed all functions marked as deperacted for the new MC version - LexManos: - Updated FML: - Fixes startclient/startserver - - Added configuration file which allows modids to ignore ID validation checking. IT WILL CRASH YOUR GAME in 99.999% of cases. - - Immibis is a whingy ass. And TinyTimRob too. Now STFU and GTFO. closes fml/#510 for ever. - -Build 1.4.6-6.5.0.451: - LexManos: Inital update to 1.4.6, Version bumped to 6.5 - LexManos: Added jar signing to forge, we sign cpw/* and net/minecraftforge/* - LexManos: Try and print error while signing jar - -Build 1.4.5-6.4.2.448: - Christian: - Update FML: e98c311 - e98c311 Fix up handling null names. *sigh* - -Build 1.4.5-6.4.2.447: - Christian: - Update FML: 293edb3 - 293edb3 Some tweaks to item identification. The GameRegistry methods are deprecated to encourage you to use the new named ones instead. These will force a name on the item/block, allowing for stronger matching t - 9266ff3 Updated MCP download mirriors upon Searge's request. - 31695d5 Fix var name messup - bfb3020 Update released eclipse project to link BouncyCastle - 22a88ea Change ID management slightly. IDs are tracked by block type for itemblock items now. This means servers will need to update. Also, ordinal rearrangements within a mod will no longer trigger server disco - -Build 1.4.5-6.4.2.446: - LexManos: Make PlaySoundAtEntityEvent fire for players as well - LexManos: Remove erronious double call to PlayerDestroyItemEvent - -Build 1.4.5-6.4.2.445: - LexManos: Update FML to fix a typo - -Build 1.4.5-6.4.2.444: - LexManos: Automatically resolved imports. - LexManos: Fixup workspace for BC replacement - LexManos: Manual import fixes - LexManos: - Update FML: - Minecraft is now decompiled into sane package names. - Got rid of the src/common folder as the only folder that exists is src/mincraft, because the client and server codebase is merged. - ID Map generation/validation fixes - LexManos: Updated python scripts for removal of common folder - LexManos: Update patches for repackage. - LexManos: Update AT for repackage - LexManos: Update FML: Fixed the eclipse workspace to reference BouncyCastle library. - -Build 1.4.5-6.4.2.443: - LexManos: Bump version to 6.4.2 to mark the merge of TerrainGen branch. - -Build 1.4.5-6.4.1.442: - Christian: - Added terrain gen events - Added biome color events for @XCompWiz - Christian: Removed unchanged file - Christian: Readded unchanged version - Christian: For @XCompWiz, added a hook to allow mods to dynamically change the color that water is rendered. - Christian: Fix RenderBlocks patch, touch branch - -Build 1.4.5-6.4.1.441: - LexManos: - Update FML: - 2f34290e: Fix possible escape leakage.. - 83deece6: Change ID management slightly. IDs are tracked by block type for ItemBlock items now. This means servers will need to update. - - Also, ordinal rearrangements within a mod will no longer trigger server disconnection, though a warning will still be logged. - LexManos: Derp, imported the repackaged names not old names. - -Build 1.4.5-6.4.1.439: - LexManos: Update readme to reflect the fact that we now download MCP. - -Build 1.4.5-6.4.1.438: - LexManos: Fix ForgeDirection.ROTATION_MATRIX for issue #313 - LexManos: Made GuiContainer.drawSlotInventory overrideable for issue #312 - LexManos: Made BlockButton.func_82535_o overrideable for issue #311 - LexManos: Moved check if map cursor should 'spin' and which world a player respawns in to WorldProvider for PR #308 - LexManos: Add .DS_Store to the gitignore for mac users - LexManos: Add CloudRenderer for PR #304 - LexManos: New TileEntity function to determine if the TE should be destroied when Block/Meta changes, For Issue #300 - LexManos: Pistons now respect world height a little better, for PR #286, will review Rotation event later. - LexManos: Creative GUI will now remember what tab page you were on, thanks Matchlighter PR #290 - LexManos: Fix type in ForgeChunkManager.ticketCountAvaILableFor, thanks iChun PR: #285 - LexManos: Fixes crash when mods add TreeMaps to the Configuration map, thanks AtomicStryker, PR: #282 - LexManos: Fix shouldRiderSit() to properly determine if rider is sitting. - LexManos: Expose BiomeDecorator fields for custom Biome information, Issue: #239 - LexManos: Make BlockButton.sensible protected and non-final - -Build 1.4.5-6.4.1.437: - LexManos: Fix for FML Fixes eclipse workspace, now sets execution bits on astyle-osx, and mcp .sh files. Also now kills install if astyle is not found. - -Build 1.4.5-6.4.1.436: - LexManos: Fixed release -skipchangelog - LexManos: Fixed install --mcp-dir - LexManos: - Updated FML to 486: - 02b54ca8: Add a modid on the mods list, should make it easier to do things like forge chunkloading config - 70670f2f: Fix build eclipse extractor task - b9fa3fc9: Add in storage, detection and validation of the ItemID array between client and server - 5e5d8206: Fixing id map generation - should validate correctly now - f9fc06a8: Remade python dist as 32-bit. - 93d47a1c: Reenabled replacement of the eclipse folder. - -Build 1.4.5-6.4.1.435: - LexManos: And finally, fix up the release install script to have a parameter to specity the MCP directory. - -Build 1.4.5-6.4.1.434: - LexManos: Fix Forge install script to use python shipped with FML. - -Build 1.4.5-6.4.1.433: - LexManos: Push didn't get all of eclipse.... - -Build 1.4.5-6.4.1.432: - LexManos: - Cleaned up eclipse workspace and moved it to a zip file. - Setup will extract it if it doesn't already exist. - -Build 430: - Christian: Fix release script for new forge job name. Add in skip changelog option for local builds - -Build 1.4.5-6.4.1.426: - LexManos: Remove MCP from released src distro.. whops. - -Build 1.4.5-6.4.1.425: - Christian: - Fix static method, closes #271 - Don't spam the log if a mod requests a ticket beyond their maximum. A single message is fine. - -Build 1.4.5-6.4.1.424: - GuntherDW: Fix typo in chunkmanager config - Christian: fix List configs - Christian: Add Chunk Watch and UnWatch events. - -Build 1.4.5-6.4.1.414: - Christian: - Tweak release.py script: HEAD==master in general - - Update FML: 26a2ef5 - 26a2ef5 Add a modid on the mods list, should make it easier to do things like fo - b4e3490 Fix build eclipse extractor task - 828341f Fix typo - 7a8dae5 Try and make branch non-derpy - d3c0e1f Try defaulting branch differently - 9c77d3f Remove old eclipse workspace and ship/extract as a zip file (use ant set - 6371e9b Assume Forge is the parent directory when checking for AT configs. - 516954e Name both zips the same format - 1151d5c Last part of branch name only please - 25f1dda Try and get a valid branch name on jenkins - 39a146f Clean up build.xml script- support outputting a branched jar file - 037dcae Small derp in install.py - 01d6da3 Try marking python as binary. - 8b26659 FML will now attempt to download MCP as part of the install process Now - 42b3e6a Windows Python distrabution created using py2exe, thanks Fesh0r for the - e709ab8 Marked more spots in gui/items bitmask as being free. - -Build 1.4.5-6.4.1.413: - LexManos: Add wget and unzip from GnuWin32 for use in the setup scripts. - LexManos: Update FML, now includes python, and will download MCP for you - LexManos: Update python files to add support for specifying MCP directory and FML downloading MCP on the fly. - LexManos: Fix issue with DimensionManager.shouldLoadSpawn - -Build 1.4.5-6.4.1.411: - Christian: Fix #289 - -Build 1.4.5-6.4.1.410: - Christian: - Add in some additional ticket loading callbacks for ChickenBones. Closes #284 - Add in a call to determine if there are possible chunktickets for a world. This should let - Mystcraft and other dynamic world generating mods check if they should immediately load - a world based on existing chunk tickets. - -Build 1.4.5-6.4.1.409: - LexManos: Fix issue where non-BlockContainer TEs would not be removed properly. - -Build 1.4.5-6.4.1.408: - LexManos: Fix logic issue in ForgeChunkManager.ticketCountAvaliableFor(username) PR - LexManos: Fix issue where worlds were potentially unloaded improperly on server shutdown. - -Build 1.4.5-6.4.1.407: - LexManos: Small change to fix loading configs. - -Build 1.4.5-6.4.1.406: - LexManos: Added section of the EntityData NBT that will be persisted for players across respawning. - -Build 1.4.5-6.4.1.405: - LexManos: Exposed some ChunkLoader information for PR #278 - LexManos: Fix potential NPE in EntityJoin handler and print warning. - -Build 1.4.5-6.4.1.404: - LexManos: Small tweak to config to use Treemap - -Build 1.4.5-6.4.1.403: - xcompwiz: - Adds a more intelligent chunk constructor - - Adds a chunk constructor with full block id range, that's metadata - sensitive, has intelligent coord ordering, and which allows for - generation at greater heights than 127. - xcompwiz: Fixes some weird formatting - zach: - Fixes ordering for z & x loops (proper array increment order) - - The ordering before would skip about in the ids and metadata arrays. This runs linearly and should improve performance. - Done live on github - -Build 1.4.5-6.4.1.402: - LexManos: Fixed AIOOB issue with new sanity check in getBlock - -Build 1.4.5-6.4.1.401: - LexManos: Fix potential NPE in saving a property that didn't define a type. - -Build 1.4.5-6.4.1.400: - LexManos: - Added new functions to the Config class to allow for specification of comments when getting properties. - Added new getTerrainBlock whihc will limit the resuling ID to < 256, useful for world gen. - Calls to getBlock with IDs less then 256 will be assigned values above 256 {Thus freeing up terrain gen slots} - Made ConfigCategory implement Map should fix compatibility with most mods that broke two builds ago. - -Build 1.4.5-6.4.0.399: - xhamolk.class11: - OreDictionary addition: getOreID(ItemStack) - - Allow getting the oreID from a ItemStack, as an alternative from getOreID(String). - - Now is easier to exchange items for their equivalencies through the OreDictionary. - -Build 1.4.5-6.4.0.398: - LexManos: New nested configuration category support, for PR #258 - -Build 1.4.5-6.4.0.397: - LexManos: Fixed issue with abandoned chunks. - LexManos: Fixed random chest items not generating to there max stack sizes. - -Build 1.4.5-6.4.0.396: - ohai.iChun: - Add check that Entity saves to disk before saving entity to saved chunkloading data. - - Returning false to addEntityID prevents the entity from being saved (cred to LexManos) - Entities which do not save to disk but are chunkloaders causes errors the next time the world loads. This ought to fix it. - -Build 1.4.5-6.4.0.395: - LexManos: Updated FML, proper free-sprite list for /gui/items.png, and fixed MCP version. - -Build 1.4.5-6.4.0.394: - Christian: - Move server specific patch back to common from minecraft. - - Update FML: 1f5c58b - 1f5c58b Fix up MCP version - 61e4db2 Merge joined.exc add update howto - 5efc1eb Revert "Fix MC-2497 - derpy torch flames. Moved from forge. Everyone sho - 3b3600d Modified merger to just consider all server classes as common. And moved - edcc5ca Forgot mcp.cfg - ca79dfe Updated to 1.4.5b - 5945279 Fix python error - 57bf643 Modified decompile so that we do not have to decompile the server, saves - d9d0a46 Cleaned up some tabs - 2fac644 Change usage of ZipFile, fixes issues with Mac's default instation of py - -Build 1.4.5-6.4.0.393: - LexManos: Fix TE Issue - -Build 1.4.5-6.4.0.390: - LexManos: Removed GnuWin32 programs, should no longer be needed as we've moved to python. - LexManos: Updated to MC 1.4.5b - -Build 1.4.5-6.4.0.388: - Christian: Stupid eclipse resetting preferences. Spaces, not tabs!!! - Christian: - Update FML: 570592b - 570592b Attempt to fix a possible comodification risk - -Build 1.4.5-6.4.0.387: - Christian: Add in events when forcing and unforcing chunks. Hope this works for you ChickenBones! - -Build 1.4.5-6.4.0.386: - Christian: - Update FML: fde9414 - fde9414 Change texturebinding to use the textureId directly rather than iconInde - -Build 1.4.5-6.4.0.385: - LexManos: Fixed issue with default implementation of Beach plant type check - LexManos: Fixed custom soil checks for NetherStalk and Reeds - -Build 1.4.5-6.4.0.384: - LexManos: Release script will now include the Minecraft version in the arcive names. - -Build 6.4.0.383: - Christian: - Update FML: f348496 - f348496 Fix mod display list. Shouldn't be derpy anymore. - a5c31b5 Fix World patch- workaround no longer required and leftovers are bad. - 2dc3f0d Cleaned up the AT config updater, should work for any setup of the MCP w - -Build 6.4.0.382: - LexManos: Fixed beds not working properly when respawning. - -Build 6.4.0.381: - Christian: - Remove EntityFX patch - moved to FML. Patch SuspiciousClasses to add "forge" - - Update FML: fa56701 - fa56701 Fix MC-2497 - derpy torch flames. Moved from forge. Everyone should benefit. - 96935bb Fix an NPE in TileEntity trying to generate a crash report. Make suspicious classes just return the obvious. Fix NPE for FML crash report on server. Clean up dead pa - -Build 6.4.0.380: - Christian: Fix the derpy torch flames properly. Closes MC-2497 properly ;) - -Build 6.4.0.379: - Christian: - Update to MC 1.4.5 - Update FML: 43d3042 - 43d3042 Clean up a patch - fec221f Update FML for MC 1.4.5 - b0f0635 Fix for ModLoader static overrides not displaying. - 23a2513 Fix up derpy file name handling: closes #127 Fix up duping childmods: cl - a6eaa2b Fix spelling issue. - c6a0741 FML setup should now download and verify all the minecraft files needed - 5a1930e Small fix to some MCP metadata for pre2 - 418deba Update to MC 1.4.4 - 4ff2cff Fix bug when a modloader mod is run on a dedicated server and has a conn - -Build 6.3.0.378: - Christian: - Some liquid events. Non-API breaking. Add them at your leisure. This helps liquids know - what's happening to them. In case they're volatile or something ;) - -Build 6.3.0.377: - Christian: Another difference - -Build 6.3.0.376: - Christian: - Fix fillLiquidContainer - return null, not the empty container for - previous API compatibility - -Build 6.3.0.375: - LexManos: Update FML to fix ModLoader/addOverride functionality. - -Build 6.3.0.374: - kinglemming: - Fixed oversights in liquid registry, added functionality for instant checks as requested by CJ. - Liquid list return is now secure. - - Signed-off-by: King Lemming - Christian: Change name to LiquidContainerRegistry. Fix up missing API. This better be it now! - -Build 6.3.0.373: - kinglemming: - Liquid Manager Rewrite - slightly more memory usage, loads more efficient at runtime. - Added default Lava and Water registrations to Liquid Manager. - Removed method which relied on flawed assumption that a given liquid only had a single type of container. - - Signed-off-by: King Lemming - Christian: Rename some liquid stuff for more sensible naming. Tweak API slightly. - -Build 6.3.0.372: - Christian: - Add in the basic IBlockLiquid interface. The actual block implementation - will follow. - -Build 6.3.0.371: - Christian: - Add an ItemStack sensitive version of getIconForRenderPass, defers to - existing by default. Should allow NBT data to affect multipass icon rendering. - -Build 6.3.0.370: - Christian: Change getLeft to getRotation, around any axis. - -Build 6.3.0.369: - Christian: Some new stuff on the liquid API for better RP2 interaction. Coming soon: blocks! - -Build 6.3.0.367: - Christian: Tweak liquidcontainer API for sidedness capability - -Build 6.3.0.366: - LexManos: Updated FML, Fixed spelling issues in logs, and file name issues. - LexManos: Added saplings and leaves to the ore dict. PR: #242 - LexManos: Mods can use custom textures for Slot background overlay, instead of only items.png PR #245 and #246 - LexManos: Fix issue where players would spawn in the ground. - LexManos: Allow for modders to decide whether or not players are positioned on ridingEntities similarly to pigs PR #244 - LexManos: Fix breaking despite cancel in creative mode for PlayerInteractEvent OR #247 - -Build 6.3.0.364: - Christian: - As agreed, liquid API from BuildCraft has been migrated to minecraft forge. There will be cleanups to follow, - including sided handling and client rendering tweaks. Stay tuned! - Tweak forgedirection for a couple of naming constants - -Build 6.3.0.363: - Christian: Add toLeft rotational data to ForgeDirection - -Build 6.3.0.362: - LexManos: New field in ForgeDirection to hold just the valid directions. And made getOrientation a bit more efficient. - -Build 6.3.0.361: - LexManos: Fix entity items rendering on the ground. - LexManos: Fix crops not droping seeds properly. - -Build 6.3.0.360: - LexManos: Update to 1.4.4 - LexManos: Bumped version number for 1.4.4 - -Build 6.2.1.358: - LexManos: Ore Dictionary Improvements, replaces vanilla recipes with OreDict recipes for some vanilla items. Thanks Covert. - -Build 6.2.1.357: - LexManos: Made Item constructor public, and made setTextureFile chainable, requires mods to recompile, but as this is for 1.4.3 i'm not concerned. - -Build 6.2.1.356: - Christian: - Temporary update for 1.4.3 - Update FML: bd2123c - bd2123c Clean up some patch fuzz - c2a603c Update joined.exc file from latest conf - db12af4 Update to 1.4.3 - LexManos: - Readdaed teleporter sensitive versions of the teleport function - Added per-world list of custom teleporters, Modders, use World.Load to populate this list. - Changed the definition of our version schemes. - -Build 6.0.1.355: - Christian: - Update FML: 8356fe9 - 8356fe9 FUUUUUU! Stupid ticking. STOP REGISTERING TICK HANDLERS IN YOUR CONSTRUC - 6edce8b Patch a file handle leak in RegionFileCache handling when under memory p - ca2bbe0 Update MCP mapings again, yay bad syncs. - c8941a7 Updated MCP mapings. - 5e20c03 StartServer is now useable in merged code base. - -Build 6.0.1.354: - LexManos: Update FML: Updated MCP mapings, and fixed StartServer - -Build 6.0.1.353: - Christian: - Update FML: b19e882 - b19e882 Remove some debug, closes #123 - 9d7d32a Fix up tick management outside of mod loading phases for ModLoader mods. - d512539 Negatively cache failed class lookups, should help with @SideOnly performance issues. - -Build 6.0.1.351: - Christian: - This update fixes some world corrupting vanilla error handling, mostly caused by - mods doing something derpy. Hopefully, your world saves will thank me. - Note that if the mod does derp, it's data is lost. It's not FML or Minecraft Forge's - responsibility if "DirtChest 2000 Mk5" can't write their TileEntity method correctly - and you lose your 100000 diamonds. - - Update FML: a3a93f3 - a3a93f3 Fix some whitespace issues, handle possibly bugged entities as well - a7eb5dc Vanilla/mod bug fixes: CME on entity processing, TileEntity resetting chunk on save/load. - -Build 6.0.1.350: - LexManos: Fix cast issue when mods attempt to make fake worlds. - LexManos: Fix a vanilla bug related to certian seeds and stronholds. - LexManos: Cleanup some debug in the script, and fix version number for the current build. - -Build 6.0.1.349: - LexManos: Change logs should now be bundled with downloads, as well as avalible on files.minecraftforge.net - -Build 6.0.1.348: - Christian: - Update FML:b23081d - b23081d Support for ModLoader 1.4.2. Good job Risu! - 66db4ec Add in an exclusion list tag for @Mod. The backend code isn't yet implemented, but shows the basic idea. - -Build 6.0.1.345: - LexManos: EntityLiving.experianceValue private->public for Issue #225 - LexManos: Changeable name tag render distance for PR: 174 - LexManos: Remove some debug code - LexManos: New hook to allow items to be on multiple creative tabs PR 176 - LexManos: Fix issue where scroll bar would not render when switching tab pages. - LexManos: Added metadata sensitve experience to furnace recipies and added Item callback to determine experience gain. - LexManos: Exposed functions for adding superflat presets. - LexManos: New hook to allow for custom beacon support blocks. - CovertJaguar: - Added vanilla wood + dye to the Ore Dict - - Should help simplify interaction between mods that add similar items. - LexManos: Added Stonghold, Village, and Spawn biome management helpers for PR 207 - LexManos: Fix compile issue. - -Build 6.0.1.343: - csendek: Add event to cancel or change chat messages sent from server - csendek: Add event to cancel or change chat messages sent from server - -Build 6.0.1.342: - LexManos: Pickblock will new compare NBT data, should allow mods to refine there result better. - LexManos: Added system to place all configs that use Forge's Configuration function into a single file on disc. Optional config to enable this. Blame MattaBase for this idea.. - -Build 6.0.1.341: - LexManos: Fix ItemSeed placement to take into account the IPlantable interface. - -Build 6.0.1.339: - LexManos: Added a per-world MapStorage feature that provides a method to store data files associated with a specific world, as well as fixes the issue with villagers loosing there village. {Where villagers wouldn't go inside at night} - -Build 6.0.1.338: - pahimar: Update patches/common/net/minecraft/src/SlotCrafting.java.patch - Christian: - Fix the accessor and type on World.getPersistentChunksFor() - Update FML: 8bd98c3 - 8bd98c3 Fix a small problem with the new MCP container- it can cause NPEs. Nice. - 34cc42d Fix up some javadoc complaints - -Build 6.0.1.337: - Christian: - MCP information is now included in Minecraft Forge. They deserve the credit :) - - Update FML: 09eade4 - 09eade4 Update build - include MCP information in the source pack - 9bfe7df MCP deserves lots of credit. So here it is. - -Build 6.0.1.332: - Christian: - Update FML: 8006b77 - 8006b77 Fix instantiation bug - 7cc91cf Simple InterMod comms. Send a message using FMLInterModComms.sendMessage(). Receive messages through an @IMCCallback - 24d7285 Update for MC 1.4.2 - cedf3d5 Duplicate Mod display screen. - -Build 6.0.1.331: - LexManos: Downgrade to FML 415, issue with new IMC system. - -Build 6.0.1.330: - LexManos: Update to 1.4.2, obf stayed the same, so only small revision. - -Build 6.0.0.329: - LexManos: Update World patch to fix map provider issue. - -Build 6.0.0.328: - Christian: - Add an access transform for Block.setBlockBounds - should help a lot of code that uses this. - - Update FML: d915f39 - d915f39 Fix typo in access transformer - 346691c Fix the merge for forge - 6dadc1d Fix up references to minecraftDir in obf code - 8a55f68 Update FML for Minecraft 1.4.1 - 5645fa5 First update to 1.4.1, patches need updating. - ff0f00f Add some null checks, and throw descriptive exception when SideTransformer prevents a class from loading. - -Build 6.0.0.327: - LexManos: Update to MC 1.4.1 and Forge 6.0.0 - -Build 5.0.0.326: - LexManos: Fix color issues with Dyed Leather armor. - -Build 5.0.0.325: - LexManos: Remove deprecated code. - LexManos: Cleanup mirrored things in ShapedOreRecipe to address issue 208 and issue 210 - LexManos: Fix up the setHandeled/setHandled for events, it is now a generalized setResult, the meaning of which is defined by each event. - -Build 5.0.0.324: - LexManos: Fix NPE issue when mods add null EntityFX's to be rendererd. - -Build 5.0.0.323: - Christian: - Update FML: 7a34246 - 7a34246 Ship a client only class so the merge works both sides. - -Build 5.0.0.322: - Christian: Fix install.py so it can be installed properly from src distribution - -Build 5.0.0.321: - Christian: - Update FML (entire change log since last by me): 62a6b52 - 62a6b52 Fix RenderRegistry render ID - now at 36 Fix SpriteMaps - they're running out fast! Switch to forge if you can! RenderBiped now has an armo - b845cde Fix up FML python script for forge - 2c36dfb Update to MCP pre 3. Fixes some weirdnesses with explosions. - acd880d Merge branch '1.4' - e6f57e5 Update for MCP release - b1de0fc Remove fuzz from patches for INetworkManager change - ad44619 Fix for new names INetworkManager and ITexturePack. I also provide refactoring scripts for both, for your use... - 3a94211 Add a script to ignore git complaining about the eclipse workspace changing - run when you first open the eclipse workspace - 9386e23 Update gitignore - ignore the files that will change or be deleted - 10b318c Add in "starter" image for eclipse workspace - 995d5b7 Eclipse workspace fixup 2? - bbb12c8 Clean up eclipse workspace- part 1 - b50058e Clean up a bit of patch fuzz - 4a0bfa9 Fix CommonHandler for rename of the server thread class - 4d1ec66 Update with RC2 MCP. Use the joined.exc file directly since MCP now provides it. - b52e3d0 Fix exception for CodecMus - a1011c9 Fix some compilation issues. Requires resolving the worldclient abstract method - 0ebd4f3 Inital patch update to 1.4 - 89c68c4 Moved into EntityVillager - e4702cb Fix line ending detection during checkout. - 6e64fd7 We don't need logging here... - 014b3f4 remove useless -Server projects - 7628c67 Updated the AT config and Marker config for 1.4 obf - 54a322c Updae build to copy files that may decompile differently but are actually the same, and updated for 1.4 values. - aadf396 Update MCP Merge config. - 81e1855 Pull in MCP's 1.4 conf files. - 5686fd4 Fix error in merging of exec's - -Build 5.0.0.320: - LexManos: FML Update for 1.4 - LexManos: Fix recompile call for 1.4 MCP change - LexManos: Update Forge's AT for 1.4 names. - LexManos: Update for new names in 1.4 - LexManos: Remove final from 'villageCollectionObj' to allow for delayed setup of Map source objects. - LexManos: Moved to common where it should be - LexManos: No longer needed, getRenderDistance removed because Vanilla has it now, TileEntity.func_82115_m - LexManos: Forge spawn protection removed, now a vanilla feature. - LexManos: Patches that applied with little to no functional changes. - LexManos: Updated Render patches, Bipeds now have the ability to have helmets, of either blocks, or the new 'heads' - LexManos: BlockSnow now pretty much just passes harvestBlock to it's super. - LexManos: Entities have a new function to determine explosion strength that they create, and implemented Item frame pickblock. - LexManos: Patches removing forge spawn protection, now a vanilla feature. - LexManos: BlockCrops is now the parent class of multiple types of crops, Wheat, Potatoes, and Carrots, updated getBlockDropped patch to reflect. - LexManos: Removed Forge's TileEntity.getRenderDistance, now a vanilla feature: TileEntity.func_82115_m - LexManos: Teleporting has a new function (func_82448_a), made it so that you can supply your own teleporter to that function, and so it works with dimension movement factors. - LexManos: Updated World patch, there are a lot of new things happening int he constructor, xcomp should probably vet this. - LexManos: Updated Forge version to 5.0.0, for 1.4 - LexManos: Update release script for mcp changes, releases now build. - -Build 4.3.5.318: - LexManos: Remove some test code. - LexManos: Bump version to 4.3, final for 1.3.2 - -Build 4.2.5.317: - LexManos: Added ability for mods to cleanly define and display new creative tabs. - -Build 4.2.5.316: - Christian: Fix classloading issue preventing JRockit from running forge - -Build 4.2.5.315: - Christian: - Forge build change: the universal jar, if installed alongside a server jar file, can be executed to load forge. No server side merging required! - Update FML: 989ab3e - 989ab3e Update build.xml - add a classpath to the manifest. This means the universal jar is now a server side launche - 88f1dc9 Typos! - -Build 4.2.5.314: - Christian: - Update FML: 470a185 - 470a185 Try and avoid an NPE in crash reports - 0029518 Fix logging problems- log death messages and re-route the server through FML logs properly. - fe7a832 Fix the test mod - a2bc30b Coremods can be specified via the command line: fml.coreMod.load= This will help with developing coremods - bae1f74 Fix classpath for server - 887aa27 Add in the ability for a client to throw a custom exception that displays a custom gui instead of the default error message. - e17f267 Update FML internal classpath. Helpful for coremod devs - 3b9972a Don't use File to separate the last element of the path. It's a URL, they're always separated by '/' - 5c96afe Changed RelauchLibraryManager so that files with different paths on the same baseURL can be implemented in one ILibrarySet. - 1bca393 FML as a whole is now subject to transformers. - 27cf731 Bonus extra character. thanks randomitter! - 94c84cd Merge pull request #116 from Vazkii/patch-1 - c2d3195 Add Null check to FMLClientHandler.sendPacket - -Build 4.2.5.313: - LexManos: Make Item.createEntity only call when its specifically a EntityItem, not a subclass of it. - -Build 4.2.5.312: - LexManos: New Block hook to determine if it can be destroied by the ender dragon, for PR 199 - LexManos: Ship forgeversion.properties with release zips. Same format as fmlversion.properties. - LexManos: Dll files are binary as well. - -Build 4.2.5.311: - LexManos: Fill out the .gitattributes to help with line endings how they should be. - LexManos: Change the Crafting damage check to be the same as the usage damage check. (>= -> >) - LexManos: Allow hook into GuiSlot for background rendering for PR #203 - -Build 4.2.5.310: - Christian: Reorganize the forced chunks a bit- offload the cost of immutable map building to the mods, rather than the chunk tick - -Build 4.2.5.307: - Christian: Remove @SideOnly from removePotionEffect. Hi RichardG! - -Build 4.2.5.306: - LexManos: Add some accessors to teh ChunkLoader tickets. - -Build 4.2.5.305: - ohai.iChun: Fix not passing right render pass to Item class. - -Build 4.2.5.303: - Christian: Fix bounds checking on chunkcache. Should fix a bunch of rp2 and maybe other extended tile entity code - -Build 4.2.5.302: - Christian: - Use weak references to the worlds in our maps. WorldClient would otherwise - leak all over the show. - -Build 4.2.5.299: - mehvids: Add some of the model subsystem to the server. The part that doesn't require openGL. This allows for systems that dual models as collision/selection boxes etc. - xcompwiz: - Improves DimensionManager - - Adds handling for unloading and hotloading of worlds, fixes some typos, - allows for dimensions to be unregistered (allowing save specific - dimension registrations), general changes to match these features. - xcompwiz: - Adds world unloading and hotloading calls - - Adds world unloaded message to MinecraftServer on save. - Adds world unloading calls to chunk provider/manager when all chunks are - unloaded. - Adds call in MinecraftServer getWorld to hotload world if it isn't - loaded. - xcompwiz: - MapStorage Fix - - Fixes setting and timing of map storage object to allow for the - WorldProvider to use it during initialization - Forces single instance of map storage object (per side) - Moves setting of spawn to after provider setup - xcompwiz: - Lighting Time fix - - score_under's lighting fix that limits and fairly distributes the amount - of time spent on recalculating lighting - xcompwiz: - Server player concurrency fix - - Fixes an issue where the server can move a player while the player is - moving, process the player's last move (putting the player back where - they were before the teleport), and then complain about the player - moving too fast when the client catches up to it's new position. Also - fixes this issue while riding an entity. Only affects player - client/server movement sync. - Christian: - Remove dead WorldInfo patch. Tweak dimension code a bit for better naming, and use the new FML world loading facilities - Update FML: d0e7c9e - d0e7c9e Update patches *sigh* - f3e1cac Add in a savehandler strategy for reading and writing data to the world save. This service is only available to coremods via the WorldAccessConta - 51fb513 Add in some bukkit supporting code. Most of this is unimplemented until the bukkit coremod is complete. - 65c9fdd New stuff on the ModLoader! Risu has been busy. Closes #114 - c1d4458 Mods can now declare a range of minecraft versions they will run against - Christian: Update forge to 4.2 - -Build 4.1.4.298: - LexManos: Fix issue where light would not properly recalculate. - LexManos: Fix issue where mushrooms would not check the proper soil block. - -Build 4.1.4.297: - LexManos: Expanded DungeonHooks to allow for adding of custom DungeonLoot values directly, allowing for better control over the generated items. - -Build 4.1.4.296: - LexManos: Made PlayerEvent.BreakSpeed fire when a player cannot harvest the block. Issues #191 and #188 - -Build 4.1.4.295: - Christian: Dormant chunk cache might actually work now, and not mix chunks across worlds - Christian: - Update FML: ca1ca4f - ca1ca4f Fix maps supporting greater than byte() dimension sizing - 15ee8bf Fix language registry additions, closes #113 - a08b5b1 Merge pull request #112 from pahimar/master - 8dac58f Added ability to query the Language Registry by key and language for specific localized text, as well as loading in localization text f - -Build 4.1.4.294: - LexManos: Fix buckets, need to rethink for bukkit compatibility. - LexManos: Fix vanilla bug where the player would load chunks outside its range that would be 'abandoned' and never unloaded. - LexManos: Forgot comment, you see nothing... - -Build 4.1.4.292: - Christian: - A few requested features of ForgeChunkManager. Mods can specify a - chunkloading config directly in the config file, including chunk - loading overrides if they wish (and the config allows them). - Also added "player" tied tickets that bind to the player and not the - mod's quota. - -Build 4.1.4.291: - LexManos: Missing updates from last commit - LexManos: Location aware version og Block.lightOpacity for PR #169 - -Build 4.1.4.290: - LexManos: Fix bug in last commit that caused block to not break. - LexManos: Added preliminarty Player Interact event heavily based on the bukkit event. - -Build 4.1.4.289: - LexManos: Add PlayerEvent.HarvestCheck and PlayerEvent.BreakSpeed for dealing with things related to a player harvesting a block. - -Build 4.1.4.288: - LexManos: Fix bug where breaking texture would not apply to top/bottom of beds. - -Build 4.1.4.287: - Christian: Add in an "EntityEvent.EnteringChunk" event. Useful for your entity chunkloading stuff. - -Build 4.1.4.286: - LexManos: Support for no BOM. - -Build 4.1.4.285: - Christian: - Update FML: f083707 - f083707 Extreme headless mode is back! - -Build 4.1.4.284: - Christian: - Update FML: dd39ae5 - dd7502a Fix parent child counts showing properly. Closes #107 thanks scott! - b36d447 It's useMetadata, not usesMetadata. thanks myrathi and psx. closes #110 - efb1066 Fix random shuffling when manipulating biomes by using a LinkedHashSet to preserve iteration order. Closes #111 - Christian: - Some more tweaks to the chunkloading code. The world.load event fires slightly later- once the entity watcher is - set up, so entities can actually load into the server world. Also, tickets actually save and load properly - and null entities don't break the server - -Build 4.1.4.282: - LexManos: > != >= - -Build 4.1.4.281: - LexManos: Fix Configuration.getItem to return pre-shifted values suitible to pass into Item constructors. - -Build 4.1.4.280: - LexManos: Fire off PlayerDestroyItemEvent for crafting contianer items that get damaged to much. PR #183 - -Build 4.1.4.279: - LexManos: Configuration will now attempt to detect the encoding of the file using the Byte Order Mark. - LexManos: - Changed Configuration to use overloaded methods, and changed the order of arguments to be Category, Key, Value instead of Key, Category, Value to hopefully help cleanup some peopels code. - Added function to get a free Item id. Will only accept values that are not in the block space. Needs testing. - Marked all the old getOrCreate* functions as deprecated. - -Build 4.1.4.278: - Christian: Fix some errors if the config is unparseable. It should log an exception and carry on with defaults. - Christian: Support quoting in property and category names for almost all possible characters allowed - Christian: Fix up some config file handling to be even more resilient. - -Build 4.1.4.277: - Christian: - More modifications to the ticket callback handling system. There are up to two callbacks during world loading now. One to allow - selective preference for ticket types. The other to actually allow the mod to force chunks. - -Build 4.1.4.276: - Christian: - Update FML: dd39ae5 - dd39ae5 Try and fix the newline capture so consoles show on the server on windows again - b39f808 Readd ancient searge name so dan200 and computercraft can run again. REMOVE THAT CODE DAN. - Christian: - Some changes to the ForgeChunkManager. - Null modData is allowed now. - The entity id is actually properly persisted in the ticket now. - There is a new "orderedLoadingCallback" that allows you to provide a preferred ticket loading order in case of "excess tickets". Also, tickets - that are not in the returned list are now unregistered. - There is a way to resort the chunks in the forced chunklist on a ticket now. - Log the dormant cache configuration - -Build 4.1.4.275: - Christian: Simple chunkloading implementation - Christian: Working cross dimensional implementation of chunkloading for Forge. - Christian: - A lot of tweaks to the chunkloading for entity behaviour. Entities are now bound by a new - persistent id they *all* have, on the server side. - Christian: Remove @SideOnly flag for function now required on the server - Christian: Fix NPE in ForgeChunkManager - Christian: And a concurrentmodificationexception in the same code - Christian: - Simple chunk caching capability for the chunkloader. This will store "dormant" chunks in a - configurable cache, potentially saving the cost of reloading them from disk. - Christian: Delete some debug code - Christian: Some more fixes for chunkloading code. Works very reliably now. - Christian: - Update FML: a2c059e - a2c059e Fix missing import. Thanks ichun :( - 19316a0 Version file searching should work for directories too - fbc7a5c Fix bug causing NPE if non-whitelisted player joins an FML server without FML installed - e9cfd10 Merge pull request #103 from iChun/patch-2 - 1424883 Fixed ModTextureAnimation not updating and not binding to correct image. - -Build 4.1.4.274: - mitchpetrie29: - Update patches/common/net/minecraft/src/WorldProvider.java.patch - - Fixed WorldProvider.setDimension() setting the wrong variable. - LexManos: Fix patch errors in merge of last PR -.- - -Build 4.1.4.272: - LexManos: Fix accedental doubling of shift, Fixes saplings/flowers planting a space above where they should - -Build 4.1.4.271: - LexManos: New Plant API that allows for custom plants/soils. - -Build 4.1.3.270: - LexManos: Added new hooks for modifying the items generated in chests during world gen. - -Build 4.1.2.269: - LexManos: Redirect a lot of functions through WorldProvider for Mystcraft, allowing them to be overriden by the provider. - -Build 4.1.2.268: - CovertJaguar: Fixed Entity Item render helper - -Build 4.1.2.267: - ohai.iChun: Fix pick block key giving invalid spawn eggs - ohai.iChun: Logic derped - ohai.iChun: Logic derp (again) - -Build 4.1.2.266: - LexManos: Added side sensitivity to standard EntityDiggingFX, added Block functions to override spawning of digging and breaking effects. - -Build 4.1.2.265: - LexManos: Fix potential NPE in Custom item entity span code caused by item id misconfigurations. - -Build 4.1.2.264: - LexManos: Fix recursion issue with new special item entity code. - -Build 4.1.2.263: - Christian: - Update FML: 6c746ec - 6c746ec Tidy code - aacbfeb Change version.properties search slightly, allow access to found file from the preinit event - 1513b36 Add in the capability to read an internal version as .version from a file in the zip call versi - 35852a6 Fix up reversed assignment for version fallback - -Build 4.1.2.261: - pahimar: Changes to how PotionEffects are removed, now each PotionEffect can specify which ItemStacks can remove it's effect - pahimar: Inverted logic derp - -Build 4.1.2.260: - LexManos: Package all of paulscode/ with the universal jar to help mac users who cant understand how to merge folders -.- - -Build 4.1.2.259: - LexManos: Bump version to 4.1.2 to mark the end of todays changes. - -Build 4.1.1.258: - LexManos: Fix potential issue with custom events where the constructor is not visible from the EventBus class, Should never arise but meh. - LexManos: Read/Write config files as UTF-8 instead of ANSII, should fix issue with Turkish people. - LexManos: Allow for respawning in different dimensions. - LexManos: Move spawn fuzz to WorldProvider/WorldType, useful for VoidWorld types. - -Build 4.1.1.257: - LexManos: Make EntityJoinWorldEvent Cancelable properly - LexManos: Move Forge init message to MinecraftForge.initalize - LexManos: Add ability for Items to create custom Entities for themselves when added to the world, PR: #151 - -Build 4.1.1.256: - admin: Allow flight,player sensitive - -Build 4.1.1.255: - LexManos: Fix a few patch fuzzes - LexManos: Implemented isBlockFoliage for pull #141 - -Build 4.1.1.254: - LexManos: Clean up some javadoc warnings. - LexManos: - New EntityItem related events - Fixed player death event in SMP - Added Player specific drops event - Added generic EntityJoinWorldEvent - -Build 4.1.1.253: - LexManos: Fix FillBucketEvent to work with stacked buckets. New change in 1.3 - LexManos: EntityLiving variation of drawBlockDamageTexture to allow for Non-player viewports. - -Build 4.1.1.252: - Christian: Remove all references to ModLoader - Christian: - Update FML: 89b8236 - 89b8236 Fix onConnectionClosed not being called on the client side of a connection - -Build 4.1.1.251: - LexManos: Bump version to 4.1.1 - -Build 4.0.0.250: - Christian: - Update FML: 290a3c9 - 290a3c9 Merge pull request #94 from iChun/patch-1 - 9485dc5 Fix handleTinyPacket using short instead of int. - Christian: - Update FML: 70f55c5 - 70f55c5 Add in exclusion list for IFMLLoadingPlugin. - 1c1716d Remove debug cruft - d567f79 To properly align with packet9respawn, make packet1login's dimension an int as well - ecd4e46 Attempt to build some protocol negotiation, and fix packet1login so that the dimension is a short, matching packet9respawn - 16fe495 Compatibility level is now passed from server to client - and the client tracks it. This means certain packet changes can be made without b - 4f70d23 Fix dependency checking: you can depend on specific versions of FML - -Build 4.0.0.249: - Christian: - Update FML: e6abb69 - e6abb69 Fix up tiny packet handler to actually work - e862052 Allow javax to be shipped by mods. Should allow some more modloader mods to work unaltered - 4071ad1 Add in a little bit of protocol cleanup. Start work on allowing multiple protocol versions - 6061964 Give a way to build the packet131mapdata packet correctly populated - b818769 Capture and leverage Packet131MapData - -Build 4.0.0.248: - LexManos: Fix placing torches and the like on inverted woden slabs. - -Build 4.0.0.247: - Christian: - Update FML: 12bc4ba - 12bc4ba Make console logging pass through a single logging thread to avoid concurrency problems with launchers and stuff - 8fccfa2 Overlooked chat message support *sigh*. Fixes wierd mods that communicate through custom chat messages rather than - a697d04 Rescan mod packages where there was a possible mod identified to try and make sure we load it. Fixes Matmos r16 - -Build 4.0.0.246: - Christian: - Update FML: 9d812f1 - 9d812f1 And handle the other way to globally register an entity - 869cf78 Fix up mods trying to register entities outside of modloading. Now you'll get a big fat warning for doing such a de - 186680c Fix CJB mod compatibilty for real. Gui container registration can now happen in the constructor. YUK! - 5aed6d9 Fix compatibility with ModLoader dispenser hook. Fixes a bug with IDispenseHandler too - though it means that inter - 3d7a665 Fix headless operation, hopefully - -Build 4.0.0.245: - Christian: - Update FML: 10a7169 - - 10a7169 Fix up trying to re-add stuff to the classpath when it's already there - 0eb7180 Fix out of range entity id handling for ModLoader mods a bit more. Thanks Herobrine mod! - b1b4c61 Expose GuiMerchantButton - 359cfb5 Log a big fat warning for the developer in the case the network version is not acceptable to the mod itself. (This can happen because of a bad range specifier for example) - -Build 4.0.0.243: - Christian: - Update FML: 8656fd5 - 8656fd5 Also, make missing entity not blow things up - 25a4dcb Fix entity tracker "update" packet not computing correctly. Should work now.. - -Build 4.0.0.242: - Christian: - Update FML: c90a853 - c90a853 Fix up addRenderer to catch exceptions from the basemod, also, addrenderer now supplies a list of the default renderers from MC for editing and will note the - 18069d8 Change download location for FML libraries to files.minecraftforge.net, add an encoding param to the javac command line to force utf 8 - a40f4a7 Add in random jar/zip files to the classpath. UGH this is so fucking ugly it's not funny. - 5b6460b Use a null socket and try to prefer the result of getLocalHost in the broadcast data. - -Build 4.0.0.240: - Christian: - Update FML: c0d1348 - c0d1348 Add in an ItemRenderer null check so FML can run render adding mods - 482c163 Inverted boolean logic. Grrr. - 221d113 ModLoader mob spawns use packet 24- build a bypass system so that they can still use it - f19f426 Remove debug statements - -Build 4.0.0.239: - Christian: - Update FML: 9dd9b6e - 9dd9b6e Fix keybindings not loading properly from gamesettings file after restart - -Build 4.0.0.238: - LexManos: Fix silk touch on Ender Chests. - -Build 4.0.0.237: - t.tomkins: - Update patches/common/net/minecraft/src/NetServerHandler.java.patch - - Update patches/common/net/minecraft/src/NetServerHandler.java.patch - - Server mods can now use noClip to push players through solid blocks without is being an invalid move and resetting the players position. - - Useful for creating semi-solid blocks like quicksand. - -Build 4.0.0.236: - LexManos: Fix Issue #140: Custom items not properly having texture applied for partical effects. - -Build 4.0.0.235: - Christian: - Update FML: acb0b21 - acb0b21 Fix so we always send received packets to handlers. Renders 250 filtering useless unless i can figure a way to intercept - -Build 4.0.0.234: - Christian: - Update FML: b17dd3c - b17dd3c Some tests - fa66ffa Fix trying to load the client side packet handler, when on the server, hopefully? - b106420 Fix up network negotiation - now it will disconnect with a nice error screen if there are missing mods on the client vs se - -Build 4.0.0.233: - Christian: - Update FML: c971adb - c971adb Fix missing addCommand call: thanks "spawnwolf test command" - d6326de Fix a couple of modloader mods. Thanks! - 483667c Some functionality fixes for @Instance injection. - 8bef512 Versions now have two flavours: the @Mod(version) which is the "programmatic version" and is used for all version relationship calculatio - 501009c Always for ML mods into "public" class accessibility - we don't call from the default package like ML does. - d3d4308 Add in a convenience method for getting a class instance based on existence of another Mod. Useful for soft dependencies. - -Build 4.0.0.232: - Christian: - Update FML: 2d9b88b - 2d9b88b And more mod sorting fixes. - 93d5934 Actually *use* the sorted mod list - -Build 4.0.0.231: - LexManos: Fix FillBucketEvent to actually fire. - -Build 4.0.0.230: - LexManos: Fix call to createTileEntity on blocks that extend BlockContainer. - -Build 4.0.0.229: - Christian: - Update FML: 180a279 - 180a279 Merge pull request #82 from Chicken-Bones/master - cf38461 The access transformer will now handle classes in packages. - 2c85539 Reverse the meaning of state in fml.modStates system property and fmlModState.properties - it was very derpy before. Now: true is enabled, false is disabled, as you would expect - d651189 Actually fix the corrupt JSON problem - f6a8cd5 Fix isModLoaded for "disabled" mods, and the toposort as well - 3bde961 A bit more information for dependency handling - 6396bea Fix up handing corrupt mcmod.info - 6bc6def Fix a problem with network ids - 7328610 Fix up version handling properly. Hopefully, and the error screen. - 9fcc452 Only active mods should have dependencies checked, and be sorted - 26302a6 Fix oddity with Screen, print a version out in the sorted list! - -Build 4.0.0.228: - Christian: - Update FML: 62dbfb3 - 62dbfb3 Fix metadata - -Build 4.0.0.227: - Christian: - Update FML: b91cbe9 - b91cbe9 Fix up versioned dependencies so they work a lot better, also add in a missing mods screen - -Build 4.0.0.226: - Christian: - Update FML: 93b8ba9 - 93b8ba9 Fix missing serverSendPacket - 23fdbbd Trading support for ModLoader - thanks Herblore! - d7a74d8 Close the jar, for cleanliness sake - 58e6dd9 Fix authors - it'll read both "authors" and "authorList" from the json now - 907cf2d More ML compatibility - fix up dragon mounts, thanks! - ee48a36 Fix up loading mods that are grandchildren of BaseMod - c6f362b Fix entity handling for ModLoader mods, thanks parachute mod! - -Build 4.0.0.225: - LexManos: Fix lighting issue for air related to 4096 fix. - -Build 4.0.0.224: - LexManos: Made helper hooks for EntityLiving and EntityRenderer hooks for Optifine - LexManos: Removed deprecated ISpawnHandler, that never worked in 1.3.2 so noone should be using it. See FML's replacement. - -Build 4.0.0.223: - Christian: - Update FML: 6e01c59 - 6e01c59 Merge ChickenBones pull into FML - adds player trackers - a0cbd37 More precise error handling when an invalid class is present - 12323e2 Fix textures not applying properly - 789a4a3 Fix up entity spawning - hopefully they won't warp anymore. - a87d045 Add in a helper on the server start event for adding commands to the server. - 82e9309 Move villager trading hook up a bit. thanks sengir. - 8deaa37 Fix LAN to try hard to find a real network interface, not just localhost most of the time - b5363e3 Update build to not bother building client jar. Universal is everything now. - -Build 4.0.0.222: - LexManos: Pickblock now replaces the currently selected item if it could not find a empty space. - -Build 4.0.0.221: - dvrabel: - Use original minecart drag co-efficients for regular carts. - - Since the amount of speed lost is 1 - co-eff, rounding 0.997 to 0.99 - makes a big difference to the distance a minecart will travel (less - than half of the distance in vanilla 1.25). - -Build 4.0.0.220: - LexManos: - Update FML to 304: - Client side only classes are properly annotated, and denied loading on server side - Added missing client side only ModLoader.getContainerGUI function - Guis work for FML mods now. - Fixed MLProp handeling of null info - Fix up dispenser handling, add in new params for the dispenser: breaks IDispenseHandler, sorry - Christian: - Update FML: 28a10ac - 28a10ac Null protection for ticks() -- probably should uses EnumSet.noneOf() but you can also use null now to stop ticking. closes #77 - c349d51 Automatic mod entity registration into the global entity list. This might break entity code out there, sorry, but this way for most entities you no longer need to manage the global mod entity stuff at all. just remove it. FML will take care of the rest (note, worlds won't load the old entities) - ef01745 Add in a utility function that *might* tell you the context you're running in on either client or server: FMLCommonHandler.getEffectiveSide - c97d6a6 Try and stop sendPacketToAllAround from being crashy - 2062273 Mods can add mod specific crash information to the crash report now Forge needs to implement MinecraftForge.getCrashCallable - 6e6436e Fix up dispenser handling, add in new params for the dispenser: breaks IDispenseHandler, sorry - 38f4a22 Fix up MLProp handling for null info - 3a8b047 GUIs working in FML for ML mods - 52483ee Support gui opening for Shelf mod - dce1cbc Updated MCPMerger to annotate unique classes with there sides, and SideTransformer to null out any class that is loaded on the wrong side. - -Build 4.0.0.217: - LexManos: Updated onItemUseFirst call to include the new hit vector information, and updated readme. - -Build 4.0.0.216: - LexManos: Added missing server side onBlockStartBreak hook, fixes Sheers. - -Build 4.0.0.215: - LexManos: Fixed Forge's 4096 block filler initalization. - -Build 4.0.0.214: - LexManos: Fix IndexOutOfBounds exception, Major derp. - -Build 4.0.0.213: - Christian: - Update FML: 46c563a - - 46c563a Expose more of the village construction parts for building village piece - 1380c2e Allow access to the type "ComponentVillage" - 71a3818 Documentation and registration for villager stuff - e3a343c Fix javadoc derp - 195b1a0 Villager trading, manipulation and village enhancement. Still WIP but sh - 69e66c3 Fix exception based logging to actually log the exception! - -Build 4.0.0.212: - Christian: - Update FML: - 885637c Fix up keyboard events for modloader - 90a7c8f Pickup notification - -Build 4.0.0.211: - LexManos: Changed order in which EntityItemPickupEvent is called, it will no longer be called if the 'delay' on the item is still active. Also EntityItems that are in the world with invalid item stacks will now kill themselves. - -Build 4.0.0.210: - mitchel.pyl: Adds a SkyProvider class that can handle the rendering of the sky - -Build 4.0.0.209: - Christian: - Move and add a few AT for forge: rail and leaves stuff mostly - Update FML (reorg some AT for FML vs forge): - 2171c0c Update fml_at with new transforms - 924a6f9 Fix derp where client sided packet handler would be created on a dedi server env - ad4cffb Add in support for "dummy" keybindings- ones that are added to the list but never do anything so the mod can handle it all themselves. - cf77ffb Don't complain about minecraft source code being in "net.minecraft.src". Derp. - b2fdcd7 Fix ModLoader add XP Smelting - 094ce2a Actually register client/server packetspecs as their correct sides! fixes #71 - -Build 4.0.0.208: - LexManos: Fix MC packet bugs for remote servers that use blocks with ids > 256 - -Build 4.0.0.207: - LexManos: Fixed bug in EntityMinecart that would cause them to fall through the ground at the bottom of slopes. - -Build 4.0.0.206: - Christian: - Update FML: - - e8cb2c1 Error if channel name is invalid - either too short, or too long - 9c6c56c Add a connect and read timeout for downloading libraries. This should really stop the "waiting forever" at startup screen. - 0d5affe GIANT FAT WARNINGS if you use any code in net.minecraft.src or any subpackage thereof. Get it out of there, now! - 13f210f Fix up ML GUI ticking. Thanks sharose! - -Build 4.0.0.205: - LexManos: Fixed EntityEvent.CanUpdate - LexManos: Fix EntityItemPickupEvent 'pop' sound spamming. - LexManos: Added timeout to MC's download of sound resouces. - LexManos: Update WorldProvider.path diff. - -Build 4.0.0.204: - Christian: - Update fml: - c61ad51 Organize ALL the imports - c0842b0 Expose the server in serverstart event - 2851079 Fix up directory injection of log file locations - 5197524 Refer to FMLLog, not FMLRelaunchLog - 78efd1a Tidy up server launch - reflection not required anymore - eee0a99 Also, log what the directory discoverer finds for mcmod.info - 10c96c3 And log the exception if it has a problem reading the jar file - 07cc3fb Fix jar loader failing to inject any metadata at all if mcmod.info is not found. - e31f143 Change install.cmd to install.bat, why, cuz people are .... Updated readme to mention needing server and client. - -Build 4.0.0.200: - LexManos: Allow white space in the property name. - Christian: - Update FML to include some ML compatibility fixes. Minimap should run, assuming he - recompiles against standard ML interfaces. - This updates to official MCP 7.2, so you'll need to rebuild your workspace (some - small but important patches to MCP went in) - -Build 4.0.0.199: - Christian: Update FML, make the .sh scripts executable - -Build 4.0.0.196: - LexManos: Update FML to 285 - -Build 4.0.0.194: - draake: Added additional sound events to allow manipulation of a sound source at its creation. - draake: Removed SoundSetListenerEvent implementation. - -Build 4.0.0.193: - LexManos: Fix potential index exception in ForgeDirection - LexManos: Whops - -Build 4.0.0.192: - LexManos: Rename Orientation to ForgeDirection {Damn MCP naming a class Direction already} - -Build 4.0.0.191: - LexManos: Update FML again for mod screen blending fix. - -Build 4.0.0.190: - LexManos: Updated Orientation with new helper functionality. - LexManos: Fix ItemBlock placement, should fix RP Deployers placing blocks 1 tile down. - LexManos: Seperated block placmenet logic in ItemBlock as immibis requested: https://github.com/MinecraftForge/MinecraftForge/pull/110 - LexManos: New Command event. - LexManos: Fix issue with default getContainerItemStack - LexManos: Add render distance property to TileEntity. - -Build 4.0.0.189: - LexManos: Updated FML, should fix the new included eclipse workspace. - -Build 4.0.0.188: - LexManos: Cleanup repo, delete old code - LexManos: Update FML to 278, MC 1.3.2 - LexManos: Cleaned up forge scripts, and updated AT config for 1.3.2, deleted any reference to server specific code. - LexManos: Updated patches to 1.3.2 - LexManos: Fixed bug in DimensionManager that would cause Index error for custom dimensions, also made WorldProviders aware of what dimension they are. - -Build 4.0.0.187: - LexManos: Readded patch to allow for use of custom teleporter for transfering dimensions. - -Build 4.0.0.186: - LexManos: Update FML with entity spawning fixes - -Build 4.0.0.185: - LexManos: Updated FML, should fix 'derp?' RuntimeError - -Build 4.0.0.184: - LexManos: Fix PickBlock 'ghost item' bug when picking with a item selected. - -Build 4.0.0.183: - LexManos: Update FML, Tons of bug fixes and proper merging of client and server. - LexManos: Delete Forge server projects - LexManos: Update debug settings to use Client's internal MinecraftServer.main to debug dedi-server env. - LexManos: Update release script to create universal binary distro. - -Build 4.0.0.182: - j.marini: Fix bug where default bonemeal behavior wouldn't trigger. Only return if the event was canceled. - -Build 4.0.0.181: - LexManos: Update FML, new AT features, and error info. - -Build 4.0.0.180: - LexManos: Fixed ItemRenderer not grabbing custom texture files properly for block items - LexManos: Updated FML - LexManos: Delete dead IGuiHandler - LexManos: Update AT config to expose some block functions and a few extras. - -Build 4.0.0.179: - LexManos: Should fix commands.py patching not working properly first run. - -Build 4.0.0.178: - LexManos: - Updated FML, Should fix a lot of installing issues for MCP. - Made patches error and not apply if the target file is not found. - Updated Event Transformer to add a default constructor... - Fixed 4096 setup code in MinecraftForge.initalize() - -Build 4.0.0.177: - LexManos: Fix issue in install script for users with spaces in there paths. - -Build 4.0.0.176: - LexManos: Update FML, server should run now. Still issue with NPE with no mods installed. - LexManos: Updated FML, fixed custom tool hooks, and spawn protection/player reach hooks. - -Build 4.0.0.173: - LexManos: Fixed Diemsnion API related NPEs, and updated FML to 231. - -Build 4.0.0.172: - LexManos: Get rid of all old patches - LexManos: Added a better eclipse workspace for deving Forge - LexManos: inital push of updated setup script and cleaned up forge.py - LexManos: Dump old mcp config - LexManos: New Start.java which allows the user to login using a legit account for testing on servers. - LexManos: Committing inital work on generating sanitized MCP conf data. - LexManos: Add the direct copied files from MCP conf - LexManos: Add newids to that list - LexManos: Helper function grab all unique searge names that are shared client and server - LexManos: Added merging fields/methods/param csv files. And updated FML to 197 - LexManos: Remove eclipse files from old eclipse projects - LexManos: Updated build.py - LexManos: Update FML - LexManos: - Moved logo to new client folder - Added blank Access Transformer config for Forge - Implemented version storage - Added basic dummy FML mod container to remove the need for mod metadata file - Added beggining work on Forge event system - Updated and moved EnumHelper - LexManos: Updated update_patches.py, and made first patch! - LexManos: Moved paulscode to new client folder - LexManos: First push of some small patches and introduction of basic events. As well as the first cases for Forge's Access Transformer - LexManos: Missed a file - LexManos: Moved in OreDictionary stuff to new system. IOreHandler is replaced by OreDictionary.OreRegisterEvent - LexManos: Renamed MinecraftForge.eventBus to EVENT_BUS as it's constant. - LexManos: Implemented BonemealEvent (IBonemealHandler replacement), and bonemeal making grass. - LexManos: Implemeneted adding grass seeds, as well as IShearable for BlockTallGrass - LexManos: More progress on converting patches from 1.2.5 - LexManos: Some more patch migration before bed. - LexManos: - More patches converted. - Refactored some of the events to be a better hiarachy. - LexManos: A bulk of more patches converted, updated fml - LexManos: Moved some files. - LexManos: More work, moved over packet stuff, need to change everything to use new NetworkMod system - LexManos: More conversions, added all the entity living events. - LexManos: Finished World and EntityMinecart patches. - LexManos: Removed a lot of old files - LexManos: Updated Client side patches for the new Merged MCP workspace. - LexManos: Nope, unneeded patch - LexManos: Cleaned up some more, fixed infinite loop with cancelable annotation, Client now compiles and enters world just fine. - LexManos: Delete conf, server compile, update fml, and fix install script. - LexManos: Copy forge files over in install. - LexManos: Update fml - LexManos: Moved over Configuration - LexManos: Fix oreientation bug causing levers not being able to place. - LexManos: Added new pick block hook for blocks and entites to allow for better grained control of the result. - LexManos: Include Forge's AT config into redist zips. - LexManos: Update fml, impelemnted Diemsnion API stuff. - LexManos: Updated FML, updated patches - -Build 3.4.9.171: - Christian: Normalize the repo - LexManos: Rebase - LexManos: Bumped version to 3.4.9, final commit for 1.2.5. - -Build 3.3.8.170: - someh4x0r: Fix BlockTrapDoor.disableValidation on server - -Build 3.3.8.164: - LexManos: Should fix NPE on older ISoundHandlers EXA: http://minecraftforge.net/forum/index.php/topic,759.html - -Build 3.3.8.163: - Christian: Update fml with recent tick fix - -Build 3.3.8.162: - truebrain: - -Add: sync serverPos[XYZ] on spawning of entity - - This fixes the issue that, up to 400 ticks from getting in range, - entities have a wrong offset (because server and client don't agree on - the position to calculate relative updates from) - truebrain: -Fix: check for null where needed - truebrain: -Codechange: applied LexManos' request - -Build 3.3.8.161: - LexManos: Fixed a improper rounding in EntityMinecart - LexManos: Made WorldGenMinable metadata sensitive. - -Build 3.3.8.160: - Christian: Update fml to 175- fixes some weird ticking behaviours for ML mods, adds in new ticking behaviours for smart mods - -Build 3.3.8.159: - LexManos: Moved licenses and credits into install folder. - LexManos: Removed symlink files, shouldn't be in the repo. - LexManos: Updated some remaining scripts to call there python versions. - -Build 3.3.8.158: - LexManos: Fix furnaces not smelting the proper number of results after the first one. Damn you tahg, fix this! Keeps falling through my cracks. - -Build 3.3.8.157: - Christian: - Fix server check "blockHasTileEntity" used to determine if getDescriptionPacket - is sent for the block to be metadata sensitive. Thanks iChun! - -Build 3.3.8.156: - Christian: Fix ghost players who appear if they don't have the 4096 fix installed - -Build 3.3.8.155: - LexManos: Fix container creative to not add Blocks above 256 unless it's told to. - -Build 3.3.8.154: - Christian: - Fix world provider behaviour: WorldProvider.byDimension should always return - a new instance- otherwise you can end up with worlds overwriting one another - -Build 3.3.8.153: - LexManos: Fixed isBlockReplaceable and placing ItemBlocks' - -Build 3.3.8.152: - LexManos: Fucking spelling nazis - -Build 3.3.8.151: - LexManos: Fix bitmask bug related to 4096 in multi-block change. - LexManos: Updated FML to build 153 - -Build 3.3.8.150: - LexManos: Fix NPE related to server/client not having block ids synced properly. - LexManos: Add option to randomize potential spawn locations to have a more randomly dispersed spawn patern, useful for games like FTB vs. - LexManos: Added configuration option to disable the darkroom mechanic. For servers who wish to not risk destruction at one broken pipe. - -Build 3.3.8.148: - LexManos: FML 150, more tick related work. - -Build 3.3.8.147: - LexManos: Close inputstream - -Build 3.3.8.146: - LexManos: More bugfixes related to portal generation. Should be all now. - -Build 3.3.8.145: - LexManos: Some 4096 I missed in custom renderers. - LexManos: Updated to FML 149, should fix all ticking issues with ModLoader mods - LexManos: Fix Vanilla bug where nether portals would not work above 127 - -Build 3.3.8.144: - LexManos: Updated to FML build #142, fixed FML compilation issue causing missing files when reobfing. - -Build 3.3.8.143: - LexManos: Updated release script to automatically inject version info into .info file. - -Build 3.3.8.142: - LexManos: Updated to FML 141, should fix ticking issues with certian mods, and crash issue with TropiCraft - -Build 3.3.8.141: - LexManos: Bumped version number for new IEntityLiving interface. - -Build 3.3.7.140: - pahimar: Typo in the new EntityLivingHandler code - -Build 3.3.7.139: - LexManos: Made setFailsafeFieldValue public for Rob - LexManos: Implemented enchanced EntityLiving events. Thanks Atomic for parts of it. - -Build 3.3.7.138: - LexManos: Few more cases for 4096, thanks TrueBrain - -Build 3.3.7.137: - LexManos: Forgot Configuration in 4096 change. - -Build 3.3.7.136: - LexManos: Configurable kick message when you don't have forge. - LexManos: Initial 4096 fix based of mDiyo's work. - -Build 3.3.7.135: - LexManos: Fixed bug in new entity sound hook. - -Build 3.3.7.134: - LexManos: Updated to FML #135 {Fixed ModList rendering issue, and incorrect arument on crafting hook} - LexManos: Added new ISoundHandler.onPlaySoundAtEntity hook. Should be backwards compatible with any older ISoundHandler implementations. - LexManos: New onChunkUnload event for TileEntities, for psxlover. - LexManos: Bumped version number to 3.3.7 for full release. - -Build 3.2.6.132: - LexManos: Fixed concurent modification exception in the ore registry. - -Build 3.2.6.131: - LexManos: Fix for potential concurancy modification exceptions - -Build 3.2.6.130: - LexManos: Fixed possible NPE when blocks havent fully initalized yet. - -Build 3.2.6.129: - LexManos: Updated FML to 132, TextureFX fix, and bumped revision to 6. - -Build 3.2.5.128: - LexManos: Added bouncer functions for functions we removed. Makes MagicLauncher shut up about missing functions {not actually missing}, and therefor makes users stop thinking its a life or death error. - -Build 3.2.5.127: - LexManos: New Ore Dictionary recipies. Allows for simpler Ore Dictionary integration with recipies. IOreHandler should no longer be used. - -Build 3.2.5.126: - LexManos: Updated to FML 130 - LexManos: Added hackish workaround for Tessellator.textureID to provent crashing while we wait for Optifine to update. - -Build 3.2.5.125: - LexManos: Server side of ITextureProvider for Block/Item for compilations sake. - -Build 3.2.5.124: - LexManos: Backwards compatibility fix for ITextureProvider - -Build 3.2.5.123: - LexManos: Updated FML to 121 to fix world tick issues. - -Build 3.2.5.122: - LexManos: Updated MCP mapings. Moved the bulk of custom logic from RenderItem to ForgeHooksClient. - LexManos: All Items and Blocks now implement ITextureProvider, and have a setTextureFile(String) function, to support cleaner code in Mods and in Forge. - LexManos: Tag each Tessellator with it's associated texture ID. - -Build 3.2.5.121: - LexManos: Added kick info to disconnect event, updated to FML 120, keybindings, better image rendering in ModList ui. - -Build 3.2.5.120: - LexManos: Fix bug in cart functions where would always return null. - -Build 3.2.5.119: - LexManos: Fixed some inverted logic causing tress to not gen correctly. - -Build 3.2.5.118: - LexManos: Update FML to 117 - -Build 3.2.5.117: - LexManos: New Hooks addedf for custom tree/leaves. And better interaction with trees growing and rerplacing certain blocks. Should allow for ExtraBiomes to behave nicer, and RedPower to make there blocks un-breakable by trees. - LexManos: Also, new hook in last commit for blocks to determine if they are able to be replaced by ores, for any mod that adds new world gen. Bumped revision up. - -Build 3.2.4.116: - LexManos: We now bundle CodexIBXM from PaulsCode. See http://paulscode.com http://www.paulscode.com/forum/index.php?topic=4.0 and the included license files for more info. - LexManos: Updated to FML 115, added Forge Logo to the client dist, and in-game ModInfo page. - -Build 3.2.4.115: - LexManos: Updated to FML build 114 - -Build 3.2.4.114: - LexManos: Included fmlversion.properties in the release zips. - -Build 3.2.4.111: - LexManos: Added FML ReadMe, Credits, and License to release zips - -Build 3.2.4.110: - LexManos: Update FML to 92, this include full client side support, ModLoader nolonger needed. - LexManos: Added new source clean step to fix linux vs windows astyle issues. - LexManos: Cleaned up names for Minecraft Forge's text files so they dont clash with other mods. Fixed up the release script to include the license text, and executable permissions for install.sh. - LexManos: Added FML mod info file - LexManos: Updated MCP Mapings and patches. - LexManos: Updated patches for FML, moved some extranious code to Forge classes instead of patches. - LexManos: Updated to FML Build 95 - -Build 3.2.3.108: - LexManos: Bump version number for official release. - -Build 3.1.3.107: - LexManos: Fixed AudioMod compatibility with MultiMC style launchers. - -Build 3.1.3.106: - LexManos: Bit masked the entity ID to change the range from -127-127 to 0-255 - -Build 3.1.3.105: - LexManos: Updated MCP Mapings - -Build 3.1.3.104: - LexManos: Added forge identifier to statistics collection. - -Build 3.1.3.103: - LexManos: Fix for furnaces not smelting the final item in full stacks. - -Build 3.1.3.102: - CovertJaguar: static final vars are inlined during the compile step, making the version variables useless at runtime. - LexManos: Fixed Levers droping off the backs of stairs client side. - -Build 3.1.3.101: - LexManos: New block hooks for creating custom beds. - -Build 3.1.3.100: - cpw: Update to FML 74: fixes an important issue with MLProp - -Build 3.1.3.99: - LexManos: Bumped revision to 3 - -Build 3.1.2.98: - LexManos: Fixed Vinella mob spawning bug that prevented mobs from spawning on the top most chunk. Added new Block function to determine if a Mob can naturally spawn on the block. Add new hook to allow for special case handeling on natural entity spawn. - -Build 3.1.2.97: - LexManos: Fix for loading Minecart Entities in worlds that were last accessed before Forge was installed. - -Build 3.1.2.96: - LexManos: Moved MLMP compatibility functions to ModCompatibilityClient, and fixed issue where no vehicles would be spawned. - -Build 3.1.2.95: - LexManos: - New ISoundHandler interface, useful for adding custom sounds and dealign with sound based events. - Includes basuic AudioMod compatibility. - -Build 3.1.2.94: - LexManos: Fixed vinella bugs when trying to access chunk information with a y < 0 - -Build 3.1.2.93: - LexManos: Updated to FML build #73 - LexManos: Added MLMP hook invocation for vehicle spawn and opening GUI's to provide compatibility for clients that have both ModLoaderMP and forge installed. - -Build 3.1.2.92: - LexManos: Exposed TileEntityData packet to TileEntities. And added helper sender function. - -Build 3.1.2.91: - LexManos: Added metadata sensitive Chunk constructor for Bioxx - -Build 3.1.2.90: - LexManos: Added MinecraftApplet.clas to the force output list because users cant understand the concept of only replacing files they are told to. And bumped version to 3.1.2 - -Build 3.0.1.89: - LexManos: made the ID in PacketEntitySpawn unsigned. - LexManos: Added generic packet sending function to MinecraftForge class. - LexManos: Fixed shift-clicking issue with items that utilized the new ItemStack sensitive smelting system. - LexManos: Implemented a 'small' packet system for those mods that need to send rapid, small data packets and who are concered about the overhead of the 250 payload packet. It uses packet 131. - -Build 3.0.1.88: - LexManos: Implemented RichardG's Paged Achivement list GUI modifications. - -Build 3.0.1.87: - t.tomkins: Edits enable use of EntityPlayer.canHarvestBlock (for PlayerAPI) when the ToolClass has no rules for the block. - -Build 3.0.1.86: - LexManos: MAX_ENTITY_RADIUS Now works on the Y axis - LexManos: Respawning in dimensions should now properly set the dimension ID for the new player instance. - -Build 3.0.1.85: - LexManos: Fix for vanilla crash for chunk generation with block ID's above 127. - -Build 3.0.1.84: - cpw: Update fml to build 68: fixes a ticking issue and soft vs hard dependencies - -Build 3.0.1.83: - LexManos: - Changed entity Forge spawning code works to be more in line with normal spawning: - (World, double, double double) constructor is nolonger called, normal (World) constructor, and setPositionAndRotation is called afterwords. - yaw, pitch, and yawHead is sent (if the entity isn't a EntityLiving yawHead isn't used) - The datawatcher data is also sent like a normal Entity. - -Build 3.0.1.82: - LexManos: Fixed bug in BlockFire's old fields. - LexManos: Added variable entity radius to World, to be used if a mod make really large entities. - -Build 3.0.1.81: - LexManos: Fixed TileEntity bug that was causing Ghost tile entities. - -Build 3.0.1.80: - LexManos: Multi-pass item rendering now uese proper render pass number. - -Build 3.0.1.79: - LexManos: Added slope velocity hook for Covert - -Build 3.0.1.78: - LexManos: Fixed bugs in the Dimension transfer code, Now displays proper join message, and respawning in dimensions other then 0 works. - -Build 3.0.1.77: - CovertJaguar: Added a function for checking block harvest levels without having to resort to reflection. - LexManos: Try to fix jenkins build. - -Build 3.0.1.75: - LexManos: Added ItemStack sensitive burn time hook. - -Build 3.0.1.74: - LexManos: - Added new Item function to allow for multiple rendering passes. - Fixed a vinella bug where item layters would not line up for EntityItem's - Added new IItemRendere helper flag for 3d block translations. - -Build 3.0.1.73: - cpw: Update fml to 62- provision a server console command and fix mod loading order - cpw: Update FML for new hooks: onPlayerLogout and onPlayerDimensionChanged - LexManos: - Rewrote IItemRenderer to be a more generic and expandable version, Breaks previous interfaces, but this should be the last time the interface changes. - Implemented the MapRender hook ChickenBones requested. - -Build 3.0.0.72: - cpw: Fix separated login/announce handler - cpw: FML 59: don't send a zero length register packet, add mod channels - -Build 3.0.0.71: - cpw: Update to FML 57: fixes FML not calling it's login handler code - -Build 3.0.0.70: - LexManos: MCP Conf update for 1.2.5 - LexManos: Initial patch update to FML and MC 1.2.5 - LexManos: Deleted patches - LexManos: Fixed update_patches.py to now delete old patch files that have no working src relation - LexManos: Updated repo scripts to python, allowing more flexability and less code duplication. - LexManos: Finished up converting the source dist install scripts to python. Fixed a couple issues with the other scripts. - cpw: Update patches for FML fix. - cpw: Fix release script to import "inject_version" - cpw: Add in recent fml with fixes - cpw: Delete the old one too - LexManos: Rewrote the login code to delay full login untill forge fnishes negotiating network IDs. Should fix entities not having proper ID mapings. - LexManos: Added ChickenBones's request ITextureLoadHandler hook - LexManos: Updated patch for mapings - LexManos: Implemented ISaveEventHandler as ChickenBones's requested. - LexManos: Add server spawn protection config option as per someh4x0r's request. - LexManos: Couple of output fixups and added script to be executed by Jenkins during the build. First test build. - LexManos: Changed IGuiHandler's signature to be compatible with both sides. Took out ModLoaderMp reference in README. - -Build 2.0.0.68: - LexManos: Fix some shadowing warnings. - LexManos: Some cleanups to update_patches, should run properly on any system now. - LexManos: Add IChunkLoadHandler.canEntityUpdate() function to allow entities to update while in custom loaded chunks. - LexManos: Implemented a chat event handler system to allow for manipulating and handeling the various chat/command events. - -Build 2.0.0.67: - LexManos: Changed update_patches script to use python for the bulk, Prevents making 1800 temporary useless files. - LexManos: Fixed camelcasing in IConnectionHandler, ment to do during first upgrade. - -Build 2.0.0.66: - LexManos: Fixed typo bug in MinecraftForge.getEntityTrackerInfo - -Build 2.0.0.65: - LexManos: - Updated to MC: 1.2.4 MLMP: 1.2.4 v1 - Removed all code that was marked as deprecated, IE: ICustomItemRenderer, and the functions in Configuration - -Build 1.4.1.64: - LexManos: Reworked EntityPlayerMP.openGui to hopefully be more compatible with PlayerAPI - -Build 1.4.1.63: - LexManos: Cleanup the EffectRenderer patches, Allows custom food items to have the proper particals. Cleaned up special case class in favor of basic java generics. - -Build 1.4.1.62: - CovertJaguar: Added the ability to define custom categories for config files. - CovertJaguar: Removed createCategory() function and changed it to create categories as they are encountered. - LexManos: Updated MCP mapings - LexManos: - Fixed a couple of bugs in the Configuration categories pull request. - Added helper functions to Property for standard int/boolean usage. - LexManos: Added rider sit pull request. - -Build 1.4.1.61: - LexManos: Fixed NPE on CustomPayload packets with 0 data - LexManos: Changed logic in Configuration to allow for extended block ID mods easier access to change that. Just use reflection to change Configuration.configBlocks to whatever length you want. - LexManos: Implemented Pheenixm pull request allowing for more control over the camera. - LexManos: - Added MinecraftForge.isClient() function that returns true if you are in the Minecraft Client, (As defined as net.minecraft.client.Minecraft existing) false otherwise. - Fixed a typo on PacketEntitySpawn that caused speed to be assigned improperly. - A little code cleanup. - -Build 1.4.1.60: - LexManos: Fixed a few typos that CovertJaguire found in The Forge entity handeling code. And re-wrote the connection sequance so that clients get a list of mod ids before anything else. - -Build 1.4.1.59: - LexManos: Readded the deprecated interface ICustomItemRenderer. Added method to enforce deprecation cross Minecraft versions. - -Build 1.4.1.58: - newthead: Added new item render interfaces to Forge client - newthead: Added hook for rendering equipped items - newthead: Clarified render option for inventory items - newthead: Added remaining item render hooks, and fixed a static method access - newthead: Added render code for inventory items and entity items. - newthead: Cleanup/fix item render hooks - newthead: Added additional flag for rendering entity item bobbing - newthead: Merged item rendering interfaces into a single IItemRenderer - newthead: Updated render hooks and registration to use the IItemRenderer interface - newthead: Modified patches to use new item render hooks - newthead: Merged item rendering interfaces into a single IItemRenderer - CovertJaguar: Fix for network code. - newthead: Changed render hook checks to all use ItemStack instead of itemID - newthead: Reverted vanilla texture binding to an explicit if() statement based on item ID - LexManos: Fixed dyes showing twice in creative list - LexManos: Bumped version number to 1.4.1 - -Build 1.4.0.57: - LexManos: Fixed tile entities not properly being removed for blocks that do not extend BlockContainer, or override BlockContainer.onBlockRemoval - -Build 1.4.0.56: - LexManos: Fixed excessive need for user interaction in the install script. - LexManos: Fixed a class to a deprecated method to fix tool effectiveness. - -Build 1.4.0.55: - LexManos: Reworked the workspace scripts so the build should fail on compile errors. This build should fail as a test. - LexManos: Fixed IOException not found error in CovertJaguires pull request. Updated scripts so that build should now be fixed - -Build 1.4.0.53: - CovertJaguar: Added throws clause to ISpawnHandler functions to keep the functions consistent with similar functions and increase ease of use. Exceptions are already being caught everywhere these functions are called, so no further changes required. - LexManos: Fixed onTakenFromCrafting hooks to be called once per stack taken. Sadly due to how shift-click is handled, the passed in item stack is not garenteed to be the stack that the result was added to. - -Build 1.4.0.52: - LexManos: Fixed forgotten type identifier in clean_src - LexManos: New EntityInteract hook for handeling player vs entity interaction on the global level vs the item level. - LexManos: Fixed sides of grass not getting biome colors - LexManos: Fixed type on patch conversion messing up tile entities - LexManos: Proper fix for SDK's invalid bit shifts of parameters for chunk population - LexManos: Made BlockStairs, BlockFarmland, and BlockStep have proper sided-solidity. Can now place torches on any solid side of those blocks. - -Build 1.4.0.51: - cpw: - Fix worldgen doubleshifting in ModLoaderMP until SDK fixes it. - - This means mods can generate surface and nether in SMP again. - -Build 1.4.0.50: - eloraam: Fixed a merge error. - LexManos: - New script to fix decompile differences between windows and linux/osx. - Removed the MLProp special case, no longer needed as MLProp decompiles fine. - Updated patches to work on all systems. - Added warning and exit if the user does not say yes to the cleanup. - -Build 1.4.0.49: - eloraam: MCP Update. Fixed a few small bugs in the linux scripts. - -Build 1.4.0.48: - LexManos: Fixed the inverted logic in the missing mod check. - LexManos: Fixed a wrong argument for dimensions, should fix entity tracking. - LexManos: Custom dimensions should now honor the canRespawnHere function for respawning. - -Build 1.4.0.47: - LexManos: Fix up Configuration ids to only work for 256 ids until Jeb finishes the 4096 conversion. - -Build 1.4.0.46: - LexManos: Fixed a bug where vines were not shearable. - -Build 1.4.0.45: - CovertJaguar: Fixed a minor bug with the Minecart Dictionary. - -Build 1.4.0.44: - LexManos: 1.4.0 official release. - -Build 1.3.4.42: - LexManos: Updated to MLMPv3 - -Build 1.3.4.41: - LexManos: Hack-fix for players getting stuck during logins. Detailed fix when bug is actually tracked down. - LexManos: Implemented ChickenBone's Chunk handler - -Build 1.3.4.39: - LexManos: Fixed client side bonemeal on grass only making flowers - LexManos: Updated to latest MCP - -Build 1.3.4.38: - LexManos: Fixed MLMP thinking Network mods need a client side when they dont. - LexManos: Fixed a generic tile entity line i missed on the server side. - LexManos: Removed improper tile entity negation - -Build 1.3.4.37: - LexManos: Updated to SDK MLMP v2 - -Build 1.3.4.36: - LexManos: Fixed missing double array in MLMP's packet server side. Also, fixed the creative code again, brain failed. - -Build 1.3.4.35: - LexManos: Got my comparitor turned around - LexManos: Updated to SDK's 1.2.3 MLMP, Mush cleaner, no longer supporting Flan's. - -Build 1.3.4.34: - LexManos: Updated gitignore, fixed digging particles, fixed creative container showing to many blocks, fixed wrong argument for custom renderers. - -Build 1.3.4.33: - LexManos: Updated MCP's patch files. Fixes hangs on running MC as applet. - LexManos: ItemBlock now implements ITextureProvider so that blocks with custom textures will showup properly when being held. - -Build 1.3.4.32: - LexManos: Fixed NPE in the login handler - LexManos: Fixed directory issues in the setup script - LexManos: Cleanup of ModLoaderMP and proper update to the latest version of ModLoader - -Build 1.3.4.31: - LexManos: Fixed missing space in linux scripts - LexManos: No longer mark forge packets as chunk packets. - LexManos: Updated MCP mapings files - -Build 1.3.4.30: - LexManos: Updated scripts so that we use Fernflower now. Added a small python script to download fernflower for the user. And the scripts exit out if it fails. - LexManos: Deleted modLoaderMP.patch, unneeded now that we use Fernflower - LexManos: Updated eclipse project for MCP 1.2.3's inclusion of the Start folder in the src folder. - LexManos: Updated The Json enum helper to point to the new packaged names. And fixed a casing change in ModLoader - LexManos: Made mod_MinecraftForge extend NetworkMod, and changed NetworkMod to extend BaseModMP server side. - LexManos: Fixed unneeded imports in ForgePacket - LexManos: removed unneeded import, and fixed casing of args in IShearable - LexManos: Deleted EntityPigZombie patches, Who needed these? Why could you not do this via reflection? - LexManos: Conf for 1.2.3 - LexManos: Same patch diff, files. - LexManos: No longer needed, bug was fixed - LexManos: Client side initial patch update to Fernflower and MC 1.2.3 - LexManos: Bit of a cleanup of the client patches - LexManos: Couple of things I missed client side - LexManos: Deleted unneeded server side patches, Packet250 bug was fixed. And the others got moved to AnvilSaveHandler - LexManos: First push of server side patch updates for 1.2.3. MLMP is still not updated so it does not include those changes, and will not compile. - LexManos: Small imports cleanup - LexManos: Missed damageCarryover on the server - LexManos: Made the scripts forge updating md5s/mcp/names - LexManos: Updated for MLMP 1.2.3 v1 - -Build 1.3.4.29: - LexManos: Bumped version to 1.3.4, final commit for Minecraft v1.1 - -Build 1.3.3.28: - LexManos: Fixed bug in build script that caused the Minecraft/MinecraftServer classes to not be included. - -Build 1.3.3.27: - LexManos: Client side of the new Dimension support. - -Build 1.3.3.26: - thedeveducer: Fixed spelling mistake ('Frequancy') - LexManos: Fixed ITextureprovider for multi-textured items when rendering on the GUI. - LexManos: Fixed compile error for the spelling pull request. - -Build 1.3.3.24: - LexManos: Fixed up Shearable blocks to play nicer with sub-classes. - LexManos: Fixed line endings in windows update_patches - LexManos: Deleted Deprecated interfaces. - LexManos: Ran AStyle over forge code for uniform code formatting, and refactored old code a bit to have cleaner names. - -Build 1.3.3.23: - connor: People may think the server needs the mods to continue and not the client. - -Build 1.3.3.22: - LexManos: Fixed a bug in update_patches that caused apostrphies to be removed. Causing the last patch to be generated incorrectly. - -Build 1.3.3.21: - LexManos: - Initial attempt at server side extra dimensions support. - Mods must register there dimensions on load, by calling DimensionManager.registerDimension(uniqueID, WorldProvier, boolean) - Mods are resposible for writing there own transporter blocks. - Initial commit, needs some more testing and design thoughts. - -Build 1.3.3.20: - LexManos: Added new Item.getIconIndex context sensitive version. - LexManos: Implemented a response to Methuselah96's Arrow hook request. See IArrowNockHandler and IArrowLooseHandler - -Build 1.3.3.19: - LexManos: Changed the layout of the missing mods gui a little. Still needs a lot of work to look good. - LexManos: Marked forge packets as 'chunk' packets. Giving them a higher priority making the initial mod list check more reliable. - LexManos: Introduced some debugging info into Forge packets. And a debug flag in the client and server packet handlers. - LexManos: Moved Client side EntityPlayer.openGui work code to EntityPlayer for compatibility between player API. - -Build 1.3.3.16: - eloraam: Linux scripts fixed, TE bug fix. - eloraam: Fixed linux scripts, fixed TE bug. - -Build 1.3.3.15: - LexManos: Exposed getters for NetServerHandler.playerEntity and NetworkManager.netHandler - LexManos: - Introuduced NetworkMod, a BaseMod extension and replacement for BaseModMP. All mods that are designed to work in the server environment should extend this. - NetworkMods will be assigned unique ModIDs by the server, and those IDs will be sent to the client upon connection. - Refactored Forge packets to the net.minecraft.src.forge.packets package. And introduced the base ForgePacket class. - Added initial ModList request/response. - LexManos: - Expanded the Mod check to test for missing mods and display a GUI screen for the client if it is missing any. - The client now downloads NetworkMod ID's from the server upon connecting. - LexManos: Implemented a generic EntityPlayer.openGui system, and the network backend for it to work on server and client. - -Build 1.3.3.14: - LexManos: - Fixed up the install scripts. The linux script no longer needs sed. Should fix some issues on OSX's without gsed. - Also forge sources will only be copied to sides that were downloaded. - Also, install scripts now prompt for input to cleanup. - -Build 1.3.3.13: - LexManos: Split mod_MinecraftForge so that Clients arnt required to have MLMP installed if they don't use a MP mod. - -Build 1.3.3.12: - LexManos: Update MCP Mapings - LexManos: Small update to update_patches.bat, to skip patch reject files. - LexManos: Bumped version to 1.3.3 - -Build 1.3.2.10: - LexManos: - Refactored so that ISpecialArmor items do not see the factor of 25 on the damage. - The value returned form ISpecialArmor.getProperties is now copied, so mod items are free to re-use there return values. - -Build 1.3.2.9: - LexManos: - Reworked ISpecialArmor to provide better functionality as requested by IC2 devs. - Armor can now be prioritized over other armor. - It can deal with damaging it's own itemstacks. - Also impkemented the ISpecialArmor.getArmorDisplay - -Build 1.3.2.8: - LexManos: Lowered the amount of build log spam, and fixed the inject_version script for use on other systems. - LexManos: Fixed ITextureProvider support for items that have multiple colored overlays. - LexManos: Added Item.onLeftClickEntity hook. Used to intercept and cancel the 'attack' action within items. - LexManos: Implemented item.onBlockStartBreak call for creative single player. - LexManos: Implimented a new IShearable system. This allows mods to create both new shear-like items/blocks. As well as new Entities/Blocks that work with other mod's shear-like items. - -Build 1.3.2.7: - LexManos: Missed a caluse, ISpecialArmor should work as intended now. And not destroy Armor instanatly. - -Build 1.3.2.6: - LexManos: - Implmented Sengir's IPickupHandler. - http://www.mod-buildcraft.com/forums/topic/hook-intercept-item-pickups-by-player-entities/?view=all - -Build 1.3.2.5: - LexManos: - Merged in the change to ISpecialArmor to introduce the DamageSource argument. - As well as the concept of damage absorption vs reduction. - -Build 1.3.2.4: - LexManos: - Created a Entity tracking ans spawning system. - Mod creators should call MinecraftForge.registerEntity to register a entity. - All entity ID numbers are Mod Unique. Meaning two mods can have Entity #1. - Added client and server side packet handlers for the 'Forge' channel. For use in internal packets such as the new Spawn packet. - Updated the build scripts to copy over unique server source files now that there actually are some. - For modders: - If you have a entity that used MLMP's 'owner' system, you should have your entity implement IThrowableEntity - If you have a entity that implments MLMLP's ISpawnable, you should implement ISpawnHandler. - They provide the same functionality, just in a cleaner, more orginized way and will be the method used when we eventually drop MLMP. - -Build 1.3.2.3: - LexManos: Fixed return value for un/registerChannel. Now returns properly indicate when un/register commands should be sent. - -Build 1.3.2.2: - LexManos: - Setup .gitignore for eclipse bin dirs. - Fixed line endings in install.sh - Added mod_MinecraftForge for simpler logging of minecraft version in crash reports - Added new hooks for connection events, See IConnectionHandler for more details. - Added Packet250CustomPayload handeling and channel registraction management, see MessageManager and IPacketHandler for more details. - Forge now uses unsed fields in C->S Packet1Login to identify itself. None Forge clients will get a graceful disconnect message instead of the 'Unknown packet 230' - diff --git a/gradle.properties b/gradle.properties old mode 100755 new mode 100644 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar old mode 100755 new mode 100644 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties old mode 100755 new mode 100644 diff --git a/gradlew.bat b/gradlew.bat old mode 100755 new mode 100644 index aec9973..8a0b282 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,90 +1,90 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 12ab3fc7249edf7b2aaa070c09c6cead3e18d214 Mon Sep 17 00:00:00 2001 From: Lukas Schmid Date: Sun, 2 Dec 2018 17:27:58 +0100 Subject: [PATCH 3/3] Setup DevEnv for Linux Commands are now JSON Strings Fixed execution issue on linux --- src/main/java/li/netcube/mcvm/MCVM.java | 552 ++++++------- .../java/li/netcube/mcvm/util/IniFile.java | 156 ++-- .../li/netcube/mcvm/util/StreamGobbler.java | 27 + .../netcube/mcvm/util/vm/MachineManager.java | 199 ++--- .../netcube/mcvm/util/vm/VirtualMachine.java | 765 ++++++++++-------- .../mcvm/util/vm/commands/ICommandParser.java | 17 +- .../vm/commands/RedstoneCommandParser.java | 316 +++++--- 7 files changed, 1122 insertions(+), 910 deletions(-) create mode 100644 src/main/java/li/netcube/mcvm/util/StreamGobbler.java diff --git a/src/main/java/li/netcube/mcvm/MCVM.java b/src/main/java/li/netcube/mcvm/MCVM.java index e3cd827..15c2086 100755 --- a/src/main/java/li/netcube/mcvm/MCVM.java +++ b/src/main/java/li/netcube/mcvm/MCVM.java @@ -1,277 +1,277 @@ -package li.netcube.mcvm; - -import com.mojang.realmsclient.client.FileDownload; -import li.netcube.mcvm.server.commands.*; -import li.netcube.mcvm.common.ui.GuiProxy; -import li.netcube.mcvm.util.*; -import li.netcube.mcvm.util.vm.VirtualMachine; -import li.netcube.mcvm.util.vm.commands.ICommandParser; -import li.netcube.mcvm.util.vm.commands.RedstoneCommandParser; -import net.minecraftforge.fml.client.FMLClientHandler; -import net.minecraftforge.fml.common.FMLCommonHandler; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.Mod.EventHandler; -import net.minecraftforge.fml.common.event.*; -import net.minecraftforge.fml.common.network.NetworkRegistry; -import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.fml.relauncher.Side; -import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.SystemUtils; -import org.apache.logging.log4j.Logger; -import scala.collection.parallel.ParSeqLike; - -import javax.annotation.Nullable; -import java.awt.*; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileWriter; -import java.net.MalformedURLException; -import java.net.URL; -import java.nio.file.Files; -import java.util.ArrayList; - -@Mod(modid = MCVM.MODID, name = MCVM.NAME, version = "@VERSION@", useMetadata = true) -public class MCVM -{ - - public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel("mcvm"); - - public static final String MODID = "mcvm"; - public static final String NAME = "Minecraft Virtual Machines"; - - public static Logger logger; - - public static ArrayList virtualMachines = new ArrayList<>(); - - public static ArrayList registeredCommandParsers = new ArrayList<>(); - - public static IniFile modConfig; - - @Mod.Instance - public static MCVM instance; - - @EventHandler - public void preInit(FMLPreInitializationEvent event) - { - logger = event.getModLog(); - } - - @EventHandler - public void init(FMLInitializationEvent event) - { - NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiProxy()); - INSTANCE.registerMessage(VMControlMessageHandler.class, VMControlMessage.class, 0, Side.SERVER); - - ProgressBarWindow installProgress = null; - - if (!GraphicsEnvironment.isHeadless()) { - installProgress = new ProgressBarWindow(); - } - - if (installProgress != null) { - installProgress.createAndShowGUI(); - } - - boolean osIsCompatible = false; - - if (SystemUtils.IS_OS_WINDOWS) { - try { - File destinationFile = new File("mcvmRedistWin.zip"); - File fileHash = new File("mcvmRedistWin.md5"); - URL redistURL = new URL("https://netcube.li/mcvm/mcvmRedistWin.zip"); - URL hashURL = new URL("https://netcube.li/mcvm/getHash.php?filename=mcvmRedistWin.zip"); - updateRedistPackage(installProgress, destinationFile, fileHash, redistURL, hashURL); - osIsCompatible = true; - } catch (Exception ignored) {} - } else if (SystemUtils.IS_OS_LINUX) { - try { - File destinationFile = new File("mcvmRedistLinux.zip"); - File fileHash = new File("mcvmRedistLinux.md5"); - URL redistURL = new URL("https://netcube.li/mcvm/mcvmRedistLinux.zip"); - URL hashURL = new URL("https://netcube.li/mcvm/getHash.php?filename=mcvmRedistLinux.zip"); - updateRedistPackage(installProgress, destinationFile, fileHash, redistURL, hashURL); - osIsCompatible = true; - } catch (Exception ignored) {} - } - - if (installProgress != null) { - installProgress.closeWindow(); - } - - registerCommandParser(new RedstoneCommandParser()); - - File iniFile = new File("mcvm.ini"); - - try { - if (!iniFile.exists()) - { - iniFile.createNewFile(); - BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(iniFile)); - bufferedWriter.write("[VirtualMachine]\r\n"); - bufferedWriter.write("customArguments=\n\n"); - bufferedWriter.flush(); - bufferedWriter.close(); - } - modConfig = new IniFile("mcvm.ini"); - } catch (Exception ignored) {} - - } - - private void updateRedistPackage(@Nullable ProgressBarWindow installProgress, File destinationFile, File fileHash, URL redistURL, URL hashURL) { - String remote_md5 = ""; - String local_md5 = ""; - - if (destinationFile.exists()) { - - if (fileHash.exists()) { - fileHash.delete(); - } - - try { - if (installProgress != null) { - installProgress.setStatus("Downloading MD5..."); - } else { - logger.info("Downloading MD5..."); - } - FileDownloadHelper hashDownloadHelper = new FileDownloadHelper(hashURL, fileHash); - Thread downloadThread = new Thread() { - public void run() { - while (hashDownloadHelper.getStatus() == FileDownloadHelper.DOWNLOADING) { - if (installProgress != null) { - installProgress.setProgress((int) hashDownloadHelper.getProgress()); - } - logger.info((int)hashDownloadHelper.getProgress()); - try { - Thread.sleep(500); - } catch (Exception ignored) {} - } - } - }; - downloadThread.run(); - downloadThread.join(); - } catch (Exception e) { - e.printStackTrace(); - } - - if (installProgress != null) { - installProgress.setStatus("Checking MD5..."); - } else { - logger.info("Checking MD5..."); - } - - try { - if (fileHash.exists()) { - FileInputStream fis = new FileInputStream(fileHash); - byte[] data = new byte[(int) fileHash.length()]; - fis.read(data); - fis.close(); - - remote_md5 = new String(data, "UTF-8"); - } - } catch (Exception e) { - } - - try { - FileInputStream fis = new FileInputStream(destinationFile); - local_md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis); - fis.close(); - } catch (Exception e) { - } - } - - - if (!destinationFile.exists() || !remote_md5.equals(local_md5)) { - try { - if (destinationFile.exists()) { - destinationFile.delete(); - } - - if (installProgress != null) { - installProgress.setStatus("Downloading MCVM Redistributable..."); - } else { - logger.info("Downloading MCVM Redistributable..."); - } - - FileDownloadHelper fileDownloadHelper = new FileDownloadHelper(redistURL, destinationFile); - Thread downloadThread = new Thread() { - public void run() { - while (fileDownloadHelper.getStatus() == FileDownloadHelper.DOWNLOADING) { - if (installProgress != null) { - installProgress.setProgress((int) fileDownloadHelper.getProgress()); - } - logger.info((int)fileDownloadHelper.getProgress()); - try { - Thread.sleep(500); - } catch (Exception ignored) {} - } - } - }; - downloadThread.run(); - downloadThread.join(); - - if (installProgress != null) { - installProgress.setStatus("Extracting MCVM Redistributable..."); - } else { - logger.info("Extracting MCVM Redistributable..."); - } - - UnZipHelper unZipHelper = new UnZipHelper(destinationFile, new File(destinationFile.getAbsolutePath()).getParentFile()); - Thread extractThread = new Thread() { - public void run() { - while (unZipHelper.getStatus() == 0) { - if (installProgress != null) { - installProgress.setProgress((int) unZipHelper.getProgress()); - } - //logger.info(unZipHelper.getProgress()); - } - } - }; - extractThread.run(); - extractThread.join(); - - if (unZipHelper.getStatus() == -1) { - throw new java.io.IOException(); - } - } catch (Exception e) { - logger.fatal("Could not download/extract MCVM Redistributable! Mod will only work as client. (You can only play on a server)"); - e.printStackTrace(); - if (destinationFile.exists()) { - destinationFile.delete(); - } - } - } else { - if (installProgress != null) { - installProgress.setStatus("Latest MCVM Redistributable is installed! This is a good thing."); - } else { - logger.info("Latest MCVM Redistributable is installed! This is a good thing."); - } - } - } - - @EventHandler - public void serverLoad(FMLServerStartingEvent event) - { - // register server commands - //event.registerServerCommand(new createHDD()); //Removed: Should not be used! - event.registerServerCommand(new createCD()); - event.registerServerCommand(new createFLOPPY()); - } - - @EventHandler - public void serverStopping(FMLServerStoppingEvent event){ - while (virtualMachines.size() > 0) { - //System.out.println("Stopping VM... "); - VirtualMachine vm = virtualMachines.get(0); - virtualMachines.remove(0); - if (vm.isRunning()) { - vm.stop(); - } - } - } - - public static void registerCommandParser(ICommandParser commandParser) { - registeredCommandParsers.add(commandParser); - } +package li.netcube.mcvm; + +import com.mojang.realmsclient.client.FileDownload; +import li.netcube.mcvm.server.commands.*; +import li.netcube.mcvm.common.ui.GuiProxy; +import li.netcube.mcvm.util.*; +import li.netcube.mcvm.util.vm.VirtualMachine; +import li.netcube.mcvm.util.vm.commands.ICommandParser; +import li.netcube.mcvm.util.vm.commands.RedstoneCommandParser; +import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventHandler; +import net.minecraftforge.fml.common.event.*; +import net.minecraftforge.fml.common.network.NetworkRegistry; +import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.relauncher.Side; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.SystemUtils; +import org.apache.logging.log4j.Logger; +import scala.collection.parallel.ParSeqLike; + +import javax.annotation.Nullable; +import java.awt.*; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileWriter; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Files; +import java.util.ArrayList; + +@Mod(modid = MCVM.MODID, name = MCVM.NAME, version = "@VERSION@", useMetadata = true) +public class MCVM +{ + + public static final SimpleNetworkWrapper INSTANCE = NetworkRegistry.INSTANCE.newSimpleChannel("mcvm"); + + public static final String MODID = "mcvm"; + public static final String NAME = "Minecraft Virtual Machines"; + + public static Logger logger; + + public static ArrayList virtualMachines = new ArrayList<>(); + + public static ArrayList registeredCommandParsers = new ArrayList<>(); + + public static IniFile modConfig; + + @Mod.Instance + public static MCVM instance; + + @EventHandler + public void preInit(FMLPreInitializationEvent event) + { + logger = event.getModLog(); + } + + @EventHandler + public void init(FMLInitializationEvent event) + { + NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiProxy()); + INSTANCE.registerMessage(VMControlMessageHandler.class, VMControlMessage.class, 0, Side.SERVER); + + ProgressBarWindow installProgress = null; + + if (!GraphicsEnvironment.isHeadless()) { + installProgress = new ProgressBarWindow(); + } + + if (installProgress != null) { + installProgress.createAndShowGUI(); + } + + boolean osIsCompatible = false; + + if (SystemUtils.IS_OS_WINDOWS) { + try { + File destinationFile = new File("mcvmRedistWin.zip"); + File fileHash = new File("mcvmRedistWin.md5"); + URL redistURL = new URL("https://netcube.li/mcvm/mcvmRedistWin.zip"); + URL hashURL = new URL("https://netcube.li/mcvm/getHash.php?filename=mcvmRedistWin.zip"); + updateRedistPackage(installProgress, destinationFile, fileHash, redistURL, hashURL); + osIsCompatible = true; + } catch (Exception ignored) {} + } else if (SystemUtils.IS_OS_LINUX) { + try { + File destinationFile = new File("mcvmRedistLinux.zip"); + File fileHash = new File("mcvmRedistLinux.md5"); + URL redistURL = new URL("https://netcube.li/mcvm/mcvmRedistLinux.zip"); + URL hashURL = new URL("https://netcube.li/mcvm/getHash.php?filename=mcvmRedistLinux.zip"); + updateRedistPackage(installProgress, destinationFile, fileHash, redistURL, hashURL); + osIsCompatible = true; + } catch (Exception ignored) {} + } + + if (installProgress != null) { + installProgress.closeWindow(); + } + + registerCommandParser(new RedstoneCommandParser()); + + File iniFile = new File("mcvm.ini"); + + try { + if (!iniFile.exists()) + { + iniFile.createNewFile(); + BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(iniFile)); + bufferedWriter.write("[VirtualMachine]\r\n"); + bufferedWriter.write("customArguments=\"\"\n\n"); + bufferedWriter.flush(); + bufferedWriter.close(); + } + modConfig = new IniFile("mcvm.ini"); + } catch (Exception ignored) {} + + } + + private void updateRedistPackage(@Nullable ProgressBarWindow installProgress, File destinationFile, File fileHash, URL redistURL, URL hashURL) { + String remote_md5 = ""; + String local_md5 = ""; + + if (destinationFile.exists()) { + + if (fileHash.exists()) { + fileHash.delete(); + } + + try { + if (installProgress != null) { + installProgress.setStatus("Downloading MD5..."); + } else { + logger.info("Downloading MD5..."); + } + FileDownloadHelper hashDownloadHelper = new FileDownloadHelper(hashURL, fileHash); + Thread downloadThread = new Thread() { + public void run() { + while (hashDownloadHelper.getStatus() == FileDownloadHelper.DOWNLOADING) { + if (installProgress != null) { + installProgress.setProgress((int) hashDownloadHelper.getProgress()); + } + logger.info((int)hashDownloadHelper.getProgress()); + try { + Thread.sleep(500); + } catch (Exception ignored) {} + } + } + }; + downloadThread.run(); + downloadThread.join(); + } catch (Exception e) { + e.printStackTrace(); + } + + if (installProgress != null) { + installProgress.setStatus("Checking MD5..."); + } else { + logger.info("Checking MD5..."); + } + + try { + if (fileHash.exists()) { + FileInputStream fis = new FileInputStream(fileHash); + byte[] data = new byte[(int) fileHash.length()]; + fis.read(data); + fis.close(); + + remote_md5 = new String(data, "UTF-8"); + } + } catch (Exception e) { + } + + try { + FileInputStream fis = new FileInputStream(destinationFile); + local_md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis); + fis.close(); + } catch (Exception e) { + } + } + + + if (!destinationFile.exists() || !remote_md5.equals(local_md5)) { + try { + if (destinationFile.exists()) { + destinationFile.delete(); + } + + if (installProgress != null) { + installProgress.setStatus("Downloading MCVM Redistributable..."); + } else { + logger.info("Downloading MCVM Redistributable..."); + } + + FileDownloadHelper fileDownloadHelper = new FileDownloadHelper(redistURL, destinationFile); + Thread downloadThread = new Thread() { + public void run() { + while (fileDownloadHelper.getStatus() == FileDownloadHelper.DOWNLOADING) { + if (installProgress != null) { + installProgress.setProgress((int) fileDownloadHelper.getProgress()); + } + logger.info((int)fileDownloadHelper.getProgress()); + try { + Thread.sleep(500); + } catch (Exception ignored) {} + } + } + }; + downloadThread.run(); + downloadThread.join(); + + if (installProgress != null) { + installProgress.setStatus("Extracting MCVM Redistributable..."); + } else { + logger.info("Extracting MCVM Redistributable..."); + } + + UnZipHelper unZipHelper = new UnZipHelper(destinationFile, new File(destinationFile.getAbsolutePath()).getParentFile()); + Thread extractThread = new Thread() { + public void run() { + while (unZipHelper.getStatus() == 0) { + if (installProgress != null) { + installProgress.setProgress((int) unZipHelper.getProgress()); + } + //logger.info(unZipHelper.getProgress()); + } + } + }; + extractThread.run(); + extractThread.join(); + + if (unZipHelper.getStatus() == -1) { + throw new java.io.IOException(); + } + } catch (Exception e) { + logger.fatal("Could not download/extract MCVM Redistributable! Mod will only work as client. (You can only play on a server)"); + e.printStackTrace(); + if (destinationFile.exists()) { + destinationFile.delete(); + } + } + } else { + if (installProgress != null) { + installProgress.setStatus("Latest MCVM Redistributable is installed! This is a good thing."); + } else { + logger.info("Latest MCVM Redistributable is installed! This is a good thing."); + } + } + } + + @EventHandler + public void serverLoad(FMLServerStartingEvent event) + { + // register server commands + //event.registerServerCommand(new createHDD()); //Removed: Should not be used! + event.registerServerCommand(new createCD()); + event.registerServerCommand(new createFLOPPY()); + } + + @EventHandler + public void serverStopping(FMLServerStoppingEvent event){ + while (virtualMachines.size() > 0) { + //System.out.println("Stopping VM... "); + VirtualMachine vm = virtualMachines.get(0); + virtualMachines.remove(0); + if (vm.isRunning()) { + vm.stop(); + } + } + } + + public static void registerCommandParser(ICommandParser commandParser) { + registeredCommandParsers.add(commandParser); + } } \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/util/IniFile.java b/src/main/java/li/netcube/mcvm/util/IniFile.java index 6a98c1a..ad236ca 100755 --- a/src/main/java/li/netcube/mcvm/util/IniFile.java +++ b/src/main/java/li/netcube/mcvm/util/IniFile.java @@ -1,79 +1,79 @@ -package li.netcube.mcvm.util; - -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -public class IniFile { - - private Pattern _section = Pattern.compile( "\\s*\\[([^]]*)\\]\\s*" ); - private Pattern _keyValue = Pattern.compile( "\\s*([^=]*)=(.*)" ); - private Map< String, - Map< String, - String >> _entries = new HashMap<>(); - - public IniFile( String path ) throws IOException { - load( path ); - } - - public void load( String path ) throws IOException { - try( BufferedReader br = new BufferedReader( new FileReader( path ))) { - String line; - String section = null; - while(( line = br.readLine()) != null ) { - Matcher m = _section.matcher( line ); - if( m.matches()) { - section = m.group( 1 ).trim(); - } - else if( section != null ) { - m = _keyValue.matcher( line ); - if( m.matches()) { - String key = m.group( 1 ).trim(); - String value = m.group( 2 ).trim(); - Map< String, String > kv = _entries.get( section ); - if( kv == null ) { - _entries.put( section, kv = new HashMap<>()); - } - kv.put( key, value ); - } - } - } - } - } - - public String getString( String section, String key, String defaultvalue ) { - Map< String, String > kv = _entries.get( section ); - if( kv == null ) { - return defaultvalue; - } - return kv.get( key ); - } - - public int getInt( String section, String key, int defaultvalue ) { - Map< String, String > kv = _entries.get( section ); - if( kv == null ) { - return defaultvalue; - } - return Integer.parseInt( kv.get( key )); - } - - public float getFloat( String section, String key, float defaultvalue ) { - Map< String, String > kv = _entries.get( section ); - if( kv == null ) { - return defaultvalue; - } - return Float.parseFloat( kv.get( key )); - } - - public double getDouble( String section, String key, double defaultvalue ) { - Map< String, String > kv = _entries.get( section ); - if( kv == null ) { - return defaultvalue; - } - return Double.parseDouble( kv.get( key )); - } +package li.netcube.mcvm.util; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class IniFile { + + private Pattern _section = Pattern.compile( "\\s*\\[([^]]*)\\]\\s*" ); + private Pattern _keyValue = Pattern.compile( "\\s*([^=]*)=(.*)" ); + private Map< String, + Map< String, + String >> _entries = new HashMap<>(); + + public IniFile( String path ) throws IOException { + load( path ); + } + + public void load( String path ) throws IOException { + try( BufferedReader br = new BufferedReader( new FileReader( path ))) { + String line; + String section = null; + while(( line = br.readLine()) != null ) { + Matcher m = _section.matcher( line ); + if( m.matches()) { + section = m.group( 1 ).trim(); + } + else if( section != null ) { + m = _keyValue.matcher( line ); + if( m.matches()) { + String key = m.group( 1 ).trim(); + String value = m.group( 2 ).trim().replaceAll("^[\"|']|[\"|']$", ""); + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + _entries.put( section, kv = new HashMap<>()); + } + kv.put( key, value ); + } + } + } + } + } + + public String getString( String section, String key, String defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return kv.get( key ); + } + + public int getInt( String section, String key, int defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return Integer.parseInt( kv.get( key )); + } + + public float getFloat( String section, String key, float defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return Float.parseFloat( kv.get( key )); + } + + public double getDouble( String section, String key, double defaultvalue ) { + Map< String, String > kv = _entries.get( section ); + if( kv == null ) { + return defaultvalue; + } + return Double.parseDouble( kv.get( key )); + } } \ No newline at end of file diff --git a/src/main/java/li/netcube/mcvm/util/StreamGobbler.java b/src/main/java/li/netcube/mcvm/util/StreamGobbler.java new file mode 100644 index 0000000..b1ffd25 --- /dev/null +++ b/src/main/java/li/netcube/mcvm/util/StreamGobbler.java @@ -0,0 +1,27 @@ +package li.netcube.mcvm.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +public class StreamGobbler extends Thread { + InputStream is; + + // reads everything from is until empty. + public StreamGobbler(InputStream is) { + this.is = is; + } + + public void run() { + try { + InputStreamReader isr = new InputStreamReader(is); + BufferedReader br = new BufferedReader(isr); + String line=null; + while ( (line = br.readLine()) != null) + System.out.println(line); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + } +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java b/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java index 4fedc9a..b4f4238 100755 --- a/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java +++ b/src/main/java/li/netcube/mcvm/util/vm/MachineManager.java @@ -1,90 +1,109 @@ -package li.netcube.mcvm.util.vm; - -import li.netcube.mcvm.MCVM; -import org.apache.commons.io.FileUtils; -import net.minecraft.server.MinecraftServer; -import org.apache.commons.lang3.SystemUtils; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; - -public class MachineManager { - // Images - - - - public static boolean createHddImage(File img_file, String size) { - Process process; - Runtime r = Runtime.getRuntime(); - boolean success = false; - try { - ProcessBuilder builder = new ProcessBuilder(); - File gameFolder = new File("."); - if (SystemUtils.IS_OS_WINDOWS) { - process = Runtime.getRuntime().exec("bin\\qemu\\qemu-img.exe create -f qcow2 " + "\"" + img_file + "\" " + size, null, gameFolder); - process.waitFor(); - } else if (SystemUtils.IS_OS_LINUX) { - process = Runtime.getRuntime().exec("qemu-img create -f qcow2 \"" + img_file + "\" " + size, null, gameFolder); - process.waitFor(); - } - //builder.redirectOutput(new File("syslog.txt")); - //builder.redirectError(new File("errlog.txt")); - - success = img_file.exists(); - } catch (InterruptedException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - - return success; - } - - public static boolean createFloppyImage(File img_file) { - Runtime r = Runtime.getRuntime(); - boolean success = false; - File blank_img = new File("resource/blank.img"); - try { - FileUtils.copyFile(blank_img, img_file); - success = true; - } catch (IOException e) { - e.printStackTrace(); - } - return success; - } - - public static boolean checkImage(File img_file) { - return img_file.exists(); - } - - // End Images - - - // Image Tools - - public static File getImageFile(String filename, String type, MinecraftServer server) { - if (server.isDedicatedServer()) { - return new File(server.getFolderName() + "/" + filename + type); - } else { - return new File("saves/" + server.getFolderName() + "/" + filename + type); - } - } - - // End Image Tools - - - // Machines - - public static void startMachine(VirtualMachine vm) { - vm.start(); - } - - public static void stopMachine(VirtualMachine vm) { - vm.stop(); - } - - // End Machines - -} +package li.netcube.mcvm.util.vm; + +import li.netcube.mcvm.MCVM; +import li.netcube.mcvm.util.StreamGobbler; +import org.apache.commons.io.FileUtils; +import net.minecraft.server.MinecraftServer; +import org.apache.commons.lang3.SystemUtils; +import org.lwjgl.Sys; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +public class MachineManager { + // Images + + + + public static boolean createHddImage(File img_file, String size) { + Process process; + Runtime r = Runtime.getRuntime(); + boolean success = false; + try { + List commandLine = new ArrayList(); + ProcessBuilder processBuilder = new ProcessBuilder(); + + if (SystemUtils.IS_OS_WINDOWS) { + commandLine.add("bin/qemu/qemu-img.exe"); + } else if (SystemUtils.IS_OS_LINUX) { + commandLine.add("qemu-img"); + } + + commandLine.add("create"); + commandLine.add("-f"); + commandLine.add("qcow2"); + commandLine.add(img_file.toString()); + commandLine.add(size); + + String[] aCommandLine = new String[commandLine.size()]; + aCommandLine = commandLine.toArray(aCommandLine); + + File gameFolder = new File(new File("./").getAbsolutePath()).getParentFile(); + + if (SystemUtils.IS_OS_WINDOWS || SystemUtils.IS_OS_LINUX) { + //this.process = Runtime.getRuntime().exec(String.join(" ", commandLine), null, gameFolder); + process = Runtime.getRuntime().exec(aCommandLine, null, gameFolder); + StreamGobbler errorGobbler = new StreamGobbler(process.getErrorStream()); + StreamGobbler outputGobbler = new StreamGobbler(process.getInputStream()); + errorGobbler.start(); + outputGobbler.start(); + process.waitFor(); + } + success = img_file.exists(); + } catch (InterruptedException | IOException e) { + e.printStackTrace(); + } + + return success; + } + + public static boolean createFloppyImage(File img_file) { + Runtime r = Runtime.getRuntime(); + boolean success = false; + File blank_img = new File("resource/blank.img"); + try { + FileUtils.copyFile(blank_img, img_file); + success = true; + } catch (IOException e) { + e.printStackTrace(); + } + return success; + } + + public static boolean checkImage(File img_file) { + return img_file.exists(); + } + + // End Images + + + // Image Tools + + public static File getImageFile(String filename, String type, MinecraftServer server) { + if (server.isDedicatedServer()) { + return new File(server.getFolderName() + "/" + filename + type); + } else { + return new File("saves/" + server.getFolderName() + "/" + filename + type); + } + } + + // End Image Tools + + + // Machines + + public static void startMachine(VirtualMachine vm) { + vm.start(); + } + + public static void stopMachine(VirtualMachine vm) { + vm.stop(); + } + + // End Machines + +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java b/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java index 102bcff..bc7fa1d 100755 --- a/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java +++ b/src/main/java/li/netcube/mcvm/util/vm/VirtualMachine.java @@ -1,342 +1,423 @@ -package li.netcube.mcvm.util.vm; - -import li.netcube.mcvm.MCVM; - -import java.io.*; -import java.util.concurrent.TimeUnit; - -import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; -import li.netcube.mcvm.util.tcpClient.*; -import li.netcube.mcvm.util.vm.commands.ICommandParser; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import org.apache.commons.lang3.SystemUtils; -import org.lwjgl.Sys; - - -public class VirtualMachine { - public File hdd0 = null; - public File hdd1 = null; - - public File floppy0 = null; - public File floppy1 = null; - - public File cd0 = null; - public File cd1 = null; - - public String memory; - - public Process process = null; - - public String nic = null; - - public int id = 0; - - public int VNCPort = 40000; - public int MONPort = 40100; - public int COMPort = 40200; - - public String password; - - public TCPClient monitor; - public TCPClient serial; - - public BlockPos computerPos; - - private Thread serialThread; - private Thread processWatcherThread; - - private ComputerContainerTileEntity ccte; - - - public VirtualMachine(ComputerContainerTileEntity ccte, int id, String password, String memory, File hdd0, File hdd1, File floppy0, File floppy1, File cd0, File cd1, String nic, BlockPos computerPos) { - this.ccte = ccte; - - this.id = id; - - this.VNCPort = 40000 + id; - this.MONPort = 40100 + id; - this.COMPort = 40200 + id; - - this.memory = memory; - this.hdd0 = hdd0; - this.hdd1 = hdd1; - this.floppy0 = floppy0; - this.floppy1 = floppy1; - this.cd0 = cd0; - this.cd1 = cd1; - - this.nic = nic; - - this.computerPos = computerPos; - - this.password = password; - } - - public void setUid(int id) { - - this.id = id; - - this.VNCPort = 40000 + id; - this.MONPort = 40100 + id; - this.COMPort = 40200 + id; - } - - public void setPassword(String password) { - this.password = password; - //System.out.println(this.password); - } - - public void start() { - if (this.process == null || !this.process.isAlive()) { - if (!(this.memory.contains("256") || this.memory.contains("512") || this.memory.contains("768") || this.memory.contains("1024"))) { - return; - } - - //If qemu is already running try to stop it. - try { - TCPClient tmpMon = new TCPClient("127.0.0.1", this.MONPort); - tmpMon.getOutputStream().write(("quit\n").getBytes("UTF-8")); - tmpMon.getOutputStream().flush(); - tmpMon.close(); - } catch (Exception ignored) {} - - //-accel hax - //-accel tcg,thread=multi - - String commandLine = "-vga std -smp 4 -usbdevice tablet -k bin/qemu/keymaps/mcvm -boot menu=on,splash=resource/splash.bmp,splash-time=2500 -monitor tcp::" + MONPort + ",server,nowait -serial tcp::" + COMPort + ",server,nowait -vnc :" + (VNCPort - 5900) + ",password"; - - if (!MCVM.modConfig.getString("VirtualMachine", "customArguments", "").equals("")) { - commandLine += " " + MCVM.modConfig.getString("VirtualMachine","customArguments", ""); - } - - if (this.nic != null) commandLine = commandLine + " -netdev user,id=n0 -device " + this.nic + ",netdev=n0"; - else commandLine = commandLine + " -net none"; - - if (this.hdd0 != null) commandLine = commandLine + " -drive if=ide,index=0,media=disk,file=\"" + this.hdd0 + "\""; - if (this.hdd1 != null) commandLine = commandLine + " -drive if=ide,index=1,media=disk,file=\"" + this.hdd1 + "\""; - commandLine = commandLine + " -drive if=ide,index=2,media=cdrom" + ((this.cd0 != null) ? ",file=\"" + this.cd0 + "\"" : ""); - commandLine = commandLine + " -drive if=ide,index=3,media=cdrom" + ((this.cd1 != null) ? ",file=\"" + this.cd1 + "\"" : ""); - - commandLine = commandLine + " -drive if=floppy,index=0" + ((this.floppy0 != null) ? ",file=\"" + this.floppy0 + "\"" : ""); - commandLine = commandLine + " -drive if=floppy,index=1" + ((this.floppy1 != null) ? ",file=\"" + this.floppy1 + "\"" : ""); - - commandLine = commandLine + " -m " + this.memory; - - Runtime r = Runtime.getRuntime(); - try { - ProcessBuilder builder = new ProcessBuilder(); - File gameFolder = new File(new File("./").getAbsolutePath()).getParentFile(); - if (SystemUtils.IS_OS_WINDOWS) { - this.process = Runtime.getRuntime().exec("bin/qemu/qemu-system-x86_64w.exe " + commandLine, null, gameFolder); - } else if (SystemUtils.IS_OS_LINUX) { - this.process = Runtime.getRuntime().exec("qemu-system-x86_64 " + commandLine, null, gameFolder); - } - builder.directory(gameFolder); - //System.out.println(commandLine); - //builder.redirectOutput(new File("vmlog.txt")); - //builder.redirectError(new File("errlog.txt")); - //System.out.println(); - - MCVM.virtualMachines.add(this); - - Thread.sleep(500); - - this.monitor = new TCPClient("127.0.0.1", this.MONPort); - this.serial = new TCPClient("127.0.0.1", this.COMPort); - - this.monitor.getOutputStream().write(("change vnc password" + "\n").getBytes("UTF-8")); - this.monitor.getOutputStream().write((this.password + "\n").getBytes("UTF-8")); - //System.out.println(this.password); - this.monitor.getOutputStream().flush(); - - serialThread = new Thread() { - public void run() { - try { - InputStream is = serial.getInputStream(); - OutputStream os = serial.getOutputStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(is)); - BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); - String lastCommand; - - while (process.isAlive()) { - try { - lastCommand = br.readLine(); - bw.write(parseCommand(lastCommand)); - bw.newLine(); - bw.flush(); - } catch (Exception ignored) {} - } - - } catch (Exception ignored) {} - } - }; - serialThread.start(); - - processWatcherThread = new Thread() { - public void run() { - while (process.isAlive()) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - TileEntity tileEntity = ccte; - if (tileEntity instanceof ComputerContainerTileEntity) { - ((ComputerContainerTileEntity) tileEntity).outPowerSides = new int[] {0,0,0,0,0,0}; - ccte.setPoweredOn(false); - ccte.getWorld().notifyNeighborsOfStateChange(computerPos, ccte.getWorld().getBlockState(computerPos).getBlock(), true); - } - } - }; - processWatcherThread.start(); - - ccte.setPoweredOn(true); - - ccte.getWorld().scheduleBlockUpdate(computerPos, ccte.getWorld().getBlockState(computerPos).getBlock(), 4, 1); - - } catch (Exception ignored) { - //ignored.printStackTrace(); - } - } - } - - public void stop() { - try { - if (this.isRunning()) { - //this.monitor.getOutputStream().write("quit\n".getBytes("UTF-8")); - //this.monitor.getOutputStream().flush(); - //this.process.waitFor(5, TimeUnit.SECONDS); - if (this.isRunning()) { - this.process.destroyForcibly(); - } - MCVM.virtualMachines.remove(this); - serialThread.stop(); - processWatcherThread.stop(); - serial.close(); - monitor.close(); - ccte.setPoweredOn(false); - } - } catch (Exception ignored) {} - } - - public void reset() { - //system_reset - try { - if (this.isRunning()) { - this.monitor.getOutputStream().write(("system_reset\n").getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - - while (this.monitor.getInputStream().available() > 0) { - //System.out.print((char)this.monitor.getInputStream().read()); - this.monitor.getInputStream().read(); - } - } - } catch (Exception ignored) {} - } - - public void setFloppy0(File file) { - try { - this.floppy0 = file; - if (this.isRunning()) { - this.monitor.getOutputStream().write("eject -f floppy0\n".getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - if (this.floppy0 != null) { - this.monitor.getOutputStream().write(("change floppy0 \"" + this.floppy0.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - } - //System.out.println("FLOPPY0 CHANGE!"); - - while (this.monitor.getInputStream().available() > 0) { - //System.out.print((char)this.monitor.getInputStream().read()); - this.monitor.getInputStream().read(); - } - } - } catch (Exception ignored) {} - } - - public void setFloppy1(File file) { - try { - this.floppy1 = file; - if (this.isRunning()) { - this.monitor.getOutputStream().write("eject -f floppy1\n".getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - if (this.floppy1 != null) { - this.monitor.getOutputStream().write(("change floppy1 \"" + this.floppy1.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - } - //System.out.println("FLOPPY1 CHANGE!"); - - while (this.monitor.getInputStream().available() > 0) { - //System.out.print((char)this.monitor.getInputStream().read()); - this.monitor.getInputStream().read(); - } - } - } catch (Exception ignored) {} - } - - public void setCd0(File file) { - try { - this.cd0 = file; - if (this.isRunning()) { - this.monitor.getOutputStream().write("eject -f ide1-cd0\n".getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - if (this.cd0 != null) { - this.monitor.getOutputStream().write(("change ide1-cd0 \"" + this.cd0.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - } - //System.out.println("IDE1-CD0 CHANGE!"); - - while (this.monitor.getInputStream().available() > 0) { - //System.out.print((char)this.monitor.getInputStream().read()); - this.monitor.getInputStream().read(); - } - } - } catch (Exception ignored) {} - } - - public void setCd1(File file) { - try { - this.cd1 = file; - if (this.isRunning()) { - this.monitor.getOutputStream().write("eject -f ide1-cd1\n".getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - if (this.cd1 != null) { - this.monitor.getOutputStream().write(("change ide1-cd1 \"" + this.cd1.toString().replace("\\", "\\\\") + "\"\n").getBytes("UTF-8")); - this.monitor.getOutputStream().flush(); - } - //System.out.println("IDE1-CD1 CHANGE!"); - - while (this.monitor.getInputStream().available() > 0) { - //System.out.print((char)this.monitor.getInputStream().read()); - this.monitor.getInputStream().read(); - } - } - } catch (Exception ignored) {} - } - - public boolean isRunning() { - if (this.process == null) { - return false; - } - if (this.process.isAlive()) { - return true; - } - return false; - } - - public String parseCommand(String command) { - TileEntity tileEntity = ccte; - World world = ccte.getWorld(); - if (tileEntity instanceof ComputerContainerTileEntity) { - for (ICommandParser commandParser : MCVM.registeredCommandParsers) { - if (commandParser.canHandleCommand(command, (ComputerContainerTileEntity)tileEntity)) { - return commandParser.parseCommand(command, (ComputerContainerTileEntity)tileEntity); - } - } - } - return "error.unknown.command"; - } -} +package li.netcube.mcvm.util.vm; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.google.gson.JsonPrimitive; +import li.netcube.mcvm.MCVM; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import li.netcube.mcvm.util.StreamGobbler; +import li.netcube.mcvm.util.tcpClient.*; +import li.netcube.mcvm.util.vm.commands.ICommandParser; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.apache.commons.lang3.SystemUtils; +import org.lwjgl.Sys; + + +public class VirtualMachine { + public File hdd0 = null; + public File hdd1 = null; + + public File floppy0 = null; + public File floppy1 = null; + + public File cd0 = null; + public File cd1 = null; + + public String memory; + + public Process process = null; + + public String nic = null; + + public int id = 0; + + public int VNCPort = 40000; + public int MONPort = 40100; + public int COMPort = 40200; + + public String password; + + public TCPClient monitor; + public TCPClient serial; + + public BlockPos computerPos; + + private Thread serialThread; + private Thread processWatcherThread; + + private ComputerContainerTileEntity ccte; + + + public VirtualMachine(ComputerContainerTileEntity ccte, int id, String password, String memory, File hdd0, File hdd1, File floppy0, File floppy1, File cd0, File cd1, String nic, BlockPos computerPos) { + this.ccte = ccte; + + this.id = id; + + this.VNCPort = 40000 + id; + this.MONPort = 40100 + id; + this.COMPort = 40200 + id; + + this.memory = memory; + this.hdd0 = hdd0; + this.hdd1 = hdd1; + this.floppy0 = floppy0; + this.floppy1 = floppy1; + this.cd0 = cd0; + this.cd1 = cd1; + + this.nic = nic; + + this.computerPos = computerPos; + + this.password = password; + } + + public void setUid(int id) { + + this.id = id; + + this.VNCPort = 40000 + id; + this.MONPort = 40100 + id; + this.COMPort = 40200 + id; + } + + public void setPassword(String password) { + this.password = password; + //System.out.println(this.password); + } + + public void start() { + if (this.process == null || !this.process.isAlive()) { + if (!(this.memory.contains("256") || this.memory.contains("512") || this.memory.contains("768") || this.memory.contains("1024"))) { + return; + } + + //If qemu is already running try to stop it. + try { + TCPClient tmpMon = new TCPClient("127.0.0.1", this.MONPort); + tmpMon.getOutputStream().write(("quit\n").getBytes(StandardCharsets.UTF_8)); + tmpMon.getOutputStream().flush(); + tmpMon.close(); + } catch (Exception ignored) { + } + + //-accel hax + //-accel tcg,thread=multi + + List commandLine = new ArrayList(); + + if (SystemUtils.IS_OS_WINDOWS) { + commandLine.add("bin/qemu/qemu-system-x86_64w.exe"); + } else if (SystemUtils.IS_OS_LINUX) { + commandLine.add("qemu-system-x86_64"); + } + + commandLine.add("-vga"); + commandLine.add("std"); + commandLine.add("-smp"); + commandLine.add("4"); + commandLine.add("-usbdevice"); + commandLine.add("tablet"); + commandLine.add("-k"); + commandLine.add("bin/qemu/keymaps/mcvm"); + commandLine.add("-boot"); + commandLine.add("menu=on,splash=resource/splash.bmp,splash-time=2500"); + commandLine.add("-monitor"); + commandLine.add("tcp::" + MONPort + ",server,nowait"); + commandLine.add("-serial"); + commandLine.add("tcp::" + COMPort + ",server,nowait"); + commandLine.add("-vnc"); + commandLine.add(":" + (VNCPort - 5900) + ",password"); + + if (!MCVM.modConfig.getString("VirtualMachine", "customArguments", "").equals("")) { + commandLine.add(MCVM.modConfig.getString("VirtualMachine", "customArguments", "")); + } + + if (this.nic != null) { + commandLine.add("-netdev"); + commandLine.add("user,id=n0"); + commandLine.add("-device"); + commandLine.add(this.nic + ",netdev=n0"); + } else { + commandLine.add("-net"); + commandLine.add("none"); + } + + if (this.hdd0 != null) { + commandLine.add("-drive"); + commandLine.add("if=ide,index=0,media=disk,file=" + this.hdd0); + } + if (this.hdd1 != null) { + commandLine.add("-drive"); + commandLine.add("if=ide,index=1,media=disk,file=" + this.hdd1); + } + + commandLine.add("-drive"); commandLine.add("if=ide,index=2,media=cdrom" + ((this.cd0 != null) ? ",file=" + this.cd0 : "")); + commandLine.add("-drive"); commandLine.add("if=ide,index=3,media=cdrom" + ((this.cd1 != null) ? ",file=" + this.cd1 : "")); + + commandLine.add("-drive"); commandLine.add("if=floppy,index=0" + ((this.floppy0 != null) ? ",file=" + this.floppy0 : "")); + commandLine.add("-drive"); commandLine.add("if=floppy,index=1" + ((this.floppy1 != null) ? ",file=" + this.floppy1 : "")); + + commandLine.add("-m"); commandLine.add(this.memory); + + try { + String[] aCommandLine = new String[commandLine.size()]; + aCommandLine = commandLine.toArray(aCommandLine); + + File gameFolder = new File(new File("./").getAbsolutePath()).getParentFile(); + + if (SystemUtils.IS_OS_WINDOWS || SystemUtils.IS_OS_LINUX) { + //this.process = Runtime.getRuntime().exec(String.join(" ", commandLine), null, gameFolder); + this.process = Runtime.getRuntime().exec(aCommandLine, null, gameFolder); + } + + StreamGobbler errorGobbler = new StreamGobbler(this.process.getErrorStream()); + StreamGobbler outputGobbler = new StreamGobbler(this.process.getInputStream()); + errorGobbler.start(); + outputGobbler.start(); + + //builder.directory(gameFolder); + + System.out.println(commandLine); + //builder.inheritIO(); + //builder.redirectOutput(new File("mcvm_vmlog.txt")); + //builder.redirectError(new File("mcvm_vmerrlog.txt")); + System.out.println(); + + MCVM.virtualMachines.add(this); + + Thread.sleep(500); + + this.monitor = new TCPClient("127.0.0.1", this.MONPort); + this.serial = new TCPClient("127.0.0.1", this.COMPort); + + this.monitor.getOutputStream().write(("change vnc password" + "\n").getBytes("UTF-8")); + this.monitor.getOutputStream().write((this.password + "\n").getBytes("UTF-8")); + //System.out.println(this.password); + this.monitor.getOutputStream().flush(); + + serialThread = new Thread() { + public void run() { + try { + InputStream is = serial.getInputStream(); + OutputStream os = serial.getOutputStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(is)); + BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); + String lastCommand; + + while (process.isAlive()) { + try { + lastCommand = br.readLine(); + bw.write(parseCommand(lastCommand)); + bw.newLine(); + bw.flush(); + } catch (Exception ignored) {} + } + + } catch (Exception ignored) {} + } + }; + serialThread.start(); + + processWatcherThread = new Thread() { + public void run() { + while (process.isAlive()) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + TileEntity tileEntity = ccte; + if (tileEntity instanceof ComputerContainerTileEntity) { + ((ComputerContainerTileEntity) tileEntity).outPowerSides = new int[] {0,0,0,0,0,0}; + ccte.setPoweredOn(false); + ccte.getWorld().notifyNeighborsOfStateChange(computerPos, ccte.getWorld().getBlockState(computerPos).getBlock(), true); + } + } + }; + processWatcherThread.start(); + + ccte.setPoweredOn(true); + + ccte.getWorld().scheduleBlockUpdate(computerPos, ccte.getWorld().getBlockState(computerPos).getBlock(), 4, 1); + + } catch (Exception ignored) { + //ignored.printStackTrace(); + } + } + } + + public void stop() { + try { + if (this.isRunning()) { + //this.monitor.getOutputStream().write("quit\n".getBytes("UTF-8")); + //this.monitor.getOutputStream().flush(); + //this.process.waitFor(5, TimeUnit.SECONDS); + if (this.isRunning()) { + this.process.destroyForcibly(); + } + MCVM.virtualMachines.remove(this); + serialThread.stop(); + processWatcherThread.stop(); + serial.close(); + monitor.close(); + ccte.setPoweredOn(false); + } + } catch (Exception ignored) {} + } + + public void reset() { + //system_reset + try { + if (this.isRunning()) { + this.monitor.getOutputStream().write(("system_reset\n").getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setFloppy0(File file) { + try { + this.floppy0 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f floppy0\n".getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + if (this.floppy0 != null) { + this.monitor.getOutputStream().write(("change floppy0 \"" + this.floppy0.toString().replace("\\", "\\\\") + "\"\n").getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + } + //System.out.println("FLOPPY0 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setFloppy1(File file) { + try { + this.floppy1 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f floppy1\n".getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + if (this.floppy1 != null) { + this.monitor.getOutputStream().write(("change floppy1 \"" + this.floppy1.toString().replace("\\", "\\\\") + "\"\n").getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + } + //System.out.println("FLOPPY1 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setCd0(File file) { + try { + this.cd0 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f ide1-cd0\n".getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + if (this.cd0 != null) { + this.monitor.getOutputStream().write(("change ide1-cd0 \"" + this.cd0.toString().replace("\\", "\\\\") + "\"\n").getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + } + //System.out.println("IDE1-CD0 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public void setCd1(File file) { + try { + this.cd1 = file; + if (this.isRunning()) { + this.monitor.getOutputStream().write("eject -f ide1-cd1\n".getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + if (this.cd1 != null) { + this.monitor.getOutputStream().write(("change ide1-cd1 \"" + this.cd1.toString().replace("\\", "\\\\") + "\"\n").getBytes(StandardCharsets.UTF_8)); + this.monitor.getOutputStream().flush(); + } + //System.out.println("IDE1-CD1 CHANGE!"); + + while (this.monitor.getInputStream().available() > 0) { + //System.out.print((char)this.monitor.getInputStream().read()); + this.monitor.getInputStream().read(); + } + } + } catch (Exception ignored) {} + } + + public boolean isRunning() { + if (this.process == null) { + return false; + } + if (this.process.isAlive()) { + return true; + } + return false; + } + + private String parseCommand(String command) { + JsonParser jsonParser = new JsonParser(); + JsonObject jsonResponse = new JsonObject(); + boolean commandExecuted = false; + + if (isJSONValid(command)) { + JsonObject jsonCommand = jsonParser.parse(command).getAsJsonObject(); + ComputerContainerTileEntity tileEntity; + tileEntity = ccte; + World world = ccte.getWorld(); + for (ICommandParser commandParser : MCVM.registeredCommandParsers) { + if (commandParser.canHandleCommand(jsonCommand, tileEntity)) { + jsonResponse = commandParser.parseCommand(jsonCommand, tileEntity); + commandExecuted = true; + } + } + } else { + jsonResponse.add("result", new JsonPrimitive("error")); + jsonResponse.add("error", new JsonPrimitive("malformed input")); + } + + if (!commandExecuted) { + jsonResponse.add("result", new JsonPrimitive("error")); + jsonResponse.add("error", new JsonPrimitive("invalid parameter")); + jsonResponse.add("parameter", new JsonPrimitive("subsystem")); + } + + return jsonResponse.toString(); + } + + private static boolean isJSONValid(String jsonInString) { + try { + (new JsonParser()).parse(jsonInString); + return true; + } catch(com.google.gson.JsonSyntaxException ex) { + return false; + } + } +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java b/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java index 31833bb..d5942aa 100755 --- a/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java +++ b/src/main/java/li/netcube/mcvm/util/vm/commands/ICommandParser.java @@ -1,8 +1,9 @@ -package li.netcube.mcvm.util.vm.commands; - -import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; - -public interface ICommandParser { - boolean canHandleCommand(String command, ComputerContainerTileEntity computerTileEntity); - String parseCommand(String command, ComputerContainerTileEntity computerTileEntity); -} +package li.netcube.mcvm.util.vm.commands; + +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import com.google.gson.JsonObject; + +public interface ICommandParser { + boolean canHandleCommand(JsonObject command, ComputerContainerTileEntity computerTileEntity); + JsonObject parseCommand(JsonObject command, ComputerContainerTileEntity computerTileEntity); +} diff --git a/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java b/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java index 004fb0e..e0b1e0a 100755 --- a/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java +++ b/src/main/java/li/netcube/mcvm/util/vm/commands/RedstoneCommandParser.java @@ -1,117 +1,201 @@ -package li.netcube.mcvm.util.vm.commands; - -import li.netcube.mcvm.common.blocks.ComputerBlock; -import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; -import net.minecraft.util.EnumFacing; -import net.minecraft.world.World; - -public class RedstoneCommandParser implements ICommandParser { - @Override - public boolean canHandleCommand(String command, ComputerContainerTileEntity computerTileEntity) { - String[] commandParts = command.split("\\."); - if (commandParts.length >= 2) { - if (commandParts[0].equals("redstone") && (commandParts[1].equals("get") || commandParts[1].equals("set"))) { - return true; - } - } - return false; - } - - @Override - public String parseCommand(String command, ComputerContainerTileEntity computerTileEntity) { - String[] commandParts = command.split("\\."); - if (commandParts.length >= 2) switch (commandParts[0] + "." + commandParts[1] + "." + commandParts[2]) { - case "redstone.set.up": - computerTileEntity.setOutputState(EnumFacing.UP, Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.down": - computerTileEntity.setOutputState(EnumFacing.DOWN, Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.north": - computerTileEntity.setOutputState(EnumFacing.NORTH.getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.east": - computerTileEntity.setOutputState(EnumFacing.EAST.getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.south": - computerTileEntity.setOutputState(EnumFacing.SOUTH.getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.west": - computerTileEntity.setOutputState(EnumFacing.WEST.getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.top": - computerTileEntity.setOutputState(EnumFacing.UP, Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.bottom": - computerTileEntity.setOutputState(EnumFacing.DOWN, Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.front": - computerTileEntity.setOutputState(convertDirectionToFace("front", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.back": - computerTileEntity.setOutputState(convertDirectionToFace("back", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.left": - computerTileEntity.setOutputState(convertDirectionToFace("left", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - case "redstone.set.right": - computerTileEntity.setOutputState(convertDirectionToFace("right", computerTileEntity).getOpposite(), Integer.parseInt(commandParts[3])); - return "ok"; - - case "redstone.get.up": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.UP), EnumFacing.UP.getOpposite())); - case "redstone.get.down": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.DOWN), EnumFacing.DOWN.getOpposite())); - case "redstone.get.north": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.NORTH), EnumFacing.NORTH.getOpposite())); - case "redstone.get.east": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.EAST), EnumFacing.EAST.getOpposite())); - case "redstone.get.south": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.SOUTH), EnumFacing.SOUTH.getOpposite())); - case "redstone.get.west": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.WEST), EnumFacing.WEST.getOpposite())); - case "redstone.get.top": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.UP), EnumFacing.UP.getOpposite())); - case "redstone.get.bottom": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.DOWN), EnumFacing.DOWN.getOpposite())); - case "redstone.get.front": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("front", computerTileEntity)), convertDirectionToFace("front", computerTileEntity).getOpposite())); - case "redstone.get.back": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("back", computerTileEntity)), convertDirectionToFace("back", computerTileEntity).getOpposite())); - case "redstone.get.left": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("left", computerTileEntity)), convertDirectionToFace("left", computerTileEntity).getOpposite())); - case "redstone.get.right": - return Integer.toString(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("right", computerTileEntity)), convertDirectionToFace("right", computerTileEntity).getOpposite())); - } - return "error.parse.failed"; - } - - - public EnumFacing convertDirectionToFace(String dir, ComputerContainerTileEntity computerContainerTileEntity) { - World world = computerContainerTileEntity.getWorld(); - EnumFacing computerFacing = world.getBlockState(computerContainerTileEntity.getPos()).getValue(ComputerBlock.Properties.FACING); - - switch (dir.toLowerCase()) { - case "up": return EnumFacing.UP; - case "down": return EnumFacing.DOWN; - case "left": - switch (computerFacing) { - case NORTH: return EnumFacing.EAST; - case EAST: return EnumFacing.SOUTH; - case SOUTH: return EnumFacing.WEST; - case WEST: return EnumFacing.NORTH; - } break; - case "right": - switch (computerFacing) { - case NORTH: return EnumFacing.WEST; - case EAST: return EnumFacing.NORTH; - case SOUTH: return EnumFacing.EAST; - case WEST: return EnumFacing.SOUTH; - } break; - case "front": return computerFacing; - case "back": return computerFacing.getOpposite(); - } - - return computerFacing; - } +package li.netcube.mcvm.util.vm.commands; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; +import li.netcube.mcvm.common.blocks.ComputerBlock; +import li.netcube.mcvm.common.ui.ComputerContainerTileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; + +public class RedstoneCommandParser implements ICommandParser { + @Override + public boolean canHandleCommand(JsonObject command, ComputerContainerTileEntity computerTileEntity) { + if (command.has("subsystem")) + if (command.get("subsystem").getAsString().equals("redstone")) { + return true; + } + return false; + } + + @Override + public JsonObject parseCommand(JsonObject command, ComputerContainerTileEntity computerTileEntity) { + JsonObject response = new JsonObject(); + + String side = ""; + String action = ""; + int value = 0; + + if (command.has("subsystem")) { + response.add("subsystem", new JsonPrimitive(command.get("subsystem").getAsString())); + } + + if (command.has("side")) { + side = command.get("side").getAsString(); + response.add("side", new JsonPrimitive(command.get("side").getAsString())); + } + + if (command.has("action")) { + action = command.get("action").getAsString(); + response.add("action", new JsonPrimitive(command.get("action").getAsString())); + } + + if (command.has("value")) { + value = command.get("value").getAsInt(); + } + + if (action.toLowerCase().equals("set")) { + if (!command.has("value")) { + response.add("result", new JsonPrimitive("error")); + response.add("error", new JsonPrimitive("invalid parameter")); + response.add("parameter", new JsonPrimitive("value")); + return response; + } + switch (side) { + case "up": + computerTileEntity.setOutputState(EnumFacing.UP, value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "down": + computerTileEntity.setOutputState(EnumFacing.DOWN, value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "north": + computerTileEntity.setOutputState(EnumFacing.NORTH.getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "east": + computerTileEntity.setOutputState(EnumFacing.EAST.getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "south": + computerTileEntity.setOutputState(EnumFacing.SOUTH.getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "west": + computerTileEntity.setOutputState(EnumFacing.WEST.getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "top": + computerTileEntity.setOutputState(EnumFacing.UP, value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "bottom": + computerTileEntity.setOutputState(EnumFacing.DOWN, value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "front": + computerTileEntity.setOutputState(convertDirectionToFace("front", computerTileEntity).getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "back": + computerTileEntity.setOutputState(convertDirectionToFace("back", computerTileEntity).getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "left": + computerTileEntity.setOutputState(convertDirectionToFace("left", computerTileEntity).getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + case "right": + computerTileEntity.setOutputState(convertDirectionToFace("right", computerTileEntity).getOpposite(), value); + response.add("result", new JsonPrimitive("ok")); + return response; + default: + response.add("result", new JsonPrimitive("error")); + response.add("error", new JsonPrimitive("invalid parameter")); + response.add("parameter", new JsonPrimitive("side")); + return response; + } + } else if (action.toLowerCase().equals("get")) { + switch (side) { + case "up": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.UP), EnumFacing.UP.getOpposite()))); + return response; + case "down": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.DOWN), EnumFacing.DOWN.getOpposite()))); + return response; + case "north": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.NORTH), EnumFacing.NORTH.getOpposite()))); + return response; + case "redstone.get.east": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.EAST), EnumFacing.EAST.getOpposite()))); + return response; + case "redstone.get.south": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.SOUTH), EnumFacing.SOUTH.getOpposite()))); + return response; + case "redstone.get.west": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.WEST), EnumFacing.WEST.getOpposite()))); + return response; + case "redstone.get.top": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.UP), EnumFacing.UP.getOpposite()))); + return response; + case "redstone.get.bottom": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(EnumFacing.DOWN), EnumFacing.DOWN.getOpposite()))); + return response; + case "redstone.get.front": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("front", computerTileEntity)), convertDirectionToFace("front", computerTileEntity).getOpposite()))); + return response; + case "redstone.get.back": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("back", computerTileEntity)), convertDirectionToFace("back", computerTileEntity).getOpposite()))); + return response; + case "redstone.get.left": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("left", computerTileEntity)), convertDirectionToFace("left", computerTileEntity).getOpposite()))); + return response; + case "redstone.get.right": + response.add("result", new JsonPrimitive("ok")); + response.add("value", new JsonPrimitive(computerTileEntity.getWorld().getRedstonePower(computerTileEntity.getPos().offset(convertDirectionToFace("right", computerTileEntity)), convertDirectionToFace("right", computerTileEntity).getOpposite()))); + return response; + default: + response.add("result", new JsonPrimitive("error")); + response.add("error", new JsonPrimitive("invalid parameter")); + response.add("parameter", new JsonPrimitive("side")); + return response; + } + } else { + response.add("result", new JsonPrimitive("error")); + response.add("error", new JsonPrimitive("invalid action")); + response.add("parameter", new JsonPrimitive("side")); + return response; + } + } + + + public EnumFacing convertDirectionToFace(String dir, ComputerContainerTileEntity computerContainerTileEntity) { + World world = computerContainerTileEntity.getWorld(); + EnumFacing computerFacing = world.getBlockState(computerContainerTileEntity.getPos()).getValue(ComputerBlock.Properties.FACING); + + switch (dir.toLowerCase()) { + case "up": return EnumFacing.UP; + case "down": return EnumFacing.DOWN; + case "left": + switch (computerFacing) { + case NORTH: return EnumFacing.EAST; + case EAST: return EnumFacing.SOUTH; + case SOUTH: return EnumFacing.WEST; + case WEST: return EnumFacing.NORTH; + } break; + case "right": + switch (computerFacing) { + case NORTH: return EnumFacing.WEST; + case EAST: return EnumFacing.NORTH; + case SOUTH: return EnumFacing.EAST; + case WEST: return EnumFacing.SOUTH; + } break; + case "front": return computerFacing; + case "back": return computerFacing.getOpposite(); + } + + return computerFacing; + } } \ No newline at end of file