diff --git a/src/main/java/org/ultramine/server/UMEventHandler.java b/src/main/java/org/ultramine/server/UMEventHandler.java index 2236a27..66d07bf 100644 --- a/src/main/java/org/ultramine/server/UMEventHandler.java +++ b/src/main/java/org/ultramine/server/UMEventHandler.java @@ -5,6 +5,7 @@ import org.ultramine.server.util.BasicTypeParser; import org.ultramine.server.util.WarpLocation; +import cpw.mods.fml.common.eventhandler.Event; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.functions.GenericIterableFactory; @@ -19,6 +20,7 @@ import net.minecraft.util.ChatComponentStyle; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; import net.minecraft.world.ChunkPosition; @@ -27,6 +29,8 @@ import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.event.world.BlockEvent; public class UMEventHandler { @@ -172,4 +176,42 @@ { MinecraftServer.getServer().getConfigurationManager().getDataLoader().handlePlayerDimensionChange((EntityPlayerMP)e.player, e.fromDim, e.toDim); } + + @SideOnly(Side.SERVER) + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onBreakEvent(BlockEvent.BreakEvent e) + { + if(!PermissionHandler.getInstance().has(e.getPlayer(), "ability.player.blockbreak")) + { + e.setCanceled(true); + e.getPlayer().addChatMessage(new ChatComponentTranslation("ultramine.ability.player.blockbreak").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + } + + @SideOnly(Side.SERVER) + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onPlaceEvent(BlockEvent.PlaceEvent e) + { + if(!PermissionHandler.getInstance().has(e.player, "ability.player.blockplace")) + { + e.setCanceled(true); + e.player.addChatMessage(new ChatComponentTranslation("ultramine.ability.player.blockplace").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + } + + @SideOnly(Side.SERVER) + @SubscribeEvent(priority = EventPriority.HIGHEST) + public void onPlayerInteractEvent(PlayerInteractEvent e) + { + if(!PermissionHandler.getInstance().has(e.entityPlayer, "ability.player.useitem")) + { + e.useItem = Event.Result.DENY; + e.entityPlayer.addChatMessage(new ChatComponentTranslation("ultramine.ability.player.useitem").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + if(!PermissionHandler.getInstance().has(e.entityPlayer, "ability.player.useblock")) + { + e.useBlock = Event.Result.DENY; + e.entityPlayer.addChatMessage(new ChatComponentTranslation("ultramine.ability.player.useblock").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + } } diff --git a/src/main/resources/assets/ultramine/lang/en_US.lang b/src/main/resources/assets/ultramine/lang/en_US.lang index e20b44f..e0f1374 100644 --- a/src/main/resources/assets/ultramine/lang/en_US.lang +++ b/src/main/resources/assets/ultramine/lang/en_US.lang @@ -6,6 +6,11 @@ ultramine.autobroadcast.debugmsg=Server load: %s (Peak: %s), TPS: %s/20, Mobs: %s, Items: %s ultramine.autobackup.start=Autobackup started +ultramine.ability.blockbreak=You don't have permissions to break blocks +ultramine.ability.blockplace=You don't have permissions to place blocks +ultramine.ability.useitem=You don't have permissions to use items +ultramine.ability.useblock=You don't have permissions to use blocks + #Command generic commands.generic.world.invalid=Can't find world '%s' commands.generic.itemstack.data=Failed to parse item data: %s diff --git a/src/main/resources/assets/ultramine/lang/ru_RU.lang b/src/main/resources/assets/ultramine/lang/ru_RU.lang index 88c3310..674c4bc 100644 --- a/src/main/resources/assets/ultramine/lang/ru_RU.lang +++ b/src/main/resources/assets/ultramine/lang/ru_RU.lang @@ -6,6 +6,11 @@ ultramine.autobroadcast.debugmsg=Сервер нагружен на %s (В пике - %s), Тиков в секунду: %s/20, Мобов: %s, Предметов: %s ultramine.autobackup.start=Выполняется автоматический бэкап мира +ultramine.ability.blockbreak=У вас нет прав на разрушение блоков +ultramine.ability.blockplace=У вас нет прав на установку блоков +ultramine.ability.useitem=У вас нет прав на использование предметов +ultramine.ability.useblock=У вас нет прав на использование блоков + #Command generic commands.generic.world.invalid=Указанный мир не существует или неинициализирован '%s' commands.generic.itemstack.data=Не удалось разобрать предмет: %s