From c43598dd2f5d3d1cb705f0ac9bb27c9d15b7a15b Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Thu, 5 Nov 2020 15:44:11 +0100 Subject: [PATCH] Update to 1.16.4, fix overworld types, ignore list #4 --- pom.xml | 4 +-- .../customdimensions/CDCommand.java | 30 +++++++++++++++++++ .../customdimensions/CustomDimensions.java | 28 ++++++++++------- src/main/resources/plugin.yml | 8 +++-- 4 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 src/main/java/buttondevteam/customdimensions/CDCommand.java diff --git a/pom.xml b/pom.xml index 35f2678..b7fc051 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.github.TBMCPlugins CustomDimensions - 1.3 + 1.4 @@ -41,7 +41,7 @@ org.spigotmc spigot - 1.16.3-R0.1-SNAPSHOT + 1.16.4-R0.1-SNAPSHOT provided diff --git a/src/main/java/buttondevteam/customdimensions/CDCommand.java b/src/main/java/buttondevteam/customdimensions/CDCommand.java new file mode 100644 index 0000000..12f1f8a --- /dev/null +++ b/src/main/java/buttondevteam/customdimensions/CDCommand.java @@ -0,0 +1,30 @@ +package buttondevteam.customdimensions; + +import org.bukkit.Bukkit; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +public class CDCommand implements CommandExecutor { + private final CustomDimensions plugin; + + public CDCommand(CustomDimensions plugin) {this.plugin = plugin;} + + @Override + public boolean onCommand(CommandSender sender, Command command, String alias, String[] args) { + sender.sendMessage("§bLoading custom dimensions..."); + sender.sendMessage("To reload a dimension, specify its name after the command"); + try { + if (args.length > 0) + if (!Bukkit.unloadWorld(args[0], true)) + sender.sendMessage("§cFailed to unload world " + args[0]); + plugin.reloadConfig(); //Reload ignore list + plugin.load(); + } catch (Exception e) { + e.printStackTrace(); + } + sender.sendMessage("§bFinished loading custom dimensions!"); + sender.sendMessage("See the console for more details"); + return true; + } +} diff --git a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java index 2ef6faf..9ea255a 100644 --- a/src/main/java/buttondevteam/customdimensions/CustomDimensions.java +++ b/src/main/java/buttondevteam/customdimensions/CustomDimensions.java @@ -2,11 +2,12 @@ package buttondevteam.customdimensions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Lists; import com.mojang.serialization.Lifecycle; -import net.minecraft.server.v1_16_R2.*; +import net.minecraft.server.v1_16_R3.*; import org.bukkit.Bukkit; import org.bukkit.WorldType; -import org.bukkit.craftbukkit.v1_16_R2.CraftServer; +import org.bukkit.craftbukkit.v1_16_R3.CraftServer; import org.bukkit.event.Listener; import org.bukkit.event.world.WorldInitEvent; import org.bukkit.event.world.WorldLoadEvent; @@ -19,6 +20,7 @@ import java.util.*; public class CustomDimensions extends JavaPlugin implements Listener { @Override public void onEnable() { + //Objects.requireNonNull(getCommand("cdload")).setExecutor(new CDCommand(this)); - dimensions aren't updated on /minecraft:reload getLogger().info("Loading custom dimensions..."); try { load(); @@ -28,7 +30,7 @@ public class CustomDimensions extends JavaPlugin implements Listener { getLogger().info("Finished loading custom dimensions!"); } - private void load() throws Exception { + public void load() throws Exception { var console = ((CraftServer) Bukkit.getServer()).getServer(); var field = console.getClass().getSuperclass().getDeclaredField("saveData"); field.setAccessible(true); @@ -40,7 +42,16 @@ public class CustomDimensions extends JavaPlugin implements Listener { var convertable = Convertable.a(Bukkit.getWorldContainer().toPath()); + if (!getConfig().contains("ignored")) { + getConfig().set("ignored", Lists.newArrayList("single_biome")); + saveConfig(); + } + var ignored = getConfig().getStringList("ignored"); for (var dimEntry : dimensionRegistry.d()) { + if (ignored.contains(dimEntry.getKey().a().getKey())) { + getLogger().info(dimEntry.getKey() + " is on the ignore list"); + continue; + } try { loadDimension(dimEntry.getKey(), dimEntry.getValue(), convertable, console, mainWorld); } catch (Exception e) { @@ -92,7 +103,7 @@ public class CustomDimensions extends JavaPlugin implements Listener { worlddata.checkName(name); worlddata.a(console.getServerModName(), console.getModded().isPresent()); if (console.options.has("forceUpgrade")) { - net.minecraft.server.v1_16_R2.Main.convertWorld(session, DataConverterRegistry.a(), + net.minecraft.server.v1_16_R3.Main.convertWorld(session, DataConverterRegistry.a(), console.options.has("eraseCache"), () -> true, worlddata.getGeneratorSettings().d().d().stream() .map((entry2) -> ResourceKey.a(IRegistry.K, entry2.getKey().a())) @@ -105,14 +116,11 @@ public class CustomDimensions extends JavaPlugin implements Listener { var dimRegistry = ((RegistryMaterials) console.customRegistry.a()); { var key = dimRegistry.getKey(dimensionmanager); - if (key != null) { //The loaded manager is the same - getLogger().warning("Dimension manager already loaded with key " + key + "! Skipping"); - session.close(); - return; + 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()); } } - //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); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 9ea6e89..636af8c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,10 @@ name: CustomDimensions main: buttondevteam.customdimensions.CustomDimensions -version: '1.3' +version: '1.4' api-version: '1.16' loadbefore: - - Multiverse-Core \ No newline at end of file + - Multiverse-Core +#commands: +# cdload: +# description: Load custom dimensions that aren't loaded at the moment +# permission: customdimensions.load \ No newline at end of file