diff --git a/build.gradle b/build.gradle index 5df21f1..3d79265 100644 --- a/build.gradle +++ b/build.gradle @@ -33,6 +33,7 @@ repositories { maven { url 'https://libraries.minecraft.net/' } maven { url 'https://www.dimdev.org/maven/' } maven { url = 'https://repo.spongepowered.org/maven/' } + mavenLocal() } dependencies { @@ -43,7 +44,7 @@ dependencies { } minecraft { - version = '1.13' + version = '1.13.1' mappings = 'snapshot_20180908' runDir = 'run' tweakClass = 'org.dimdev.riftloader.launch.RiftLoaderClientTweaker' diff --git a/src/main/java/org/dimdev/rift/listener/ChunkGeneratorReplacer.java b/src/main/java/org/dimdev/rift/listener/ChunkGeneratorReplacer.java index 10f0f4c..1c1e3ef 100644 --- a/src/main/java/org/dimdev/rift/listener/ChunkGeneratorReplacer.java +++ b/src/main/java/org/dimdev/rift/listener/ChunkGeneratorReplacer.java @@ -5,7 +5,6 @@ import net.minecraft.world.gen.ChunkGeneratorType; import net.minecraft.world.gen.IChunkGenSettings; import net.minecraft.world.gen.IChunkGenerator; -import net.minecraft.world.gen.IChunkGeneratorFactory; import javax.annotation.Nullable; import java.util.function.Supplier; diff --git a/src/main/java/org/dimdev/rift/listener/MessageAdder.java b/src/main/java/org/dimdev/rift/listener/MessageAdder.java index 5e2e092..6fe81e0 100644 --- a/src/main/java/org/dimdev/rift/listener/MessageAdder.java +++ b/src/main/java/org/dimdev/rift/listener/MessageAdder.java @@ -1,9 +1,8 @@ package org.dimdev.rift.listener; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.RegistryNamespaced; +import net.minecraft.util.registry.IRegistry; import org.dimdev.rift.network.Message; public interface MessageAdder { - void registerMessages(RegistryNamespaced> registry); + void registerMessages(IRegistry> registry); } diff --git a/src/main/java/org/dimdev/rift/mixin/hook/MixinDimensionType.java b/src/main/java/org/dimdev/rift/mixin/hook/MixinDimensionType.java index efd1860..4ab47a1 100644 --- a/src/main/java/org/dimdev/rift/mixin/hook/MixinDimensionType.java +++ b/src/main/java/org/dimdev/rift/mixin/hook/MixinDimensionType.java @@ -14,7 +14,7 @@ public class MixinDimensionType { private static HashMap dimensionTypes = new HashMap<>(); static { - for (DimensionType dimensionType : DimensionType.values()) { + for (DimensionType dimensionType : DimensionType.func_212681_b()) { dimensionTypes.put(dimensionType.getId(), dimensionType); } diff --git a/src/main/java/org/dimdev/rift/mixin/hook/MixinMinecraftServer.java b/src/main/java/org/dimdev/rift/mixin/hook/MixinMinecraftServer.java index 3ed6aa7..b918ce5 100644 --- a/src/main/java/org/dimdev/rift/mixin/hook/MixinMinecraftServer.java +++ b/src/main/java/org/dimdev/rift/mixin/hook/MixinMinecraftServer.java @@ -15,6 +15,7 @@ import net.minecraft.world.storage.ISaveFormat; import net.minecraft.world.storage.ISaveHandler; import net.minecraft.world.storage.WorldInfo; +import net.minecraft.world.storage.WorldSavedDataStorage; import org.dimdev.rift.listener.DataPackFinderAdder; import org.dimdev.rift.listener.ServerTickable; import org.dimdev.riftloader.RiftLoader; @@ -33,14 +34,15 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Consumer; @Mixin(MinecraftServer.class) public abstract class MixinMinecraftServer { @Shadow @Final private ResourcePackList resourcePacks; @Shadow @Final public Profiler profiler; @Shadow public abstract void convertMapIfNeeded(String p_convertMapIfNeeded_1_); - @Shadow public WorldServer[] worlds; - @Shadow public long[][] timeOfLastDimensionTick; + @Shadow public Map worlds; + @Shadow public Map timeOfLastDimensionTick; @Shadow public abstract ISaveFormat getActiveAnvilConverter(); @Shadow public abstract void setResourcePackFromWorld(String p_setResourcePackFromWorld_1_, ISaveHandler p_setResourcePackFromWorld_2_); @Shadow public abstract String getFolderName(); @@ -49,7 +51,6 @@ public abstract class MixinMinecraftServer { @Shadow public abstract boolean canStructuresSpawn(); @Shadow public abstract boolean isHardcore(); @Shadow public abstract void func_195560_a(File p_195560_1_, WorldInfo p_195560_2_); - @Shadow public abstract void initialWorldChunkLoad(); @Shadow public abstract void setDifficultyForAllWorlds(EnumDifficulty p_setDifficultyForAllWorlds_1_); @Shadow public abstract CustomBossEvents getCustomBossEvents(); @Shadow public abstract PlayerList getPlayerList(); @@ -101,9 +102,9 @@ public void loadAllWorlds(String saveName, String worldName, long seed, WorldTyp func_195560_a(saveHandler.getWorldDirectory(), worldInfo); // Create overworld - WorldServer overworld = isDemo() ? new WorldServerDemo((MinecraftServer) (Object) this, saveHandler, worldInfo, 0, profiler) - : new WorldServer((MinecraftServer) (Object) this, saveHandler, worldInfo, 0, profiler); - overworld.init(); + WorldServer overworld = isDemo() ? new WorldServerDemo((MinecraftServer) (Object) this, saveHandler, new WorldSavedDataStorage(saveHandler), worldInfo, DimensionType.OVERWORLD, profiler) + : new WorldServer((MinecraftServer) (Object) this, saveHandler, new WorldSavedDataStorage(saveHandler), worldInfo, DimensionType.OVERWORLD, profiler); + overworld.func_212251_i__(); overworld.initialize(worldSettings); overworld.addEventListener(new ServerWorldEventHandler((MinecraftServer) (Object) this, overworld)); @@ -132,8 +133,8 @@ public void loadAllWorlds(String saveName, String worldName, long seed, WorldTyp for (DimensionType dimensionType : dimensionTypes) { dimensionIdToWorldIndex.put(dimensionType.getId(), worldList.size()); dimensionTypeToWorldIndex.put(dimensionType, worldList.size()); - WorldServerMulti world = new WorldServerMulti((MinecraftServer) (Object) this, saveHandler, dimensionType.getId(), overworld, profiler); - world.init(); + WorldServerMulti world = new WorldServerMulti((MinecraftServer) (Object) this, saveHandler, dimensionType, overworld, profiler); + world.func_212251_i__(); world.addEventListener(new ServerWorldEventHandler((MinecraftServer) (Object) this, world)); if (!isSinglePlayer()) { world.getWorldInfo().setGameType(getGameType()); @@ -143,10 +144,13 @@ public void loadAllWorlds(String saveName, String worldName, long seed, WorldTyp } // Initialize other things - worlds = worldList.toArray(new WorldServer[0]); - timeOfLastDimensionTick = new long[worlds.length][100]; + worlds = new HashMap<>(); + worldList.forEach(worldServer -> worlds.put(worldServer.dimension.getType(), worldServer)); - getPlayerList().setPlayerManager(worlds); + timeOfLastDimensionTick = new HashMap<>(); + worldList.forEach(worldServer -> timeOfLastDimensionTick.put(worldServer.dimension.getType(), new long[100])); + + getPlayerList().func_212504_a(worlds.get(DimensionType.OVERWORLD)); if (worldInfo.getCustomBossEvents() != null) { getCustomBossEvents().read(worldInfo.getCustomBossEvents()); } @@ -154,8 +158,6 @@ public void loadAllWorlds(String saveName, String worldName, long seed, WorldTyp if (overworld.getWorldInfo().getDifficulty() == null) { setDifficultyForAllWorlds(getInitialDifficulty()); } - - // initialWorldChunkLoad(); } protected WorldSettings getWorldSettings(@Nullable WorldInfo worldInfo, long seed, WorldType worldType, JsonElement generatorOptions) { @@ -178,14 +180,4 @@ protected WorldSettings getWorldSettings(@Nullable WorldInfo worldInfo, long see protected EnumDifficulty getInitialDifficulty() { return getDifficulty(); } - - @Overwrite - public WorldServer getWorld(DimensionType dimensionType) { - return worlds[dimensionTypeToWorldIndex.get(dimensionType)]; - } - - @Overwrite - public WorldServer getWorld(int dimensionId) { - return worlds[dimensionIdToWorldIndex.get(dimensionId)]; - } } diff --git a/src/main/java/org/dimdev/rift/mixin/hook/MixinNetHandlerPlayServer.java b/src/main/java/org/dimdev/rift/mixin/hook/MixinNetHandlerPlayServer.java index c5d029e..90e6f07 100644 --- a/src/main/java/org/dimdev/rift/mixin/hook/MixinNetHandlerPlayServer.java +++ b/src/main/java/org/dimdev/rift/mixin/hook/MixinNetHandlerPlayServer.java @@ -37,6 +37,10 @@ private void handleModCustomPayload(CPacketCustomPayload packet, CallbackInfo ci } } + if(Message.REGISTRY.isEmpty()){ + return; + } + Class messageClass = Message.REGISTRY.get(channelName); if (messageClass != null) { try { diff --git a/src/main/java/org/dimdev/rift/mixin/hook/MixinTileEntityType.java b/src/main/java/org/dimdev/rift/mixin/hook/MixinTileEntityType.java index 0c152bd..3b0b163 100644 --- a/src/main/java/org/dimdev/rift/mixin/hook/MixinTileEntityType.java +++ b/src/main/java/org/dimdev/rift/mixin/hook/MixinTileEntityType.java @@ -7,6 +7,7 @@ import net.minecraft.util.ResourceLocation; import net.minecraft.util.datafix.DataFixesManager; import net.minecraft.util.datafix.TypeReferences; +import net.minecraft.util.registry.IRegistry; import net.minecraft.util.registry.RegistryNamespaced; import org.apache.logging.log4j.Logger; import org.dimdev.rift.listener.TileEntityTypeAdder; @@ -22,7 +23,6 @@ @Mixin(TileEntityType.class) public abstract class MixinTileEntityType { @Shadow @Final private static Logger LOGGER; - @Shadow @Final public static RegistryNamespaced> REGISTRY; @Overwrite public static TileEntityType registerTileEntityType(String id, TileEntityType.Builder builder) { @@ -35,7 +35,7 @@ public static TileEntityType registerTileEntityType(St } TileEntityType tileEntityType = builder.build(dataFixerType); - REGISTRY.put(new ResourceLocation(id), tileEntityType); + IRegistry.field_212626_o.put(new ResourceLocation(id), tileEntityType); return tileEntityType; } diff --git a/src/main/java/org/dimdev/rift/mixin/hook/client/MixinNetHandlerPlayClient.java b/src/main/java/org/dimdev/rift/mixin/hook/client/MixinNetHandlerPlayClient.java index d185b6c..5f7ff4e 100644 --- a/src/main/java/org/dimdev/rift/mixin/hook/client/MixinNetHandlerPlayClient.java +++ b/src/main/java/org/dimdev/rift/mixin/hook/client/MixinNetHandlerPlayClient.java @@ -55,6 +55,10 @@ private void handleModCustomPayload(SPacketCustomPayload packet, CallbackInfo ci } } + if(Message.REGISTRY.isEmpty()){ + return; + } + Class messageClass = Message.REGISTRY.get(channelName); if (messageClass != null) { try { diff --git a/src/main/java/org/dimdev/rift/network/Message.java b/src/main/java/org/dimdev/rift/network/Message.java index 04222e1..0e46455 100644 --- a/src/main/java/org/dimdev/rift/network/Message.java +++ b/src/main/java/org/dimdev/rift/network/Message.java @@ -13,13 +13,15 @@ import net.minecraft.network.play.server.SPacketCustomPayload; import net.minecraft.server.MinecraftServer; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.IRegistry; import net.minecraft.util.registry.RegistryNamespaced; import net.minecraft.world.WorldServer; +import org.dimdev.rift.util.RegistryUtil; import java.util.function.Predicate; public abstract class Message { - public static final RegistryNamespaced> REGISTRY = new RegistryNamespaced<>(); + public static final IRegistry> REGISTRY = RegistryUtil.createRegistry(new ResourceLocation("rift", "message"), new RegistryNamespaced()); public abstract void write(PacketBuffer buffer); diff --git a/src/main/java/org/dimdev/rift/util/RegistryUtil.java b/src/main/java/org/dimdev/rift/util/RegistryUtil.java new file mode 100644 index 0000000..c9a1db7 --- /dev/null +++ b/src/main/java/org/dimdev/rift/util/RegistryUtil.java @@ -0,0 +1,13 @@ +package org.dimdev.rift.util; + +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.IRegistry; + +public class RegistryUtil { + + public static IRegistry createRegistry(ResourceLocation resourceLocation, IRegistry registry) { + IRegistry.field_212617_f.put(resourceLocation, registry); + return registry; + } + +} diff --git a/src/main/resources/access_transformations.at b/src/main/resources/access_transformations.at index aabb8ef..4503949 100644 --- a/src/main/resources/access_transformations.at +++ b/src/main/resources/access_transformations.at @@ -31,4 +31,4 @@ public class bms$a # net.minecraft.world.gen.ChunkGeneratorType$Settings public class bmu # net.minecraft.world.chunk.ChunkStatus public method bwp b (Ljava/lang/Class;Ljava/lang/String;)V registerStructure # net.minecraft.world.gen.feature.structure.StructureIO/registerStructure public method bwp a (Ljava/lang/Class;Ljava/lang/String;)V # net.minecraft.world.gen.feature.structure.StructureIO/registerStructure -public field aqz g [I # net.minecraft.item.ArmorMaterial/MAX_DAMAGE_ARRAY +public field arc g [I # net.minecraft.item.ArmorMaterial/MAX_DAMAGE_ARRAY