diff --git a/src/api b/src/api index 8da3e91ed..9fdd2c667 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 8da3e91ed47235828863736461c148e29fdcf362 +Subproject commit 9fdd2c667eaed14f251090d9721506d7f8dbf918 diff --git a/src/main/java/noppes/npcs/ServerEventsHandler.java b/src/main/java/noppes/npcs/ServerEventsHandler.java index fd84d9f14..2e61e2624 100644 --- a/src/main/java/noppes/npcs/ServerEventsHandler.java +++ b/src/main/java/noppes/npcs/ServerEventsHandler.java @@ -26,7 +26,6 @@ import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; @@ -41,8 +40,8 @@ import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import noppes.npcs.blocks.tiles.ITileIcon; import noppes.npcs.blocks.tiles.TileBanner; -import noppes.npcs.blocks.tiles.TileSign; import noppes.npcs.config.ConfigDebug; import noppes.npcs.config.ConfigMain; import noppes.npcs.constants.*; @@ -224,45 +223,18 @@ public class ServerEventsHandler { int meta = player.worldObj.getBlockMetadata(event.x, event.y, event.z); if(meta >= 7) y--; - TileEntity tile = player.worldObj.getTileEntity(event.x, y, event.z); - if(tile instanceof TileBanner){ - TileBanner banner = (TileBanner) tile; - if(!banner.canEdit()){ - if(item.getItem() == CustomItems.wand && CustomNpcsPermissions.hasPermission(player, CustomNpcsPermissions.EDIT_BLOCKS)){ - banner.time = System.currentTimeMillis(); - if(player.worldObj.isRemote) - player.addChatComponentMessage(new ChatComponentTranslation("availability.editIcon")); - } - return; - } - } else if (tile instanceof TileSign) { - TileSign sign = (TileSign) tile; - if(!sign.canEdit()){ - if(item.getItem() == CustomItems.wand && CustomNpcsPermissions.hasPermission(player, CustomNpcsPermissions.EDIT_BLOCKS)){ - sign.time = System.currentTimeMillis(); - if(player.worldObj.isRemote) - player.addChatComponentMessage(new ChatComponentTranslation("availability.editIcon")); - } - return; - } - } - + ITileIcon tile = (ITileIcon)player.worldObj.getTileEntity(event.x, y, event.z); + if(!tile.canEdit()){ + if(item.getItem() == CustomItems.wand && CustomNpcsPermissions.hasPermission(player, CustomNpcsPermissions.EDIT_BLOCKS)){ + tile.setTime(System.currentTimeMillis()); + if(player.worldObj.isRemote) + player.addChatComponentMessage(new ChatComponentTranslation("availability.editIcon")); + } + return; + } if(!player.worldObj.isRemote){ - if(block == CustomItems.banner || block == CustomItems.wallBanner){ - // If sneaking and using shear - if(player.isSneaking() && item.getItem() == Items.shears){ - int currentVariantIndex = tile.bannerTrim.ordinal(); - int nextVariantIndex = (currentVariantIndex + 1) % EnumBannerVariant.values().length; - tile.bannerTrim = EnumBannerVariant.values()[nextVariantIndex]; - - player.worldObj.markBlockForUpdate(event.x, y, event.z); - event.setCanceled(true); - return; - } - } - - tile.icon = item.copy(); + tile.setIcon(item.copy()); player.worldObj.markBlockForUpdate(event.x, y, event.z); event.setCanceled(true); } diff --git a/src/main/java/noppes/npcs/blocks/tiles/ITileIcon.java b/src/main/java/noppes/npcs/blocks/tiles/ITileIcon.java new file mode 100644 index 000000000..8b851e4cc --- /dev/null +++ b/src/main/java/noppes/npcs/blocks/tiles/ITileIcon.java @@ -0,0 +1,11 @@ +package noppes.npcs.blocks.tiles; + +import net.minecraft.item.ItemStack; + +public interface ITileIcon { + boolean canEdit(); + + void setTime(long time); + + void setIcon(ItemStack stack); +} diff --git a/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java b/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java index 360f65a1c..dceb85378 100644 --- a/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java +++ b/src/main/java/noppes/npcs/blocks/tiles/TileBanner.java @@ -5,7 +5,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import noppes.npcs.constants.EnumBannerVariant; -public class TileBanner extends TileColorable { +public class TileBanner extends TileColorable implements ITileIcon { public ItemStack icon; public EnumBannerVariant bannerTrim = EnumBannerVariant.Normal; @@ -35,7 +35,18 @@ public class TileBanner extends TileColorable { return AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 2, zCoord + 1); } - public boolean canEdit(){ + @Override + public boolean canEdit(){ return System.currentTimeMillis() - time < 20000; } + + @Override + public void setTime(long time){ + this.time = time; + } + + @Override + public void setIcon(ItemStack stack){ + this.icon = stack; + } } diff --git a/src/main/java/noppes/npcs/blocks/tiles/TileSign.java b/src/main/java/noppes/npcs/blocks/tiles/TileSign.java index 58543c6ce..9782676a2 100644 --- a/src/main/java/noppes/npcs/blocks/tiles/TileSign.java +++ b/src/main/java/noppes/npcs/blocks/tiles/TileSign.java @@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; -public class TileSign extends TileVariant { +public class TileSign extends TileVariant implements ITileIcon { public ItemStack icon; public long time = 0; @@ -29,4 +29,14 @@ public class TileSign extends TileVariant { return System.currentTimeMillis() - time < 20000; } + @Override + public void setTime(long time) { + this.time = time; + } + + @Override + public void setIcon(ItemStack stack) { + this.icon = stack; + } + }