diff --git a/pom.xml b/pom.xml index 514f462..4368650 100644 --- a/pom.xml +++ b/pom.xml @@ -6,47 +6,34 @@ com.github.TBMCPlugins CustomDimensions - 1.6.0 - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - - 8 - 14 - 14 - - -Xplugin:jabel - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.2.4 - - - - org.bstats - buttondevteam.customdimensions.bstats - - - false - - - - package - - shade - - - - - - + 1.6.1 + + clean package install + ${project.name}-${project.version} + ${project.basedir}/src + + + . + true + ${project.basedir}/src/ + + plugin.yml + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 8 + 8 + + + + + @@ -60,48 +47,18 @@ - - org.spigotmc - spigot - 1.16.4-R0.1-SNAPSHOT - provided - - - com.github.bsideup.jabel - jabel-javac-plugin - 0.3.0 - provided - - - org.bstats - bstats-bukkit - 2.2.1 - compile - + + org.spigotmc + spigot-api + 1.17-R0.1-SNAPSHOT + provided + + + org.spigotmc + spigot + 1.17 + system + ${project.basedir}/utils/spigot-1.17.jar + - - - - intellij-idea-only - - - idea.maven.embedder.version - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 14 - - --enable-preview - - - - - - - diff --git a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java index 05efb88..c300584 100644 --- a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java +++ b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java @@ -4,13 +4,48 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.common.util.concurrent.Callables; +import com.mojang.serialization.DynamicOps; import com.mojang.serialization.Lifecycle; -import net.minecraft.server.v1_16_R3.*; -import org.bstats.bukkit.Metrics; -import org.bstats.charts.SimplePie; + +import net.minecraft.core.IRegistry; +import net.minecraft.core.IRegistryCustom; +import net.minecraft.core.RegistryMaterials; +import net.minecraft.nbt.DynamicOpsNBT; +import net.minecraft.nbt.NBTBase; +import net.minecraft.resources.MinecraftKey; +import net.minecraft.resources.RegistryReadOps; +import net.minecraft.resources.ResourceKey; +import net.minecraft.server.*; +import net.minecraft.server.dedicated.DedicatedServer; +import net.minecraft.server.level.WorldServer; +import net.minecraft.server.level.progress.WorldLoadListener; +import net.minecraft.util.datafix.DataConverterRegistry; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.entity.ai.village.VillageSiege; +import net.minecraft.world.entity.npc.MobSpawnerCat; +import net.minecraft.world.entity.npc.MobSpawnerTrader; +import net.minecraft.world.level.EnumGamemode; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.MobSpawner; +import net.minecraft.world.level.World; +import net.minecraft.world.level.WorldSettings; +import net.minecraft.world.level.biome.BiomeManager; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.dimension.DimensionManager; +import net.minecraft.world.level.dimension.WorldDimension; +import net.minecraft.world.level.levelgen.GeneratorSettings; +import net.minecraft.world.level.levelgen.MobSpawnerPatrol; +import net.minecraft.world.level.levelgen.MobSpawnerPhantom; +import net.minecraft.world.level.storage.Convertable; +import net.minecraft.world.level.storage.Convertable.ConversionSession; +import net.minecraft.world.level.storage.SaveData; +import net.minecraft.world.level.storage.WorldDataServer; +import net.minecraft.world.level.storage.loot.predicates.LootItemConditionType; +import net.minecraft.server.packs.resources.IResourceManager; + import org.bukkit.Bukkit; import org.bukkit.WorldType; -import org.bukkit.craftbukkit.v1_16_R3.CraftServer; +import org.bukkit.craftbukkit.v1_17_R1.CraftServer; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldInitEvent; import org.bukkit.event.world.WorldLoadEvent; @@ -18,14 +53,14 @@ import org.bukkit.plugin.java.JavaPlugin; import java.io.File; import java.io.IOException; +import java.lang.reflect.Field; import java.util.*; +import java.util.Map.Entry; public class CustomDimensions extends JavaPlugin implements Listener { - private Metrics metrics; @Override public void onEnable() { - metrics = new Metrics(this, 10545); getLogger().info("Loading custom dimensions..."); try { load(); @@ -36,24 +71,28 @@ public class CustomDimensions extends JavaPlugin implements Listener { } private void load() throws Exception { - var console = ((CraftServer) Bukkit.getServer()).getServer(); - var field = console.getClass().getSuperclass().getDeclaredField("saveData"); + DedicatedServer console = ((CraftServer) Bukkit.getServer()).getServer(); + System.out.println("******************************************"); + for (Field fie : console.getClass().getSuperclass().getDeclaredFields()) { + System.out.println(fie.getName()); + } + Field field = console.getClass().getSuperclass().getDeclaredField("saveData"); field.setAccessible(true); - var saveData = (SaveData) field.get(console); + SaveData saveData = (SaveData) field.get(console); GeneratorSettings mainGenSettings = saveData.getGeneratorSettings(); RegistryMaterials dimensionRegistry = mainGenSettings.d(); - var mainWorld = Bukkit.getWorlds().get(0); + org.bukkit.World mainWorld = Bukkit.getWorlds().get(0); - var convertable = Convertable.a(Bukkit.getWorldContainer().toPath()); + Convertable convertable = Convertable.a(Bukkit.getWorldContainer().toPath()); if (!getConfig().contains("ignored")) { getConfig().set("ignored", Lists.newArrayList("single_biome")); saveConfig(); } - var ignored = getConfig().getStringList("ignored"); + List ignored = getConfig().getStringList("ignored"); int allCount = -3, loadedCount = 0, ignoredCount = 0; //-3: overworld, nether, end - for (var dimEntry : dimensionRegistry.d()) { + for (Entry, WorldDimension> dimEntry : dimensionRegistry.d()) { allCount++; if (ignored.contains(dimEntry.getKey().a().getKey())) { getLogger().info(dimEntry.getKey() + " is on the ignore list"); @@ -68,18 +107,17 @@ public class CustomDimensions extends JavaPlugin implements Listener { e.printStackTrace(); } } - metrics.addCustomChart(new SimplePie("all_custom_dimensions", Callables.returning(allCount + ""))); - metrics.addCustomChart(new SimplePie("loaded_custom_dimensions", Callables.returning(loadedCount + ""))); - metrics.addCustomChart(new SimplePie("ignored_custom_dimensions", Callables.returning(ignoredCount + ""))); + } private boolean loadDimension(ResourceKey dimKey, WorldDimension dimension, Convertable convertable, DedicatedServer console, org.bukkit.World mainWorld) throws IOException { - if (dimKey == WorldDimension.OVERWORLD //The default dimensions are already loaded - || dimKey == WorldDimension.THE_NETHER - || dimKey == WorldDimension.THE_END) + if (dimKey == WorldDimension.a //The default dimensions are already loaded + || dimKey == WorldDimension.b + || dimKey == WorldDimension.c + || dimKey == WorldDimension.d) return false; - ResourceKey worldKey = ResourceKey.a(IRegistry.L, dimKey.a()); + ResourceKey worldKey = ResourceKey.a(IRegistry.Q, dimKey.a()); DimensionManager dimensionmanager = dimension.b(); ChunkGenerator chunkgenerator = dimension.c(); String name = getConfig().getString("worldNames." + dimKey.a()); @@ -90,16 +128,16 @@ public class CustomDimensions extends JavaPlugin implements Listener { return false; } getLogger().info("Loading " + name); - var session = convertable.new ConversionSession(name, dimKey) { //The original session isn't prepared for custom dimensions + ConversionSession session = convertable.new ConversionSession(name, dimKey) { //The original session isn't prepared for custom dimensions @Override public File a(ResourceKey resourcekey) { - return new File(this.folder.toFile(), "custom"); + return new File(this.c.toFile(), "custom"); } }; MinecraftServer.convertWorld(session); //Load world settings or create default values - RegistryReadOps registryreadops = RegistryReadOps.a(DynamicOpsNBT.a, console.dataPackResources.h(), console.customRegistry); + RegistryReadOps registryreadops = RegistryReadOps.a((DynamicOps) DynamicOpsNBT.a, console.aC.i(), console.getCustomRegistry()); WorldDataServer worlddata = (WorldDataServer) session.a(registryreadops, console.datapackconfiguration); if (worlddata == null) { Properties properties = new Properties(); @@ -110,35 +148,36 @@ public class CustomDimensions extends JavaPlugin implements Listener { WorldSettings worldSettings = new WorldSettings(name, EnumGamemode.getById(Bukkit.getDefaultGameMode().getValue()), false, //Hardcore - EnumDifficulty.EASY, false, new GameRules(), console.datapackconfiguration); + EnumDifficulty.a, false, new GameRules(), console.datapackconfiguration); worlddata = new WorldDataServer(worldSettings, dimGenSettings, Lifecycle.stable()); } worlddata.checkName(name); worlddata.a(console.getServerModName(), console.getModded().isPresent()); if (console.options.has("forceUpgrade")) { - net.minecraft.server.v1_16_R3.Main.convertWorld(session, DataConverterRegistry.a(), + net.minecraft.server.Main.convertWorld(session, DataConverterRegistry.a(), console.options.has("eraseCache"), () -> true, worlddata.getGeneratorSettings().d().d().stream() - .map((entry2) -> ResourceKey.a(IRegistry.K, entry2.getKey().a())) + .map((entry2) -> ResourceKey.a(IRegistry.P, entry2.getKey().a())) .collect(ImmutableSet.toImmutableSet())); } List spawners = ImmutableList.of(new MobSpawnerPhantom(), new MobSpawnerPatrol(), new MobSpawnerCat(), new VillageSiege(), new MobSpawnerTrader(worlddata)); - ResourceKey dimManResKey = ResourceKey.a(IRegistry.K, dimKey.a()); - var dimRegistry = ((RegistryMaterials) console.customRegistry.a()); + + ResourceKey dimManResKey = ResourceKey.a(IRegistry.P, dimKey.a()); + + RegistryMaterials dimRegistry = new RegistryMaterials(null, null); //((RegistryMaterials)); { - var key = dimRegistry.getKey(dimensionmanager); + MinecraftKey key = dimRegistry.getKey(dimensionmanager); if (key == null) { //The loaded manager is different - different dimension type //Replace existing dimension manager, correctly setting the ID up (which is -1 for default worlds...) dimRegistry.a(OptionalInt.empty(), dimManResKey, dimensionmanager, Lifecycle.stable()); } } - var worldloadlistener = console.worldLoadListenerFactory.create(11); - - WorldServer worldserver = new WorldServer(console, console.executorService, session, + WorldLoadListener worldloadlistener = console.L.create(11); + WorldServer worldserver = new WorldServer(console, console.aA, session, worlddata, worldKey, dimensionmanager, worldloadlistener, chunkgenerator, false, //isDebugWorld BiomeManager.a(worlddata.getGeneratorSettings().getSeed()), //Biome seed @@ -152,9 +191,9 @@ public class CustomDimensions extends JavaPlugin implements Listener { } else { console.initWorld(worldserver, worlddata, worlddata, worlddata.getGeneratorSettings()); worldserver.setSpawnFlags(true, true); - console.worldServer.put(worldserver.getDimensionKey(), worldserver); + console.R.put(worldserver.getDimensionKey(), worldserver); Bukkit.getPluginManager().callEvent(new WorldInitEvent(worldserver.getWorld())); - console.loadSpawn(worldserver.getChunkProvider().playerChunkMap.worldLoadListener, worldserver); + console.loadSpawn(worldserver.getChunkProvider().a.z, worldserver); Bukkit.getPluginManager().callEvent(new WorldLoadEvent(worldserver.getWorld())); return true; } diff --git a/src/plugin.yml b/src/plugin.yml new file mode 100644 index 0000000..7be9b9d --- /dev/null +++ b/src/plugin.yml @@ -0,0 +1,7 @@ +name: CustomDimensions +main: buttondevteam.customdimensions.CustomDimensions +api-version: 1.14 +version: 1.17 +loadbefore: + - Multiverse-Core + - Hyperverse diff --git a/utils/spigot-1.17.jar b/utils/spigot-1.17.jar new file mode 100644 index 0000000..f22a45a Binary files /dev/null and b/utils/spigot-1.17.jar differ