From 636b949eeacc7ccc547d2dbc446f8715806662bf Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Mon, 4 Aug 2025 15:25:46 +0200 Subject: [PATCH] Fix Warp WorldSpawn --- .../bausystem/features/warp/Warp.java | 23 +++++++++---------- .../bausystem/region/DynamicRegionSystem.java | 7 +++++- .../region/dynamic/normal/WorkArea.java | 3 +++ .../region/dynamic/spawn/SpawnResetter.java | 4 ++++ 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/warp/Warp.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/warp/Warp.java index 696dac81..35126619 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/warp/Warp.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/warp/Warp.java @@ -22,6 +22,7 @@ package de.steamwar.bausystem.features.warp; import de.steamwar.bausystem.region.RegionSystem; import de.steamwar.bausystem.worlddata.WorldData; import lombok.Getter; +import lombok.Setter; import org.bukkit.*; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerTeleportEvent; @@ -35,14 +36,20 @@ public class Warp { private static Map warpMap = new HashMap<>(); public static void enable() { - Warp worldSpawn = new Warp("WorldSpawn"); - worldSpawn.setLocation(RegionSystem.INSTANCE.getWorldSpawn()); + Warp worldSpawn = new Warp("WorldSpawn") { + @Override + public Location getLocation() { + return RegionSystem.INSTANCE.getWorldSpawn(); + } + }; worldSpawn.setMat(Material.NETHER_STAR); warpMap.put("WorldSpawn", worldSpawn); } private String name; + @Setter private Location location; + @Setter private Material mat; private Warp(String name) { @@ -91,21 +98,13 @@ public class Warp { return warpMap.get(name); } - public void setMat(Material mat) { - this.mat = mat; - } - - public void setLocation(Location location) { - this.location = location; - } - public void delete() { warpMap.remove(name); WorldData.getWarpData().remove(name); } public void teleport(Player player) { - player.teleport(location, PlayerTeleportEvent.TeleportCause.PLUGIN); - player.playSound(location, Sound.ENTITY_ENDERMAN_TELEPORT, SoundCategory.PLAYERS, 1, 1); + player.teleport(getLocation(), PlayerTeleportEvent.TeleportCause.PLUGIN); + player.playSound(getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, SoundCategory.PLAYERS, 1, 1); } } diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java index 170bc191..da082a16 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/DynamicRegionSystem.java @@ -27,6 +27,7 @@ import de.steamwar.bausystem.region.dynamic.global.GlobalRegion; import de.steamwar.bausystem.region.dynamic.path.PathRegion; import de.steamwar.bausystem.region.dynamic.spawn.SpawnPathRegion; import de.steamwar.bausystem.region.dynamic.spawn.SpawnRegion; +import de.steamwar.bausystem.region.dynamic.spawn.SpawnResetter; import lombok.NonNull; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -77,7 +78,11 @@ public class DynamicRegionSystem implements RegionSystem { @Override public @NonNull Location getWorldSpawn() { - return new Location(Bukkit.getWorlds().get(0), 0, 0, 0); + if (SpawnResetter.isBigSpawn()) { + return SpawnResetter.BIG_WORLD_SPAWN; + } else { + return SpawnResetter.SMALL_WORLD_SPAWN; + } } @Override diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/WorkArea.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/WorkArea.java index 2a136712..8aba785f 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/WorkArea.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/normal/WorkArea.java @@ -20,8 +20,10 @@ package de.steamwar.bausystem.region.dynamic.normal; import com.sk89q.worldedit.EditSession; +import de.steamwar.bausystem.region.FlagStorage; import de.steamwar.bausystem.region.Point; import de.steamwar.bausystem.region.Region; +import de.steamwar.bausystem.region.flags.Flag; import de.steamwar.bausystem.utils.PasteBuilder; import lombok.NonNull; import lombok.Setter; @@ -92,6 +94,7 @@ public class WorkArea extends NormalArea { EditSession editSession = pasteBuilder.minPoint(minPoint) .maxPoint(maxPoint) .rotate(rotate) + .color(region.getFlags().get(Flag.COLOR).getWithDefault()) .run(); region.getHistory().remember(editSession); } diff --git a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java index e9d0b218..18d011c2 100644 --- a/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java +++ b/BauSystem/BauSystem_RegionDynamic/src/de/steamwar/bausystem/region/dynamic/spawn/SpawnResetter.java @@ -38,6 +38,9 @@ public class SpawnResetter { private static final File SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections"); private static final File RESET_FILE = new File(SECTIONS_DIR, "spawn/SpawnBig.schem"); + public static final Location BIG_WORLD_SPAWN = new Location(Bukkit.getWorlds().get(0), 0.5, 26, 0.5); + public static final Location SMALL_WORLD_SPAWN = new Location(Bukkit.getWorlds().get(0), 0.5, 32, 0.5); + private static final Location LOCATION = new Location(null, 0, 0, 0); public boolean isBigSpawn() { @@ -81,6 +84,7 @@ public class SpawnResetter { private void internalReset(Region region, boolean message) { Region.Area area = region.getArea(); Point minPoint = area.getMinPoint(false); + System.out.println(area.getClass() + " " + area.getResetFile()); Clipboard clipboard = FlatteningWrapper.impl.loadSchematic(area.getResetFile()); BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin()); BlockVector3 to = minPoint.toBlockVector3().subtract(offset);