diff --git a/pom.xml b/pom.xml index 680e26dd8..4478937a3 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ com.alpsbte PlotSystem - 4.1.4 + 4.2.0 @@ -99,9 +99,9 @@ - com.onarandombox.multiversecore - Multiverse-Core - 4.3.1 + org.mvplugins.multiverse.core + multiverse-core + 5.3.0 provided @@ -115,7 +115,7 @@ com.alpsbte canvas - 1.1 + 1.3 compile @@ -136,7 +136,7 @@ com.alpsbte.alpslib alpslib-io - 1.0.38 + 1.2.0 com.alpsbte.alpslib @@ -147,7 +147,7 @@ com.alpsbte.alpslib alpslib-utils - 1.3.4 + 1.3.5 compile @@ -187,24 +187,30 @@ - com.comphenix.protocol + net.dmulloy2 ProtocolLib - 5.1.0 + 5.4.0 provided de.oliver FancyNpcs - 2.4.0 + 2.7.0 provided li.cinnazeyy - LangLibs - 1.5 + LangLibs-API + 1.5.1 provided + + + commons-io + commons-io + 2.20.0 + @@ -246,7 +252,7 @@ src/main/java/ - ${project.artifactId}-${project.version}-${build.number} + ${project.artifactId}-${project.version}${build.number} org.apache.maven.plugins diff --git a/src/main/java/com/alpsbte/plotsystem/PlotSystem.java b/src/main/java/com/alpsbte/plotsystem/PlotSystem.java index 011bf1480..0a907d5fa 100644 --- a/src/main/java/com/alpsbte/plotsystem/PlotSystem.java +++ b/src/main/java/com/alpsbte/plotsystem/PlotSystem.java @@ -49,7 +49,6 @@ import com.alpsbte.plotsystem.utils.io.LangUtil; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.ProtocolManager; -import com.onarandombox.MultiverseCore.MultiverseCore; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldguard.bukkit.WorldGuardPlugin; import de.oliver.fancynpcs.api.FancyNpcsPlugin; @@ -61,6 +60,7 @@ import org.bukkit.plugin.java.JavaPlugin; import org.ipvp.canvas.MenuFunctionListener; import org.jetbrains.annotations.NotNull; +import org.mvplugins.multiverse.core.MultiverseCoreApi; import java.io.IOException; import java.io.InputStream; @@ -346,8 +346,8 @@ public static String getMultiverseInventoriesConfigPath(String worldName) { /** * @return Multiverse-Core instance */ - public static MultiverseCore getMultiverseCore() { - return (MultiverseCore) plugin.getServer().getPluginManager().getPlugin("Multiverse-Core"); + public static MultiverseCoreApi getMultiverseCore() { + return MultiverseCoreApi.get(); } /** diff --git a/src/main/java/com/alpsbte/plotsystem/core/system/plot/generator/PlotWorldGenerator.java b/src/main/java/com/alpsbte/plotsystem/core/system/plot/generator/PlotWorldGenerator.java index 15e10d5f5..7b44be706 100644 --- a/src/main/java/com/alpsbte/plotsystem/core/system/plot/generator/PlotWorldGenerator.java +++ b/src/main/java/com/alpsbte/plotsystem/core/system/plot/generator/PlotWorldGenerator.java @@ -25,8 +25,6 @@ package com.alpsbte.plotsystem.core.system.plot.generator; import com.alpsbte.plotsystem.PlotSystem; -import com.onarandombox.MultiverseCore.api.MVWorldManager; -import com.onarandombox.MultiverseCore.api.MultiverseWorld; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.flags.Flags; @@ -37,7 +35,12 @@ import com.sk89q.worldguard.protection.regions.GlobalProtectedRegion; import com.sk89q.worldguard.protection.regions.RegionContainer; import org.bukkit.*; +import org.bukkit.entity.SpawnCategory; import org.bukkit.generator.ChunkGenerator; +import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld; +import org.mvplugins.multiverse.core.world.WorldManager; +import org.mvplugins.multiverse.core.world.options.ImportWorldOptions; +import org.mvplugins.multiverse.external.vavr.control.Option; import javax.annotation.Nonnull; import java.util.Objects; @@ -46,7 +49,7 @@ import static net.kyori.adventure.text.Component.text; public class PlotWorldGenerator { - private final MVWorldManager worldManager = PlotSystem.DependencyManager.getMultiverseCore().getMVWorldManager(); + private final WorldManager worldManager = PlotSystem.DependencyManager.getMultiverseCore().getWorldManager(); private WorldCreator worldCreator; private final String worldName; @@ -74,9 +77,13 @@ protected void generateWorld() { protected void createMultiverseWorld() throws Exception { // Check if world creator is configured and add new world to multiverse world manager if (worldCreator != null) { - if (!worldManager.isMVWorld(worldName)) - worldManager.addWorld(worldName, environment, null, worldType, false, - "VoidGen:{\"caves\":false,\"decoration\":false,\"mobs\":false,\"structures\":false}", false); + if (!worldManager.isLoadedWorld(worldName)) { + worldManager.importWorld(ImportWorldOptions.worldName(worldName) + .environment(environment) + .generator("VoidGen:{\"caves\":false,\"decoration\":false,\"mobs\":false,\"structures\":false}") + .useSpawnAdjust(false) + ); + } } else { throw new Exception("World Creator is not configured"); } @@ -84,7 +91,12 @@ protected void createMultiverseWorld() throws Exception { protected void configureWorld() { World bukkitWorld = Bukkit.getWorld(worldName); - MultiverseWorld mvWorld = worldManager.getMVWorld(bukkitWorld); + Option mvWorld = worldManager.getLoadedWorld(worldName); + + if (mvWorld.isEmpty()) { + PlotSystem.getPlugin().getComponentLogger().warn(text("Multiverse world" + worldName + " is not loaded! Skipping world configuration...")); + return; + } // Set world time to midday assert bukkitWorld != null; @@ -100,14 +112,14 @@ protected void configureWorld() { bukkitWorld.setGameRule(GameRule.ANNOUNCE_ADVANCEMENTS, false); // Configure multiverse world - mvWorld.setAllowFlight(true); - mvWorld.setGameMode(GameMode.CREATIVE); - mvWorld.setEnableWeather(false); - mvWorld.setDifficulty(Difficulty.PEACEFUL); - mvWorld.setAllowAnimalSpawn(false); - mvWorld.setAllowMonsterSpawn(false); - mvWorld.setAutoLoad(false); - mvWorld.setKeepSpawnInMemory(false); + mvWorld.get().setAllowFlight(true); + mvWorld.get().setGameMode(GameMode.CREATIVE); + mvWorld.get().setAllowWeather(false); + mvWorld.get().setDifficulty(Difficulty.PEACEFUL); + mvWorld.get().getEntitySpawnConfig().getSpawnCategoryConfig(SpawnCategory.ANIMAL).setSpawn(false); + mvWorld.get().getEntitySpawnConfig().getSpawnCategoryConfig(SpawnCategory.MONSTER).setSpawn(false); + mvWorld.get().setAutoLoad(false); + mvWorld.get().setKeepSpawnInMemory(false); worldManager.saveWorldsConfig(); } diff --git a/src/main/java/com/alpsbte/plotsystem/core/system/plot/utils/PlotUtils.java b/src/main/java/com/alpsbte/plotsystem/core/system/plot/utils/PlotUtils.java index c33d62104..a1679c3a7 100644 --- a/src/main/java/com/alpsbte/plotsystem/core/system/plot/utils/PlotUtils.java +++ b/src/main/java/com/alpsbte/plotsystem/core/system/plot/utils/PlotUtils.java @@ -190,8 +190,8 @@ public static boolean isPlayerOnPlot(@NotNull AbstractPlot plot, Player player) return null; } - public static boolean isPlotWorld(World world) { - return PlotSystem.DependencyManager.getMultiverseCore().getMVWorldManager().isMVWorld(world) && (PlotWorld.isOnePlotWorld(world.getName()) || PlotWorld.isCityPlotWorld(world.getName())); + public static boolean isPlotWorld(@NotNull World world) { + return PlotSystem.DependencyManager.getMultiverseCore().getWorldManager().isLoadedWorld(world) && (PlotWorld.isOnePlotWorld(world.getName()) || PlotWorld.isCityPlotWorld(world.getName())); } diff --git a/src/main/java/com/alpsbte/plotsystem/core/system/plot/world/PlotWorld.java b/src/main/java/com/alpsbte/plotsystem/core/system/plot/world/PlotWorld.java index b62db7ac7..cbabe15cc 100644 --- a/src/main/java/com/alpsbte/plotsystem/core/system/plot/world/PlotWorld.java +++ b/src/main/java/com/alpsbte/plotsystem/core/system/plot/world/PlotWorld.java @@ -31,7 +31,6 @@ import com.alpsbte.plotsystem.core.system.plot.generator.AbstractPlotGenerator; import com.alpsbte.plotsystem.utils.Utils; import com.fastasyncworldedit.core.FaweAPI; -import com.onarandombox.MultiverseCore.MultiverseCore; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.math.BlockVector3; @@ -46,6 +45,8 @@ import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.mvplugins.multiverse.core.MultiverseCoreApi; +import org.mvplugins.multiverse.core.world.options.DeleteWorldOptions; import java.io.File; import java.io.IOException; @@ -59,7 +60,7 @@ public class PlotWorld implements IWorld { public static final int MAX_WORLD_HEIGHT = 256; public static final int MIN_WORLD_HEIGHT = 5; - private final MultiverseCore mvCore = PlotSystem.DependencyManager.getMultiverseCore(); + private final MultiverseCoreApi mvCore = PlotSystem.DependencyManager.getMultiverseCore(); private final String worldName; private final AbstractPlot plot; @@ -81,7 +82,9 @@ public boolean regenWorld(@NotNull Class ge @Override public boolean deleteWorld() { if (isWorldGenerated() && loadWorld()) { - if (mvCore.getMVWorldManager().deleteWorld(getWorldName(), true, true) && mvCore.saveWorldConfig()) { + if (Boolean.TRUE.equals(mvCore.getWorldManager().getWorld(getWorldName()) + .map(world -> mvCore.getWorldManager().deleteWorld(DeleteWorldOptions.world(world)).isSuccess()) + .getOrElse(false)) && mvCore.getWorldManager().saveWorldsConfig().isSuccess()) { try { File multiverseInventoriesConfig = new File(PlotSystem.DependencyManager.getMultiverseInventoriesConfigPath(getWorldName())); File worldGuardConfig = new File(PlotSystem.DependencyManager.getWorldGuardConfigPath(getWorldName())); @@ -102,7 +105,7 @@ public boolean loadWorld() { if (isWorldGenerated()) { if (isWorldLoaded()) { return true; - } else return mvCore.getMVWorldManager().loadWorld(getWorldName()) || isWorldLoaded(); + } else return mvCore.getWorldManager().loadWorld(getWorldName()).isSuccess() || isWorldLoaded(); } else PlotSystem.getPlugin().getComponentLogger().warn(text("Could not load world " + worldName + " because it is not generated!")); return false; } @@ -145,7 +148,7 @@ public Location getSpawnPoint(BlockVector3 plotVector) { } // Set spawn point 1 block above the highest block at the spawn location - spawnLocation.setY(getBukkitWorld().getHighestBlockYAt((int) spawnLocation.getX(), (int) spawnLocation.getZ()) + 1); + spawnLocation.setY(getBukkitWorld().getHighestBlockYAt((int) spawnLocation.getX(), (int) spawnLocation.getZ()) + 1d); return spawnLocation; } return null; @@ -199,7 +202,7 @@ public boolean isWorldLoaded() { @Override public boolean isWorldGenerated() { - return mvCore.getMVWorldManager().getMVWorld(worldName) != null || mvCore.getMVWorldManager().getUnloadedWorlds().contains(worldName); + return mvCore.getWorldManager().getWorld(worldName).isDefined(); } private ProtectedRegion getRegion(String regionName) { diff --git a/src/main/java/com/alpsbte/plotsystem/core/system/tutorial/utils/TutorialNPC.java b/src/main/java/com/alpsbte/plotsystem/core/system/tutorial/utils/TutorialNPC.java index 87c97b007..bed2b72f2 100644 --- a/src/main/java/com/alpsbte/plotsystem/core/system/tutorial/utils/TutorialNPC.java +++ b/src/main/java/com/alpsbte/plotsystem/core/system/tutorial/utils/TutorialNPC.java @@ -27,7 +27,7 @@ import de.oliver.fancynpcs.api.FancyNpcsPlugin; import de.oliver.fancynpcs.api.Npc; import de.oliver.fancynpcs.api.NpcData; -import de.oliver.fancynpcs.api.utils.SkinFetcher; +import de.oliver.fancynpcs.api.skins.SkinData; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -44,7 +44,7 @@ public class TutorialNPC { private final String id; private final String displayName; private final String interactionPrompt; - private final SkinFetcher.SkinData skin; + private final SkinData skin; private Npc npc; private TutorialNPCHologram hologram; @@ -61,7 +61,7 @@ public TutorialNPC(String npcId, String npcDisplayName, String npcInteractionPro this.id = npcId; this.displayName = npcDisplayName; this.interactionPrompt = npcInteractionPrompt; - this.skin = new SkinFetcher.SkinData(npcId, npcSknTexture, npcSkinSignature); + this.skin = new SkinData(npcId, SkinData.SkinVariant.AUTO, npcSknTexture, npcSkinSignature); } /** @@ -74,7 +74,7 @@ public void create(Location spawnPos) { NpcData npcData = new NpcData(id, UUID.randomUUID(), spawnPos); npc = FancyNpcsPlugin.get().getNpcAdapter().apply(npcData); - npc.getData().setSkin(skin); + npc.getData().setSkinData(skin); npc.getData().setDisplayName(EMPTY_TAG); npc.getData().setTurnToPlayer(true); npc.setSaveToFile(false); @@ -158,7 +158,7 @@ public String getInteractionPrompt() { return interactionPrompt; } - public SkinFetcher.SkinData getSkin() { + public SkinData getSkin() { return skin; } } diff --git a/src/main/java/com/alpsbte/plotsystem/utils/Utils.java b/src/main/java/com/alpsbte/plotsystem/utils/Utils.java index ee74b6e02..fb2206a74 100644 --- a/src/main/java/com/alpsbte/plotsystem/utils/Utils.java +++ b/src/main/java/com/alpsbte/plotsystem/utils/Utils.java @@ -36,7 +36,6 @@ import com.alpsbte.plotsystem.utils.io.LangPaths; import com.alpsbte.plotsystem.utils.io.LangUtil; import com.alpsbte.plotsystem.utils.items.CustomHeads; -import com.onarandombox.MultiverseCore.api.MultiverseWorld; import com.sk89q.worldedit.math.BlockVector2; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; @@ -53,6 +52,8 @@ import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.mvplugins.multiverse.core.world.LoadedMultiverseWorld; +import org.mvplugins.multiverse.external.vavr.control.Option; import java.sql.SQLException; import java.time.LocalDateTime; @@ -79,14 +80,14 @@ public static Location getSpawnLocation() { if (!Objects.requireNonNull(config.getString(ConfigPaths.SPAWN_WORLD)).equalsIgnoreCase("default")) { try { - MultiverseWorld spawnWorld = PlotSystem.DependencyManager.getMultiverseCore().getMVWorldManager().getMVWorld(config.getString(ConfigPaths.SPAWN_WORLD)); - return spawnWorld.getSpawnLocation(); + Option spawnWorld = PlotSystem.DependencyManager.getMultiverseCore().getWorldManager().getLoadedWorld(config.getString(ConfigPaths.SPAWN_WORLD)); + return spawnWorld.get().getSpawnLocation(); } catch (Exception ignore) { PlotSystem.getPlugin().getComponentLogger().warn(text("Could not find %s in multiverse config!"), ConfigPaths.SPAWN_WORLD); } } - return PlotSystem.DependencyManager.getMultiverseCore().getMVWorldManager().getSpawnWorld().getSpawnLocation(); + return PlotSystem.DependencyManager.getMultiverseCore().getWorldManager().getDefaultWorld().get().getSpawnLocation(); } public static void updatePlayerInventorySlots(Player player) { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0e8923cfc..190643ce2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ main: com.alpsbte.plotsystem.PlotSystem -version: 4.1.3 +version: 4.2.0 api-version: "1.21" name: Plot-System author: R3tuxn & Cinnazeyy