Forge Mod

ChunkBanMod

Vytvoř mi minecraft mod na chunk ban hemmer.Mod pojmenuj jen chunk ban mod a jak chunk ban mod funguje když někoho praštím ban hemmer nějaký hrač tak hrrač ktereho tím praští dostane ban v danem chunku v kterím stojí,pokud hrač stojí mezi 2 chanky tak jeden z nich se zapne a bouchnutí hrač se teleportuje do něho.Hrač v chunku muže bít hodně dlouho dokud ho hrač jakýkoliv nebouchne zas chank ban hemmerem.Hrač se z daneho chunku nemuže dostat do jíneho daní hrač muže se pohybovat v daním chanku.Daní hrač v ban chunku nemuže bojovat ani dělat pvp.

src/main/java/eu/codexe/chunkbanmod/chunk/BanChunkManager.java
package eu.codexe.chunkbanmod.chunk;

import eu.codexe.chunkbanmod.ChunkBanMod;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.level.ChunkPos;
import net.minecraft.world.level.Level;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingEvent;
import net.minecraftforge.event.level.BlockEvent;
import net.minecraftforge.event.entity.player.AttackEntityEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.entity.Entity;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;

@Mod.EventBusSubscriber(modid = ChunkBanMod.MOD_ID)
public final class BanChunkManager {
    private static final Map<UUID, ChunkPos> PLAYER_BANNED_CHUNK = new ConcurrentHashMap<>();
    private static final Set<String> ACTIVE_CHUNKS = ConcurrentHashMap.newKeySet();

    private BanChunkManager() {
    }

    public static void toggleChunkBan(Level level, ChunkPos chunkPos, ServerPlayer owner) {
        String key = key(level, chunkPos);
        if (ACTIVE_CHUNKS.contains(key)) {
            ACTIVE_CHUNKS.remove(key);
        } else {
            ACTIVE_CHUNKS.add(key);
        }
        PLAYER_BANNED_CHUNK.put(owner.getUUID(), chunkPos);
    }

    public static boolean isChunkBanned(Level level, ChunkPos chunkPos) {
        return ACTIVE_CHUNKS.contains(key(level, chunkPos));
    }

    public static boolean isPlayerRestricted(ServerPlayer player) {
        return PLAYER_BANNED_CHUNK.containsKey(player.getUUID());
    }

    public static ChunkPos getRestrictedChunk(ServerPlayer player) {
        return PLAYER_BANNED_CHUNK.get(player.getUUID());
    }

    public static void clearRestriction(ServerPlayer player) {
        PLAYER_BANNED_CHUNK.remove(player.getUUID());
    }

    @SubscribeEvent
    public static void onPlayerTick(LivingEvent.LivingTickEvent event) {
        if (!(event.getEntity() instanceof ServerPlayer player)) {
            return;
        }