moved existing spawning behavior to craftattack

This commit is contained in:
2025-06-21 11:41:13 +02:00
parent 9acac488f2
commit 220fb9e229
3 changed files with 3 additions and 3 deletions

View File

@ -0,0 +1,20 @@
package eu.mhsl.craftattack.spawn.craftattack.appliances.tooling.spawnpoint;
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceCommand;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull;
class SetSpawnpointCommand extends ApplianceCommand.PlayerChecked<Spawnpoint> {
public SetSpawnpointCommand() {
super("setSpawnpoint");
}
@Override
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception {
this.getAppliance().setSpawnpoint(this.getPlayer().getLocation());
sender.sendMessage(Component.text("Spawnpoint updated!", NamedTextColor.GREEN));
}
}

View File

@ -0,0 +1,20 @@
package eu.mhsl.craftattack.spawn.craftattack.appliances.tooling.spawnpoint;
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
import org.bukkit.event.EventHandler;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
class SpawnAtSpawnpointListener extends ApplianceListener<Spawnpoint> {
@EventHandler
public void onJoin(PlayerJoinEvent event) {
this.getAppliance().handlePlayerLogin(event.getPlayer());
}
@EventHandler
public void onRespawn(PlayerRespawnEvent event) {
if(event.isBedSpawn()) return;
if(event.isAnchorSpawn()) return;
event.setRespawnLocation(this.getAppliance().getSpawnPoint());
}
}

View File

@ -0,0 +1,54 @@
package eu.mhsl.craftattack.spawn.craftattack.appliances.tooling.spawnpoint;
import eu.mhsl.craftattack.spawn.core.appliance.Appliance;
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceCommand;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.NamespacedKey;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Locale;
public class Spawnpoint extends Appliance {
private static final String namespace = Spawnpoint.class.getSimpleName().toLowerCase(Locale.ROOT);
public static NamespacedKey alreadySpawned = new NamespacedKey(namespace, "alreadySpawned".toLowerCase());
private static final String position = "position";
private Location spawnPoint;
public Spawnpoint() {
super("spawnpoint");
this.spawnPoint = this.localConfig().getLocation(position, new Location(Bukkit.getWorlds().getFirst(), 0, 100, 0));
}
public void setSpawnpoint(Location location) {
this.localConfig().set("position", location);
this.spawnPoint = location;
}
public void handlePlayerLogin(Player player) {
PersistentDataContainer dataContainer = player.getPersistentDataContainer();
if(dataContainer.has(alreadySpawned)) return;
player.teleportAsync(this.spawnPoint);
dataContainer.set(alreadySpawned, PersistentDataType.BOOLEAN, true);
}
public Location getSpawnPoint() {
return this.spawnPoint;
}
@Override
protected @NotNull List<ApplianceCommand<?>> commands() {
return List.of(new SetSpawnpointCommand());
}
@Override
protected @NotNull List<Listener> listeners() {
return List.of(new SpawnAtSpawnpointListener());
}
}