From 5b38f460d41189a93a219142097b9d0d7b830ac6 Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Sat, 19 Mar 2016 09:51:00 -0700 Subject: [PATCH 1/4] Drop support for Java 6. --- .travis.yml | 1 - build.gradle | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9321cf073..7013c738a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,6 @@ script: ./gradlew build -s jdk: - oraclejdk8 - oraclejdk7 - - openjdk6 # Caching for Gradle files, prevents hitting Maven too much. before_cache: - find $HOME/.gradle/ -name '*.lock' -print -exec rm -f {} \; diff --git a/build.gradle b/build.gradle index 144b8de13..21b89dafb 100644 --- a/build.gradle +++ b/build.gradle @@ -61,8 +61,8 @@ subprojects { version = '6.1.1-SNAPSHOT' ext.internalVersion = version + ";" + gitCommitHash - sourceCompatibility = 1.6 - targetCompatibility = 1.6 + sourceCompatibility = 1.7 + targetCompatibility = 1.7 checkstyle.configFile = new File(rootProject.projectDir, "config/checkstyle/checkstyle.xml") From ecc49486688dfed3c0a21c9672cfe1b34daa5ccc Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Sat, 19 Mar 2016 09:53:52 -0700 Subject: [PATCH 2/4] Switch to Forge 1.9 (12.16.0.1770) --- gradle/wrapper/gradle-wrapper.jar | Bin 53638 -> 53556 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 46 +++++----- gradlew.bat | 6 +- worldedit-forge/build.gradle | 6 +- .../sk89q/worldedit/forge/CommandWrapper.java | 7 +- .../sk89q/worldedit/forge/ForgeAdapter.java | 11 ++- .../worldedit/forge/ForgeBiomeRegistry.java | 40 +------- .../worldedit/forge/ForgeEntityType.java | 4 +- .../forge/ForgePermissionsProvider.java | 4 +- .../sk89q/worldedit/forge/ForgePlatform.java | 19 ++-- .../sk89q/worldedit/forge/ForgePlayer.java | 34 +++---- .../com/sk89q/worldedit/forge/ForgeWorld.java | 31 +++---- .../sk89q/worldedit/forge/ForgeWorldEdit.java | 86 +++++++++--------- .../sk89q/worldedit/forge/NBTConverter.java | 2 +- .../worldedit/forge/ThreadSafeCache.java | 7 +- .../worldedit/forge/TileEntityUtils.java | 10 +- .../worldedit/forge/WECUIPacketHandler.java | 10 +- .../worldedit/forge/gui/GuiReferenceCard.java | 1 - .../main/resources/META-INF/worldedit_at.cfg | 2 +- 20 files changed, 148 insertions(+), 182 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5ccda13e9cb94678ba179b32452cf3d60dc36353..ca78035ef0501d802d4fc55381ef2d5c3ce0ec6e 100644 GIT binary patch delta 3196 zcmZWr3p|ur8-KmyR>oMDacR^rlS{6H6j^MP8Ijx)(uLegD3n{4VRsa{b+RZeHnQD_ zarxTp<~kVnN|>@N5{Y#6rP%MCGrR3KzxDh1JBA@^ol`_J#j{1wTp6gl2?i%LV?UD(7;=S$mlak>u&Op6lXu5oR zzX|)2eSMDtPyQFTS)v(PyEMeJM1@+GDzWzAts|v2Z@n+gHLyC5%N63o8|glwcR5MY zMpWNpPLBi6&jv*%OyvKTpIbW_$2|LEx%=1Jc{l!ZR!P)5YpGz+*nXi*EwRE6=QHM# zzJ^&*?(S{ZaFfC;U2Dq;t8|HAE=;!ORbM-Dd{(2kg6p9z0;Z?=Fh)X3mhdBg8yXmvV#mNVV z2Fj+lu}y3~};C`Ug!I=JLl%yr*r>ccdwd%|8k*shZwV}TBSLlF=0clPsg z;ytc=dHKxh`bB%OOGSBOBD__^;Kre;GSuC+o+1s`^K$WU&S)4 z0}_6pp(nZOBebOLnbOLM%`_Juz28zUGsf#}AKjjBG2NP<@`)b9+CXl$wO#qFe$mwK zgIy{;B6xhLUgFeKed7I3og3n=raBK126nu=UN^1kt^AW|YF$o3jkQW|$s}?G9mv5I zD#m;_=l+W*XY|`>LJ;q>d6aeY;=t5h)i{pjw=%Uw{pM3kQwM@(EfX8fl{}VK&6VTu zN*`zF+2bn zlO3+HQoAan@?K)q_oG5gOI&VFshf4w+38{Hfi~VNffEO zhHf#iLkPvKvI=Ok)Vsr0?aI6-!KH3C7VeddV_&(d1+RHf)R=SnglNKxk&>VxpZ(Q2 z-3-#3>%%8Cf9z_tSz(;M?lbhXJL`&W)#cHbO1bMIj5|zI!@trS>N5CN=IF|N8{5!) z7eT^ORdbhna*#vk);B#*x89i`7gg1|ezY!*eUeJ5o)3$t%RN71w`bA$<&4ZfD~wGO z#QN&tFw6eg_bkeHfQkPs1jqq@LV&FvJS%XdLx2bzx_X=}37xhmG7dV=qb&rEM*KrD zh@T&ZF`=Q8<)w3nxehDi;Mqtm*@T(9`Vg0*=mq`US|!U3US;y#e6l_*wg(UA;la zT3{#kPe#C=0d=shQAM~HXwI+~b~b9^u)7+BH*WrNXM>xK+xT4uW*QBlUDvb)TDK-E zXfHN7LHn#J9NK-&yP+*__JkH~ISB2M7Eglk9Su5LoZ*maD+%Qh;dSlQstlo{7!;}u zm>ddNRTc*ot#}CkioqN*Fyg3!53O<#l4>KNWD_X1Y|~WZr(is;-}n%Ffl!qZL>rs- z-+whs12ah6Ly!PPZR?=E0n^iMA-vE=CG+(oy|OXI;s{bhKoH8`V$9Ysw*wl-2y%|8 z9m}o}K@bldf|v<$)Ik!54nuP}Bvf}F7J5ApZI^?xFCQc(p$f@TfN8t&|9y%l+KD1W zz-rgxHvzcQP7+Z8-R&FTulaTo%J2oWUKP;qyAD`(;34eTK|&uM0lrxjklvx7#@~Hc zn>FiyMiFEQo6grl`R@BeqH};MSouqj?874%uJq{xixtn0I+qon(AnLDV0_~LFpw=H) zf-p>PEu>A2hD7BUGWe}aP!T1r)BA!Lf)q$2h^7#^Ee=-X9FGV0I0ACvai6|&to&>L z+O5k;f0ZBsZg;JRmGyLy(EMajc#8t?-SG1S>fI#tL>d@N`})gbpTnRX=b^Zx+ZYO0 zFz8Jt25EzHeS$4<=^>$4N+2t{hYVMUJ`niw0yfJ+tauZl!gET$)Uv4zuj}j}f-2wy zFKPZ>#%NBsAI4s{>!c9GLP!_|410IM63+CJQ2kq2?FL`wUe|ahG9Sx#18V`{9Wkl= zl25gdBG{Ea5~^8^!KwhCF2kQJtl4%zarynki-I%QLVv~* znhVv)tq0_OI!to3A6t~WP-pOq9Dhe4+=;>O?m;-aM;s6a)XD!o!2XF@!%PEC1IFTn HMn3jGMa%;~ delta 3281 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 Q*N8{Jw?_tozO7vHf9)yu{r~^~ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b2c6e7a02..c76e8f2d8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Feb 22 17:40:44 PST 2016 +#Thu May 05 15:11:12 PDT 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.11-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip diff --git a/gradlew b/gradlew index 9d82f7891..27309d923 100755 --- a/gradlew +++ b/gradlew @@ -6,12 +6,30 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,26 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -85,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then diff --git a/gradlew.bat b/gradlew.bat index 72d362daf..f6d5974e7 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @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 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= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/worldedit-forge/build.gradle b/worldedit-forge/build.gradle index 41e0f4126..b7cae2c0e 100644 --- a/worldedit-forge/build.gradle +++ b/worldedit-forge/build.gradle @@ -27,12 +27,12 @@ repositories { } version = "6.1.1" -ext.forgeVersion = "11.15.1.1760" +ext.forgeVersion = "12.16.1.1891" ext.internalVersion = version + ";" + gitCommitHash minecraft { - version = "1.8.9-${project.forgeVersion}" - mappings = "snapshot_20160111" + version = "1.9-${project.forgeVersion}" + mappings = "snapshot_20160505" runDir = 'run' replaceIn "com/sk89q/worldedit/forge/ForgeWorldEdit.java" diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java index 2b555c851..eef6df939 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/CommandWrapper.java @@ -25,8 +25,10 @@ import java.util.Arrays; import java.util.List; import javax.annotation.Nullable; import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; +import net.minecraft.server.MinecraftServer; public class CommandWrapper extends CommandBase { private CommandMapping command; @@ -46,7 +48,8 @@ public class CommandWrapper extends CommandBase { } @Override - public void processCommand(ICommandSender var1, String[] var2) {} + public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException { + } @Override public String getCommandUsage(ICommandSender icommandsender) { @@ -59,7 +62,7 @@ public class CommandWrapper extends CommandBase { } @Override - public boolean canCommandSenderUseCommand(ICommandSender sender) { + public boolean checkPermission(MinecraftServer server, ICommandSender sender) { return true; } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java index 9c64b9403..57b8e1f2e 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeAdapter.java @@ -21,8 +21,9 @@ package com.sk89q.worldedit.forge; import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.world.World; -import net.minecraft.util.BlockPos; -import net.minecraft.util.Vec3; + +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; final class ForgeAdapter { @@ -33,7 +34,7 @@ final class ForgeAdapter { return new ForgeWorld(world); } - public static Vector adapt(Vec3 vector) { + public static Vector adapt(Vec3d vector) { return new Vector(vector.xCoord, vector.yCoord, vector.zCoord); } @@ -41,8 +42,8 @@ final class ForgeAdapter { return new Vector(pos.getX(), pos.getY(), pos.getZ()); } - public static Vec3 toVec3(Vector vector) { - return new Vec3(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()); + public static Vec3d toVec3(Vector vector) { + return new Vec3d(vector.getBlockX(), vector.getBlockY(), vector.getBlockZ()); } public static BlockPos toBlockPos(Vector vector) { diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java index 6de863048..6dd3d515d 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeBiomeRegistry.java @@ -19,29 +19,20 @@ package com.sk89q.worldedit.forge; -import com.google.common.collect.HashBiMap; import com.sk89q.worldedit.world.biome.BaseBiome; import com.sk89q.worldedit.world.biome.BiomeData; import com.sk89q.worldedit.world.registry.BiomeRegistry; import net.minecraft.world.biome.BiomeGenBase; -import javax.annotation.Nullable; - import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * Provides access to biome data in Forge. */ class ForgeBiomeRegistry implements BiomeRegistry { - private static Map biomes = Collections.emptyMap(); - private static Map biomeData = Collections.emptyMap(); - @Nullable @Override public BaseBiome createFromId(int id) { return new BaseBiome(id); @@ -50,38 +41,15 @@ class ForgeBiomeRegistry implements BiomeRegistry { @Override public List getBiomes() { List list = new ArrayList(); - for (int biome : biomes.keySet()) { - list.add(new BaseBiome(biome)); + for (BiomeGenBase biome : BiomeGenBase.REGISTRY) { + list.add(new BaseBiome(BiomeGenBase.getIdForBiome(biome))); } return list; } - @Nullable @Override public BiomeData getData(BaseBiome biome) { - return biomeData.get(biome.getId()); - } - - /** - * Populate the internal static list of biomes. - * - *

