package com.gamerforea.guioneplayer;
import java.lang.reflect.Field;
import java.util.logging.Logger;
import net.minecraft.server.v1_7_R4.TileEntity;
import org.bukkit.Server;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.v1_7_R4.CraftWorld;
import org.bukkit.event.Cancellable;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public final class GuiOnePlayerPlugin
extends JavaPlugin
implements Listener
{
private final Config config = new Config(this);
public void onEnable()
{
this.config.reload();
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler(ignoreCancelled=true)
public void onInteract(PlayerInteractEvent event)
{
Action action = event.getAction();
if ((action == Action.LEFT_CLICK_BLOCK) || (action == Action.RIGHT_CLICK_BLOCK)) {
process(event.getClickedBlock(), event);
}
}
@EventHandler(ignoreCancelled=true)
public void onBreak(BlockBreakEvent event)
{
process(event.getBlock(), event);
}
private void process(Block block, Cancellable event)
{
boolean hasField = false;
boolean isOpened = false;
TileEntity tile = getTileEntity(block);
if (tile != null) {
try
{
Field field = tile.getClass().getField("isGuiOpened");
if (field.getType() == Boolean.TYPE)
{
hasField = true;
isOpened = field.getBoolean(tile);
}
}
catch (Exception localException) {}
}
if (isOpened) {
event.setCancelled(true);
}
if (this.config.isDebug())
{
int x = block.getX();
int y = block.getY();
int z = block.getZ();
getLogger().warning(String.format("X: %d, Y: %d, Z: %d, Tile: %s, HasField: %b, IsOpened: %b", new Object[] { Integer.valueOf(x), Integer.valueOf(y), Integer.valueOf(z), getClassName(tile), Boolean.valueOf(hasField), Boolean.valueOf(isOpened) }));
}
}
private static TileEntity getTileEntity(Block block)
{
if (block != null)
{
org.bukkit.World world = block.getWorld();
if ((world instanceof CraftWorld))
{
CraftWorld craftWorld = (CraftWorld)world;
net.minecraft.server.v1_7_R4.World nmsWorld = craftWorld.getHandle();
if (nmsWorld != null) {
return nmsWorld.getTileEntity(block.getX(), block.getY(), block.getZ());
}
}
}
return null;
}
private static String getClassName(Object obj)
{
return obj == null ? null : obj.getClass().getName();
}
}
А как он будет писать игроку что там уже есть внутри игрок и нельзя ломать если в коде плагина даже нету надписей таких?