updated dependencies and updated all usages accordingly, replaced deprecated methods, and updated project to JDK 25
This commit is contained in:
@@ -2,6 +2,7 @@ package eu.mhsl.minenet.minigames.handler;
|
||||
|
||||
import eu.mhsl.minenet.minigames.handler.global.AddEntityToInstanceEventListener;
|
||||
import eu.mhsl.minenet.minigames.handler.global.ChatFormatHandler;
|
||||
import eu.mhsl.minenet.minigames.handler.global.PlayerFreezeHandler;
|
||||
import eu.mhsl.minenet.minigames.handler.global.PlayerLeaveHandler;
|
||||
import eu.mhsl.minenet.minigames.handler.global.PlayerLoginHandler;
|
||||
import net.minestom.server.MinecraftServer;
|
||||
@@ -11,6 +12,7 @@ public enum Listeners {
|
||||
SPAWN(new AddEntityToInstanceEventListener()),
|
||||
LOGIN(new PlayerLoginHandler()),
|
||||
LEAVE(new PlayerLeaveHandler()),
|
||||
FREEZE(new PlayerFreezeHandler()),
|
||||
CHAT(new ChatFormatHandler());
|
||||
|
||||
Listeners(EventListener<?> event) {
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package eu.mhsl.minenet.minigames.handler.global;
|
||||
|
||||
import net.minestom.server.coordinate.Pos;
|
||||
import net.minestom.server.entity.Player;
|
||||
import net.minestom.server.event.EventListener;
|
||||
import net.minestom.server.event.player.PlayerTickEvent;
|
||||
import net.minestom.server.instance.Instance;
|
||||
import net.minestom.server.instance.block.Block;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Weder Minestom noch MinestomPvP verwalten die TICKS_FROZEN-Metadata. Der 26.x-Client baut das
|
||||
* Freeze-Overlay bei Powder-Snow-Kontakt zwar selbst auf, der Abbau ist aber server-authoritative —
|
||||
* ohne diese Vanilla-Logik bleibt das Overlay dauerhaft haengen (auch ueber Instanzwechsel hinweg).
|
||||
*/
|
||||
public class PlayerFreezeHandler implements EventListener<PlayerTickEvent> {
|
||||
private static final int TICKS_REQUIRED_TO_FREEZE = 140;
|
||||
|
||||
@Override
|
||||
public @NotNull Class<PlayerTickEvent> eventType() {
|
||||
return PlayerTickEvent.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Result run(@NotNull PlayerTickEvent event) {
|
||||
Player p = event.getPlayer();
|
||||
Instance instance = p.getInstance();
|
||||
if(instance == null) return Result.SUCCESS;
|
||||
|
||||
Pos pos = p.getPosition();
|
||||
boolean inPowderSnow = instance.getBlock(pos).compare(Block.POWDER_SNOW)
|
||||
|| instance.getBlock(pos.add(0, 1, 0)).compare(Block.POWDER_SNOW);
|
||||
|
||||
int ticksFrozen = p.getEntityMeta().getTickFrozen();
|
||||
if(inPowderSnow) {
|
||||
p.getEntityMeta().setTickFrozen(Math.min(TICKS_REQUIRED_TO_FREEZE, ticksFrozen + 1));
|
||||
} else if(ticksFrozen > 0) {
|
||||
p.getEntityMeta().setTickFrozen(Math.max(0, ticksFrozen - 2));
|
||||
}
|
||||
|
||||
return Result.SUCCESS;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user