Скачать Break Denyer — Minecraft Моды — MetaMods

Break Denyer

Активный

Установок

0

Последнее обновление

8 лет назад
Клиент
Fabric
Quilt
Forge
Neoforge
Утилиты

Break Denyer

Этот мод предоставляет администраторам серверов Minecraft эффективный инструмент для защиты игрового пространства от нежелательного вмешательства обычных игроков. Основная функция заключается в блокировке возможности разрушать и устанавливать блоки для всех участников, не обладающих операторскими правами.

Основные возможности

Данное решение идеально подходит для серверов, работающих в режимах выживания или приключений, где администраторы хотят сохранить определенные конструкции и ландшафты в неприкосновенности. При этом игроки сохраняют возможность сражаться с мобами, создавать предметы, использовать оружие и взаимодействовать с другими игровыми механиками, не связанными с изменением блоков.

Техническая реализация

Мод работает на стороне сервера и автоматически отменяет события разрушения и размещения блоков, если игрок не имеет операторского статуса. Проверка прав осуществляется через системные механизмы Minecraft.

package thut.breakdeny;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.management.UserListOpsEntry;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BlockEvent.BreakEvent;
import net.minecraftforge.event.world.BlockEvent.PlaceEvent;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;

@Mod(modid = BreakDeny.MODID, name = "Break Denyer", version = BreakDeny.VERSION, acceptableRemoteVersions = "*")
public class BreakDeny
{
    public static final String MODID = "break_denyer";
    public static final String VERSION = "1.0.0";

    @EventHandler
    public void preInit(FMLPreInitializationEvent event)
    {
        if (event.getSide() == Side.SERVER) MinecraftForge.EVENT_BUS.register(this);
    }

    @SubscribeEvent
    public void denyBreak(BreakEvent event)
    {
        EntityPlayer player = event.getPlayer();
        if (!isOp(player)) event.setCanceled(true);
    }

    @SubscribeEvent
    public void denyPlace(PlaceEvent event)
    {
        EntityPlayer player = event.player;
        if (!isOp(player)) event.setCanceled(true);
    }

    private boolean isOp(EntityPlayer player)
    {
        if (player != null && !player.worldObj.isRemote)
        {
            UserListOpsEntry userentry = (UserListOpsEntry) ((EntityPlayerMP) player).mcServer.getConfigurationManager()
                .getOppedPlayers().getEntry(player.getGameProfile());

            if (userentry != null
                || !FMLCommonHandler.instance().getMinecraftServerInstance().isDedicatedServer()) { return true; }
        }
        return false;
    }
}
Участники проекта
Thutmose_III

Thutmose_III

Создан: 11 ноя 2016

ID: 28411