diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AntiPlayerCollision.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AntiPlayerCollision.java new file mode 100644 index 00000000..83b5df3a --- /dev/null +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/world/AntiPlayerCollision.java @@ -0,0 +1,53 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2026 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.features.world; + +import de.steamwar.linkage.Linked; +import org.bukkit.Bukkit; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.Team; + +@Linked +public class AntiPlayerCollision implements Listener { + + private static Team TEAM = getTeam(); + + private static Team getTeam() { + Scoreboard board = Bukkit.getScoreboardManager().getMainScoreboard(); + Team team = board.getTeam("players"); + if (team == null) team = board.registerNewTeam("players"); + team.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER); + return team; + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + TEAM.addPlayer(event.getPlayer()); + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent event) { + TEAM.removePlayer(event.getPlayer()); + } +}