Fix Warp WorldSpawn

This commit is contained in:
2025-08-04 15:25:46 +02:00
parent 6c06313969
commit 636b949eea
4 changed files with 24 additions and 13 deletions
@@ -22,6 +22,7 @@ package de.steamwar.bausystem.features.warp;
import de.steamwar.bausystem.region.RegionSystem; import de.steamwar.bausystem.region.RegionSystem;
import de.steamwar.bausystem.worlddata.WorldData; import de.steamwar.bausystem.worlddata.WorldData;
import lombok.Getter; import lombok.Getter;
import lombok.Setter;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
@@ -35,14 +36,20 @@ public class Warp {
private static Map<String, Warp> warpMap = new HashMap<>(); private static Map<String, Warp> warpMap = new HashMap<>();
public static void enable() { public static void enable() {
Warp worldSpawn = new Warp("WorldSpawn"); Warp worldSpawn = new Warp("WorldSpawn") {
worldSpawn.setLocation(RegionSystem.INSTANCE.getWorldSpawn()); @Override
public Location getLocation() {
return RegionSystem.INSTANCE.getWorldSpawn();
}
};
worldSpawn.setMat(Material.NETHER_STAR); worldSpawn.setMat(Material.NETHER_STAR);
warpMap.put("WorldSpawn", worldSpawn); warpMap.put("WorldSpawn", worldSpawn);
} }
private String name; private String name;
@Setter
private Location location; private Location location;
@Setter
private Material mat; private Material mat;
private Warp(String name) { private Warp(String name) {
@@ -91,21 +98,13 @@ public class Warp {
return warpMap.get(name); return warpMap.get(name);
} }
public void setMat(Material mat) {
this.mat = mat;
}
public void setLocation(Location location) {
this.location = location;
}
public void delete() { public void delete() {
warpMap.remove(name); warpMap.remove(name);
WorldData.getWarpData().remove(name); WorldData.getWarpData().remove(name);
} }
public void teleport(Player player) { public void teleport(Player player) {
player.teleport(location, PlayerTeleportEvent.TeleportCause.PLUGIN); player.teleport(getLocation(), PlayerTeleportEvent.TeleportCause.PLUGIN);
player.playSound(location, Sound.ENTITY_ENDERMAN_TELEPORT, SoundCategory.PLAYERS, 1, 1); player.playSound(getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, SoundCategory.PLAYERS, 1, 1);
} }
} }
@@ -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.path.PathRegion;
import de.steamwar.bausystem.region.dynamic.spawn.SpawnPathRegion; import de.steamwar.bausystem.region.dynamic.spawn.SpawnPathRegion;
import de.steamwar.bausystem.region.dynamic.spawn.SpawnRegion; import de.steamwar.bausystem.region.dynamic.spawn.SpawnRegion;
import de.steamwar.bausystem.region.dynamic.spawn.SpawnResetter;
import lombok.NonNull; import lombok.NonNull;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
@@ -77,7 +78,11 @@ public class DynamicRegionSystem implements RegionSystem {
@Override @Override
public @NonNull Location getWorldSpawn() { 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 @Override
@@ -20,8 +20,10 @@
package de.steamwar.bausystem.region.dynamic.normal; package de.steamwar.bausystem.region.dynamic.normal;
import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.EditSession;
import de.steamwar.bausystem.region.FlagStorage;
import de.steamwar.bausystem.region.Point; import de.steamwar.bausystem.region.Point;
import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.region.Region;
import de.steamwar.bausystem.region.flags.Flag;
import de.steamwar.bausystem.utils.PasteBuilder; import de.steamwar.bausystem.utils.PasteBuilder;
import lombok.NonNull; import lombok.NonNull;
import lombok.Setter; import lombok.Setter;
@@ -92,6 +94,7 @@ public class WorkArea extends NormalArea {
EditSession editSession = pasteBuilder.minPoint(minPoint) EditSession editSession = pasteBuilder.minPoint(minPoint)
.maxPoint(maxPoint) .maxPoint(maxPoint)
.rotate(rotate) .rotate(rotate)
.color(region.getFlags().get(Flag.COLOR).getWithDefault())
.run(); .run();
region.getHistory().remember(editSession); region.getHistory().remember(editSession);
} }
@@ -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 SECTIONS_DIR = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "sections");
private static final File RESET_FILE = new File(SECTIONS_DIR, "spawn/SpawnBig.schem"); 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); private static final Location LOCATION = new Location(null, 0, 0, 0);
public boolean isBigSpawn() { public boolean isBigSpawn() {
@@ -81,6 +84,7 @@ public class SpawnResetter {
private void internalReset(Region region, boolean message) { private void internalReset(Region region, boolean message) {
Region.Area area = region.getArea(); Region.Area area = region.getArea();
Point minPoint = area.getMinPoint(false); Point minPoint = area.getMinPoint(false);
System.out.println(area.getClass() + " " + area.getResetFile());
Clipboard clipboard = FlatteningWrapper.impl.loadSchematic(area.getResetFile()); Clipboard clipboard = FlatteningWrapper.impl.loadSchematic(area.getResetFile());
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin()); BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
BlockVector3 to = minPoint.toBlockVector3().subtract(offset); BlockVector3 to = minPoint.toBlockVector3().subtract(offset);