If called repeatedly, the last call will overwrite all previous - * calls.

- */ - static void populate() { - Map biomes = HashBiMap.create(); - Map biomeData = new HashMap(); - - for (BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) { - if ((biome == null) || (biomes.containsValue(biome))) { - continue; - } - biomes.put(biome.biomeID, biome); - biomeData.put(biome.biomeID, new ForgeBiomeData(biome)); - } - - ForgeBiomeRegistry.biomes = biomes; - ForgeBiomeRegistry.biomeData = biomeData; + return new ForgeBiomeData(BiomeGenBase.getBiome(biome.getId())); } /** @@ -101,7 +69,7 @@ class ForgeBiomeRegistry implements BiomeRegistry { @Override public String getName() { - return biome.biomeName; + return biome.getBiomeName(); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityType.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityType.java index c56375105..a7a4b3cbd 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityType.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeEntityType.java @@ -25,6 +25,7 @@ import net.minecraft.entity.EntityLiving; import net.minecraft.entity.IMerchant; import net.minecraft.entity.INpc; import net.minecraft.entity.IProjectile; +import net.minecraft.entity.item.EntityArmorStand; import net.minecraft.entity.item.EntityBoat; import net.minecraft.entity.item.EntityEnderEye; import net.minecraft.entity.item.EntityFallingBlock; @@ -38,7 +39,6 @@ import net.minecraft.entity.monster.EntityGolem; import net.minecraft.entity.passive.EntityAmbientCreature; import net.minecraft.entity.passive.EntityAnimal; import net.minecraft.entity.passive.EntityTameable; -import net.minecraft.entity.passive.IAnimals; import net.minecraft.entity.player.EntityPlayer; import static com.google.common.base.Preconditions.checkNotNull; @@ -139,6 +139,6 @@ public class ForgeEntityType implements EntityType { @Override public boolean isArmorStand() { - return false; // TODO re-add when forge version is updated to 1.8: entity instanceof EntityArmorStand; + return entity instanceof EntityArmorStand; } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java index c68131265..0c9b0542f 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePermissionsProvider.java @@ -43,8 +43,8 @@ public interface ForgePermissionsProvider { public boolean hasPermission(EntityPlayerMP player, String permission) { ForgeConfiguration configuration = platform.getConfiguration(); return configuration.cheatMode || - FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().canSendCommands(player.getGameProfile()) || - (configuration.creativeEnable && player.theItemInWorldManager.getGameType() == GameType.CREATIVE); + FMLCommonHandler.instance().getMinecraftServerInstance().getPlayerList().canSendCommands(player.getGameProfile()) || + (configuration.creativeEnable && player.interactionManager.getGameType() == GameType.CREATIVE); } @Override diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java index 7edb92b3a..5adab0ec0 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlatform.java @@ -35,7 +35,7 @@ import net.minecraft.entity.EntityList; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.management.ServerConfigurationManager; +import net.minecraft.server.management.PlayerList; import net.minecraft.world.WorldServer; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.fml.common.FMLCommonHandler; @@ -43,7 +43,6 @@ import net.minecraftforge.fml.common.FMLCommonHandler; import javax.annotation.Nullable; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.EnumMap; import java.util.List; @@ -77,8 +76,7 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform { } } - for (Object itemObj : Item.itemRegistry) { - Item item = (Item) itemObj; + for (Item item : Item.REGISTRY) { if (item == null) continue; if (item.getUnlocalizedName() == null) continue; if (item.getUnlocalizedName().startsWith("item.")) { @@ -94,7 +92,7 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform { @Override public boolean isValidMobType(String type) { - return EntityList.stringToClassMapping.containsKey(type); + return EntityList.NAME_TO_CLASS.containsKey(type); } @Override @@ -109,8 +107,8 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform { @Override public List getWorlds() { - List worlds = Arrays.asList(DimensionManager.getWorlds()); - List ret = new ArrayList(worlds.size()); + WorldServer[] worlds = DimensionManager.getWorlds(); + List ret = new ArrayList(worlds.length); for (WorldServer world : worlds) { ret.add(new ForgeWorld(world)); } @@ -123,7 +121,7 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform { if (player instanceof ForgePlayer) { return player; } else { - EntityPlayerMP entity = server.getConfigurationManager().getPlayerByUsername(player.getName()); + EntityPlayerMP entity = server.getPlayerList().getPlayerByUsername(player.getName()); return entity != null ? new ForgePlayer(this, entity) : null; } } @@ -202,9 +200,8 @@ class ForgePlatform extends AbstractPlatform implements MultiUserPlatform { @Override public Collection getConnectedUsers() { List users = new ArrayList(); - ServerConfigurationManager scm = server.getConfigurationManager(); - for (String name : scm.getAllUsernames()) { - EntityPlayerMP entity = scm.getPlayerByUsername(name); + PlayerList scm = server.getPlayerList(); + for (EntityPlayerMP entity : scm.getPlayerList()) { if (entity != null) { users.add(new ForgePlayer(this, entity)); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java index 4553c1694..d01c7f6e6 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgePlayer.java @@ -30,18 +30,17 @@ import com.sk89q.worldedit.internal.cui.CUIEvent; import com.sk89q.worldedit.session.SessionKey; import com.sk89q.worldedit.util.Location; +import io.netty.buffer.Unpooled; +import java.util.UUID; +import javax.annotation.Nullable; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.server.S3FPacketCustomPayload; -import net.minecraft.util.ChatComponentText; -import io.netty.buffer.Unpooled; -import net.minecraft.util.EnumChatFormatting; - -import javax.annotation.Nullable; - -import java.util.UUID; +import net.minecraft.network.play.server.SPacketCustomPayload; +import net.minecraft.util.EnumHand; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.TextFormatting; public class ForgePlayer extends AbstractPlayerActor { @@ -61,7 +60,7 @@ public class ForgePlayer extends AbstractPlayerActor { @Override public int getItemInHand() { - ItemStack is = this.player.getCurrentEquippedItem(); + ItemStack is = this.player.getHeldItem(EnumHand.MAIN_HAND); return is == null ? 0 : Item.getIdFromItem(is.getItem()); } @@ -85,6 +84,7 @@ public class ForgePlayer extends AbstractPlayerActor { this.player.rotationPitch); } + @SuppressWarnings("deprecation") @Override public WorldVector getPosition() { return new WorldVector(LocalWorldAdapter.adapt(ForgeWorldEdit.inst.getWorld(this.player.worldObj)), this.player.posX, this.player.posY, this.player.posZ); @@ -118,36 +118,36 @@ public class ForgePlayer extends AbstractPlayerActor { send = send + "|" + StringUtil.joinString(params, "|"); } PacketBuffer buffer = new PacketBuffer(Unpooled.copiedBuffer(send.getBytes(WECUIPacketHandler.UTF_8_CHARSET))); - S3FPacketCustomPayload packet = new S3FPacketCustomPayload(ForgeWorldEdit.CUI_PLUGIN_CHANNEL, buffer); + SPacketCustomPayload packet = new SPacketCustomPayload(ForgeWorldEdit.CUI_PLUGIN_CHANNEL, buffer); this.player.playerNetServerHandler.sendPacket(packet); } @Override public void printRaw(String msg) { for (String part : msg.split("\n")) { - this.player.addChatMessage(new ChatComponentText(part)); + this.player.addChatMessage(new TextComponentString(part)); } } @Override public void printDebug(String msg) { - sendColorized(msg, EnumChatFormatting.GRAY); + sendColorized(msg, TextFormatting.GRAY); } @Override public void print(String msg) { - sendColorized(msg, EnumChatFormatting.LIGHT_PURPLE); + sendColorized(msg, TextFormatting.LIGHT_PURPLE); } @Override public void printError(String msg) { - sendColorized(msg, EnumChatFormatting.RED); + sendColorized(msg, TextFormatting.RED); } - private void sendColorized(String msg, EnumChatFormatting formatting) { + private void sendColorized(String msg, TextFormatting formatting) { for (String part : msg.split("\n")) { - ChatComponentText component = new ChatComponentText(part); - component.getChatStyle().setColor(formatting); + TextComponentString component = new TextComponentString(part); + component.getStyle().setColor(formatting); this.player.addChatMessage(component); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java index e89c46112..73db996d1 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorld.java @@ -58,16 +58,17 @@ import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.gen.ChunkProviderServer; import net.minecraft.world.gen.feature.WorldGenBigMushroom; import net.minecraft.world.gen.feature.WorldGenBigTree; +import net.minecraft.world.gen.feature.WorldGenBirchTree; import net.minecraft.world.gen.feature.WorldGenCanopyTree; -import net.minecraft.world.gen.feature.WorldGenForest; import net.minecraft.world.gen.feature.WorldGenMegaJungle; import net.minecraft.world.gen.feature.WorldGenMegaPineTree; import net.minecraft.world.gen.feature.WorldGenSavannaTree; @@ -89,9 +90,9 @@ public class ForgeWorld extends AbstractWorld { private static final int UPDATE = 1, NOTIFY = 2, NOTIFY_CLIENT = 4; private static final Logger logger = Logger.getLogger(ForgeWorld.class.getCanonicalName()); - private static final IBlockState JUNGLE_LOG = Blocks.log.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.JUNGLE); - private static final IBlockState JUNGLE_LEAF = Blocks.leaves.getDefaultState().withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.JUNGLE).withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); - private static final IBlockState JUNGLE_SHRUB = Blocks.leaves.getDefaultState().withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.OAK).withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + private static final IBlockState JUNGLE_LOG = Blocks.LOG.getDefaultState().withProperty(BlockOldLog.VARIANT, BlockPlanks.EnumType.JUNGLE); + private static final IBlockState JUNGLE_LEAF = Blocks.LEAVES.getDefaultState().withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.JUNGLE).withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); + private static final IBlockState JUNGLE_SHRUB = Blocks.LEAVES.getDefaultState().withProperty(BlockOldLeaf.VARIANT, BlockPlanks.EnumType.OAK).withProperty(BlockLeaves.CHECK_DECAY, Boolean.valueOf(false)); private final WeakReference worldRef; @@ -204,7 +205,7 @@ public class ForgeWorld extends AbstractWorld { @Override public BaseBiome getBiome(Vector2D position) { checkNotNull(position); - return new BaseBiome(getWorld().getBiomeGenForCoords(new BlockPos(position.getBlockX(), 0, position.getBlockZ())).biomeID); + return new BaseBiome(BiomeGenBase.getIdForBiome(getWorld().getBiomeGenForCoords(new BlockPos(position.getBlockX(), 0, position.getBlockZ())))); } @Override @@ -258,8 +259,6 @@ public class ForgeWorld extends AbstractWorld { return false; } ChunkProviderServer chunkServer = (ChunkProviderServer) provider; - IChunkProvider chunkProvider = chunkServer.serverChunkGenerator; - for (Vector2D coord : chunks) { long pos = ChunkCoordIntPair.chunkXZ2Int(coord.getBlockX(), coord.getBlockZ()); Chunk mcChunk; @@ -269,12 +268,12 @@ public class ForgeWorld extends AbstractWorld { } chunkServer.droppedChunksSet.remove(pos); chunkServer.id2ChunkMap.remove(pos); - mcChunk = chunkProvider.provideChunk(coord.getBlockX(), coord.getBlockZ()); + mcChunk = chunkServer.provideChunk(coord.getBlockX(), coord.getBlockZ()); chunkServer.id2ChunkMap.add(pos, mcChunk); chunkServer.loadedChunks.add(mcChunk); if (mcChunk != null) { mcChunk.onChunkLoad(); - mcChunk.populateChunk(chunkProvider, chunkProvider, coord.getBlockX(), coord.getBlockZ()); + mcChunk.populateChunk(chunkServer, chunkServer.chunkGenerator); } } } catch (Throwable t) { @@ -308,18 +307,18 @@ public class ForgeWorld extends AbstractWorld { case BIG_TREE: return new WorldGenBigTree(true); case REDWOOD: return new WorldGenTaiga2(true); case TALL_REDWOOD: return new WorldGenTaiga1(); - case BIRCH: return new WorldGenForest(true, false); + case BIRCH: return new WorldGenBirchTree(true, false); case JUNGLE: return new WorldGenMegaJungle(true, 10, 20, JUNGLE_LOG, JUNGLE_LEAF); case SMALL_JUNGLE: return new WorldGenTrees(true, 4 + random.nextInt(7), JUNGLE_LOG, JUNGLE_LEAF, false); case SHORT_JUNGLE: return new WorldGenTrees(true, 4 + random.nextInt(7), JUNGLE_LOG, JUNGLE_LEAF, true); case JUNGLE_BUSH: return new WorldGenShrub(JUNGLE_LOG, JUNGLE_SHRUB); - case RED_MUSHROOM: return new WorldGenBigMushroom(Blocks.brown_mushroom_block); - case BROWN_MUSHROOM: return new WorldGenBigMushroom(Blocks.red_mushroom_block); + case RED_MUSHROOM: return new WorldGenBigMushroom(Blocks.BROWN_MUSHROOM_BLOCK); + case BROWN_MUSHROOM: return new WorldGenBigMushroom(Blocks.RED_MUSHROOM_BLOCK); case SWAMP: return new WorldGenSwamp(); case ACACIA: return new WorldGenSavannaTree(true); case DARK_OAK: return new WorldGenCanopyTree(true); case MEGA_REDWOOD: return new WorldGenMegaPineTree(false, random.nextBoolean()); - case TALL_BIRCH: return new WorldGenForest(true, true); + case TALL_BIRCH: return new WorldGenBirchTree(true, true); case RANDOM: case PINE: case RANDOM_REDWOOD: @@ -390,9 +389,7 @@ public class ForgeWorld extends AbstractWorld { @Override public List getEntities(Region region) { List entities = new ArrayList(); - World world = getWorld(); - List ents = world.loadedEntityList; - for (net.minecraft.entity.Entity entity : ents) { + for (net.minecraft.entity.Entity entity : getWorld().loadedEntityList) { if (region.contains(new Vector(entity.posX, entity.posY, entity.posZ))) { entities.add(new ForgeEntity(entity)); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java index 5ae29054e..009e1cf13 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java @@ -19,6 +19,8 @@ package com.sk89q.worldedit.forge; +import net.minecraft.util.math.BlockPos; +import net.minecraftforge.fml.common.FMLCommonHandler; import org.apache.logging.log4j.Logger; import com.google.common.base.Joiner; @@ -39,7 +41,6 @@ import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.CommandEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; @@ -110,8 +111,6 @@ public class ForgeWorldEdit { WorldEdit.getInstance().getPlatformManager().unregister(platform); } - ForgeBiomeRegistry.populate(); - this.platform = new ForgePlatform(this); WorldEdit.getInstance().getPlatformManager().register(platform); @@ -135,13 +134,13 @@ public class ForgeWorldEdit { @SubscribeEvent public void onCommandEvent(CommandEvent event) { - if ((event.sender instanceof EntityPlayerMP)) { - if (((EntityPlayerMP) event.sender).worldObj.isRemote) return; - String[] split = new String[event.parameters.length + 1]; - System.arraycopy(event.parameters, 0, split, 1, event.parameters.length); - split[0] = event.command.getCommandName(); + if ((event.getSender() instanceof EntityPlayerMP)) { + if (((EntityPlayerMP) event.getSender()).worldObj.isRemote) return; + String[] split = new String[event.getParameters().length + 1]; + System.arraycopy(event.getParameters(), 0, split, 1, event.getParameters().length); + split[0] = event.getCommand().getCommandName(); com.sk89q.worldedit.event.platform.CommandEvent weEvent = - new com.sk89q.worldedit.event.platform.CommandEvent(wrap((EntityPlayerMP) event.sender), Joiner.on(" ").join(split)); + new com.sk89q.worldedit.event.platform.CommandEvent(wrap((EntityPlayerMP) event.getSender()), Joiner.on(" ").join(split)); WorldEdit.getInstance().getEventBus().post(weEvent); } } @@ -152,48 +151,49 @@ public class ForgeWorldEdit { return; } - if (!platform.isHookingEvents()) return; // We have to be told to catch these events + if (!platform.isHookingEvents()) + return; // We have to be told to catch these events - if (event.useItem == Result.DENY || event.entity.worldObj.isRemote) return; + if ((event instanceof PlayerInteractEvent.LeftClickBlock + && ((PlayerInteractEvent.LeftClickBlock) event) + .getUseItem() == Result.DENY) + || (event instanceof PlayerInteractEvent.RightClickBlock + && ((PlayerInteractEvent.RightClickBlock) event) + .getUseItem() == Result.DENY) + || event.getEntity().worldObj.isRemote) + return; WorldEdit we = WorldEdit.getInstance(); - ForgePlayer player = wrap((EntityPlayerMP) event.entityPlayer); - ForgeWorld world = getWorld(event.entityPlayer.worldObj); + ForgePlayer player = wrap((EntityPlayerMP) event.getEntityPlayer()); + ForgeWorld world = getWorld(event.getEntityPlayer().worldObj); - Action action = event.action; - switch (action) { - case LEFT_CLICK_BLOCK: { - WorldVector pos = new WorldVector(LocalWorldAdapter.adapt(world), event.pos.getX(), event.pos.getY(), event.pos.getZ()); + if (event instanceof PlayerInteractEvent.LeftClickBlock) { + @SuppressWarnings("deprecation") + WorldVector pos = new WorldVector(LocalWorldAdapter.adapt(world), + event.getPos().getX(), event.getPos().getY(), event.getPos().getZ()); - if (we.handleBlockLeftClick(player, pos)) { - event.setCanceled(true); - } - - if (we.handleArmSwing(player)) { - event.setCanceled(true); - } - - break; + if (we.handleBlockLeftClick(player, pos)) { + event.setCanceled(true); } - case RIGHT_CLICK_BLOCK: { - WorldVector pos = new WorldVector(LocalWorldAdapter.adapt(world), event.pos.getX(), event.pos.getY(), event.pos.getZ()); - if (we.handleBlockRightClick(player, pos)) { - event.setCanceled(true); - } - - if (we.handleRightClick(player)) { - event.setCanceled(true); - } - - break; + if (we.handleArmSwing(player)) { + event.setCanceled(true); } - case RIGHT_CLICK_AIR: { - if (we.handleRightClick(player)) { - event.setCanceled(true); - } + } else if (event instanceof PlayerInteractEvent.RightClickBlock) { + @SuppressWarnings("deprecation") + WorldVector pos = new WorldVector(LocalWorldAdapter.adapt(world), + event.getPos().getX(), event.getPos().getY(), event.getPos().getZ()); - break; + if (we.handleBlockRightClick(player, pos)) { + event.setCanceled(true); + } + + if (we.handleRightClick(player)) { + event.setCanceled(true); + } + } else if (event instanceof PlayerInteractEvent.RightClickEmpty) { + if (we.handleRightClick(player)) { + event.setCanceled(true); } } } @@ -201,7 +201,7 @@ public class ForgeWorldEdit { public static ItemStack toForgeItemStack(BaseItemStack item) { ItemStack ret = new ItemStack(Item.getItemById(item.getType()), item.getAmount(), item.getData()); for (Map.Entry entry : item.getEnchantments().entrySet()) { - ret.addEnchantment(net.minecraft.enchantment.Enchantment.getEnchantmentById(entry.getKey()), entry.getValue()); + ret.addEnchantment(net.minecraft.enchantment.Enchantment.getEnchantmentByID(entry.getKey()), entry.getValue()); } return ret; diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/NBTConverter.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/NBTConverter.java index 69f4ab6ad..d24d83bb0 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/NBTConverter.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/NBTConverter.java @@ -213,7 +213,7 @@ final class NBTConverter { } public static CompoundTag fromNative(NBTTagCompound other) { - @SuppressWarnings("unchecked") Set tags = other.getKeySet(); + Set tags = other.getKeySet(); Map map = new HashMap(); for (String tagName : tags) { map.put(tagName, fromNative(other.getTag(tagName))); diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java index 0ca19c5b0..bd33ac01b 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ThreadSafeCache.java @@ -58,12 +58,11 @@ public class ThreadSafeCache { Set onlineIds = new HashSet(); MinecraftServer server = FMLCommonHandler.instance().getMinecraftServerInstance(); - if (server == null || server.getConfigurationManager() == null) { + if (server == null || server.getPlayerList() == null) { return; } - for (Object object : FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().playerEntityList) { - if (object != null) { - EntityPlayerMP player = (EntityPlayerMP) object; + for (EntityPlayerMP player : server.getPlayerList().getPlayerList()) { + if (player != null) { onlineIds.add(player.getUniqueID()); } } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/TileEntityUtils.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/TileEntityUtils.java index 328420b27..0ac31b951 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/TileEntityUtils.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/TileEntityUtils.java @@ -21,16 +21,14 @@ package com.sk89q.worldedit.forge; import com.sk89q.worldedit.Vector; +import java.lang.reflect.Constructor; +import javax.annotation.Nullable; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagInt; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockPos; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import javax.annotation.Nullable; - -import java.lang.reflect.Constructor; - import static com.google.common.base.Preconditions.checkNotNull; /** @@ -98,7 +96,7 @@ final class TileEntityUtils { static void setTileEntity(World world, Vector position, @Nullable NBTTagCompound tag) { if (tag != null) { updateForSet(tag, position); - TileEntity tileEntity = TileEntity.createAndLoadEntity(tag); + TileEntity tileEntity = TileEntity.createTileEntity(world.getMinecraftServer(), tag); if (tileEntity != null) { world.setTileEntity(new BlockPos(position.getBlockX(), position.getBlockY(), position.getBlockZ()), tileEntity); } diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WECUIPacketHandler.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WECUIPacketHandler.java index 24da15c53..1a89fc5db 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WECUIPacketHandler.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/WECUIPacketHandler.java @@ -26,7 +26,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.NetHandlerPlayServer; import net.minecraft.network.PacketBuffer; import net.minecraft.network.ThreadQuickExitException; -import net.minecraft.network.play.server.S3FPacketCustomPayload; +import net.minecraft.network.play.server.SPacketCustomPayload; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.network.FMLEventChannel; import net.minecraftforge.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent; @@ -44,7 +44,7 @@ public class WECUIPacketHandler { @SubscribeEvent public void onPacketData(ServerCustomPacketEvent event) { - if (event.packet.channel().equals(ForgeWorldEdit.CUI_PLUGIN_CHANNEL)) { + if (event.getPacket().channel().equals(ForgeWorldEdit.CUI_PLUGIN_CHANNEL)) { EntityPlayerMP player = getPlayerFromEvent(event); LocalSession session = ForgeWorldEdit.inst.getSession((EntityPlayerMP) player); @@ -52,7 +52,7 @@ public class WECUIPacketHandler { return; } - String text = event.packet.payload().toString(UTF_8_CHARSET); + String text = event.getPacket().payload().toString(UTF_8_CHARSET); session.handleCUIInitializationMessage(text); session.describeCUI(ForgeWorldEdit.inst.wrap(player)); } @@ -61,12 +61,12 @@ public class WECUIPacketHandler { @SubscribeEvent public void callProcessPacket(ClientCustomPacketEvent event) { try { - new S3FPacketCustomPayload(event.packet.channel(), new PacketBuffer(event.packet.payload())).processPacket(event.handler); + new SPacketCustomPayload(event.getPacket().channel(), new PacketBuffer(event.getPacket().payload())).processPacket(event.getHandler()); } catch (ThreadQuickExitException suppress) { } } private static EntityPlayerMP getPlayerFromEvent(ServerCustomPacketEvent event) { - return ((NetHandlerPlayServer) event.handler).playerEntity; + return ((NetHandlerPlayServer) event.getHandler()).playerEntity; } } \ No newline at end of file diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/gui/GuiReferenceCard.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/gui/GuiReferenceCard.java index 592c0dadb..97ff555cd 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/gui/GuiReferenceCard.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/gui/GuiReferenceCard.java @@ -32,7 +32,6 @@ public class GuiReferenceCard extends GuiScreen { private int backgroundHeight = 256; @Override - @SuppressWarnings("unchecked") public void initGui() { this.buttonList.add(this.closeButton = new GuiButton(0, (this.width - this.backgroundWidth + 100) / 2, (this.height + this.backgroundHeight - 60) / 2, this.backgroundWidth - 100, 20, "Close")); } diff --git a/worldedit-forge/src/main/resources/META-INF/worldedit_at.cfg b/worldedit-forge/src/main/resources/META-INF/worldedit_at.cfg index 33f039ce3..a15c42170 100644 --- a/worldedit-forge/src/main/resources/META-INF/worldedit_at.cfg +++ b/worldedit-forge/src/main/resources/META-INF/worldedit_at.cfg @@ -1,4 +1,4 @@ public net.minecraft.world.gen.ChunkProviderServer field_73248_b # droppedChunksSet public net.minecraft.world.gen.ChunkProviderServer field_73244_f # id2ChunkMap public net.minecraft.world.gen.ChunkProviderServer field_73245_g # loadedChunks -public net.minecraft.world.gen.ChunkProviderServer field_73246_d # serverChunkGenerator +public net.minecraft.world.gen.ChunkProviderServer field_186029_c # chunkGenerator From 301d02c9c575766d5effcfbb1f2a7f68a43d2e2f Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Thu, 5 May 2016 17:38:57 -0700 Subject: [PATCH 3/4] Warn when not using Java 8 or greater. Note: this warning is not in the shared WorldEdit class because it doesn't get loaded as early as the individual plugin/mod implementations for some reason. --- .../worldedit/bukkit/WorldEditPlugin.java | 5 ++ .../sk89q/worldedit/util/Java8Detector.java | 46 +++++++++++++++++++ .../sk89q/worldedit/forge/ForgeWorldEdit.java | 7 ++- 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index be6378380..4ffde3d85 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -48,6 +48,8 @@ import com.sk89q.worldedit.regions.CylinderRegion; import com.sk89q.worldedit.regions.Polygonal2DRegion; import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.regions.RegionSelector; +import com.sk89q.worldedit.util.Java8Detector; + import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -117,6 +119,9 @@ public class WorldEditPlugin extends JavaPlugin implements TabCompleter { WorldEdit.getInstance().getEventBus().post(new PlatformReadyEvent()); loadAdapter(); // Need an adapter to work with special blocks with NBT data + + // Check Java version + Java8Detector.notifyIfNot8(); } private void loadConfig() { diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java new file mode 100644 index 000000000..74510840e --- /dev/null +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java @@ -0,0 +1,46 @@ +/* + * WorldEdit, a Minecraft world manipulation toolkit + * Copyright (C) sk89q + * Copyright (C) WorldEdit team and contributors + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published by the + * Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License + * for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + */ +package com.sk89q.worldedit.util; + +import com.google.common.base.Joiner; +import com.sk89q.worldedit.WorldEdit; + +public final class Java8Detector { + + public static void notifyIfNot8() { + String[] ver = System.getProperty("java.version").split("\\."); + int major = Integer.parseInt(ver[1]); + if (major <= 7) { + // Implicitly java 7 because we compile against 7, so this won't + // even launch on 6. + WorldEdit.logger + .warning("WorldEdit has detected you are using Java 7" + + " (based on detected version " + + Joiner.on('.').join(ver) + ")."); + WorldEdit.logger.warning( + "WorldEdit will stop supporting Java less than version 8 in the future," + + " due to Java 7 being EOL since April 2015." + + " Please update your server to Java 8."); + } + } + + private Java8Detector() { + } + +} diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java index 009e1cf13..8f459b2e2 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java @@ -19,8 +19,6 @@ package com.sk89q.worldedit.forge; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.common.FMLCommonHandler; import org.apache.logging.log4j.Logger; import com.google.common.base.Joiner; @@ -31,6 +29,7 @@ import com.sk89q.worldedit.blocks.BaseItemStack; import com.sk89q.worldedit.event.platform.PlatformReadyEvent; import com.sk89q.worldedit.extension.platform.Platform; import com.sk89q.worldedit.internal.LocalWorldAdapter; +import com.sk89q.worldedit.util.Java8Detector; import java.io.File; import java.util.Map; @@ -62,6 +61,10 @@ import static com.google.common.base.Preconditions.checkNotNull; */ @Mod(modid = ForgeWorldEdit.MOD_ID, name = "WorldEdit", version = "%VERSION%", acceptableRemoteVersions = "*") public class ForgeWorldEdit { + + static { + Java8Detector.notifyIfNot8(); + } public static Logger logger; public static final String MOD_ID = "worldedit"; From 574ed9aa41e52b96092241dc031e23a05bf08a18 Mon Sep 17 00:00:00 2001 From: Kenzie Togami Date: Thu, 5 May 2016 20:08:48 -0700 Subject: [PATCH 4/4] Fix some formatting concerns. --- .../java/com/sk89q/worldedit/util/Java8Detector.java | 4 ++-- .../com/sk89q/worldedit/forge/ForgeWorldEdit.java | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java index 74510840e..71a05d667 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/Java8Detector.java @@ -29,8 +29,8 @@ public final class Java8Detector { if (major <= 7) { // Implicitly java 7 because we compile against 7, so this won't // even launch on 6. - WorldEdit.logger - .warning("WorldEdit has detected you are using Java 7" + WorldEdit.logger.warning( + "WorldEdit has detected you are using Java 7" + " (based on detected version " + Joiner.on('.').join(ver) + ")."); WorldEdit.logger.warning( diff --git a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java index 8f459b2e2..46300364f 100644 --- a/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java +++ b/worldedit-forge/src/main/java/com/sk89q/worldedit/forge/ForgeWorldEdit.java @@ -157,14 +157,16 @@ public class ForgeWorldEdit { if (!platform.isHookingEvents()) return; // We have to be told to catch these events - if ((event instanceof PlayerInteractEvent.LeftClickBlock + boolean isLeftDeny = event instanceof PlayerInteractEvent.LeftClickBlock && ((PlayerInteractEvent.LeftClickBlock) event) - .getUseItem() == Result.DENY) - || (event instanceof PlayerInteractEvent.RightClickBlock + .getUseItem() == Result.DENY; + boolean isRightDeny = + event instanceof PlayerInteractEvent.RightClickBlock && ((PlayerInteractEvent.RightClickBlock) event) - .getUseItem() == Result.DENY) - || event.getEntity().worldObj.isRemote) + .getUseItem() == Result.DENY; + if (isLeftDeny || isRightDeny || event.getEntity().worldObj.isRemote) { return; + } WorldEdit we = WorldEdit.getInstance(); ForgePlayer player = wrap((EntityPlayerMP) event.getEntityPlayer());