From d39cdd40a4cf04c2439ff26c58fbde67e133f862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Wed, 5 Feb 2014 23:37:50 +0100 Subject: [PATCH] clean up after driver api restructuring --- .../li/cil/oc/driver/TileEntityDriver.java | 8 -- .../cil/oc/driver/vanilla/DriverBeacon.java | 12 ++- .../oc/driver/vanilla/DriverBrewingStand.java | 14 ++-- .../oc/driver/vanilla/DriverComparator.java | 15 ++-- .../cil/oc/driver/vanilla/DriverFurnace.java | 13 ++- .../oc/driver/vanilla/DriverInventory.java | 16 +--- .../oc/driver/vanilla/DriverMobSpawner.java | 12 ++- .../oc/driver/vanilla/DriverRecordPlayer.java | 11 ++- .../li/cil/oc/driver/vanilla/DriverSign.java | 15 ++-- .../java/li/cil/oc/util/TileEntityLookup.java | 83 ------------------- 10 files changed, 39 insertions(+), 160 deletions(-) delete mode 100644 src/main/java/li/cil/oc/util/TileEntityLookup.java diff --git a/src/main/java/li/cil/oc/driver/TileEntityDriver.java b/src/main/java/li/cil/oc/driver/TileEntityDriver.java index 5f1c007b8..5cc9e607c 100644 --- a/src/main/java/li/cil/oc/driver/TileEntityDriver.java +++ b/src/main/java/li/cil/oc/driver/TileEntityDriver.java @@ -1,19 +1,11 @@ package li.cil.oc.driver; -import li.cil.oc.util.TileEntityLookup; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public abstract class TileEntityDriver implements li.cil.oc.api.driver.Block { public abstract Class getFilterClass(); - @Override - public boolean worksWith(final World world, final ItemStack stack) { - final Class clazz = TileEntityLookup.get(world, stack); - return clazz != null && getFilterClass().isAssignableFrom(clazz); - } - @Override public boolean worksWith(final World world, final int x, final int y, final int z) { final TileEntity tileEntity = world.getBlockTileEntity(x, y, z); diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverBeacon.java b/src/main/java/li/cil/oc/driver/vanilla/DriverBeacon.java index 8b8396108..b98fcd95c 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverBeacon.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverBeacon.java @@ -4,18 +4,16 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.potion.Potion; import net.minecraft.tileentity.TileEntityBeacon; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverBeacon extends DriverBlock { - DriverBeacon() { - super(new ItemStack(Block.beacon, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverBeacon extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntityBeacon.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverBrewingStand.java b/src/main/java/li/cil/oc/driver/vanilla/DriverBrewingStand.java index 8d1950d73..3a151c974 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverBrewingStand.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverBrewingStand.java @@ -4,19 +4,15 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.tileentity.TileEntityBrewingStand; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverBrewingStand extends DriverBlock { - DriverBrewingStand() { - super(new ItemStack(Item.brewingStand), - new ItemStack(Block.brewingStand, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverBrewingStand extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntityBrewingStand.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverComparator.java b/src/main/java/li/cil/oc/driver/vanilla/DriverComparator.java index ec548d549..bf78d7e74 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverComparator.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverComparator.java @@ -4,20 +4,15 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.tileentity.TileEntityComparator; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverComparator extends DriverBlock { - DriverComparator() { - super(new ItemStack(Item.comparator), - new ItemStack(Block.redstoneComparatorIdle, 1, OreDictionary.WILDCARD_VALUE), - new ItemStack(Block.redstoneComparatorActive, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverComparator extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntityComparator.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverFurnace.java b/src/main/java/li/cil/oc/driver/vanilla/DriverFurnace.java index dde511af2..558c34e11 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverFurnace.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverFurnace.java @@ -4,18 +4,15 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverFurnace extends DriverBlock { - DriverFurnace() { - super(new ItemStack(Block.furnaceIdle, 1, OreDictionary.WILDCARD_VALUE), - new ItemStack(Block.furnaceBurning, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverFurnace extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntityFurnace.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverInventory.java b/src/main/java/li/cil/oc/driver/vanilla/DriverInventory.java index e0bd73e7b..e844555dd 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverInventory.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverInventory.java @@ -5,23 +5,15 @@ import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import li.cil.oc.util.TileEntityLookup; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public final class DriverInventory implements li.cil.oc.api.driver.Block { +public final class DriverInventory extends TileEntityDriver { @Override - public boolean worksWith(final World world, final ItemStack stack) { - final Class clazz = TileEntityLookup.get(world, stack); - return clazz != null && IInventory.class.isAssignableFrom(clazz); - } - - @Override - public boolean worksWith(final World world, final int x, final int y, final int z) { - final TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - return tileEntity != null && tileEntity instanceof IInventory; + public Class getFilterClass() { + return IInventory.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverMobSpawner.java b/src/main/java/li/cil/oc/driver/vanilla/DriverMobSpawner.java index c8462dff7..3f36f472a 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverMobSpawner.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverMobSpawner.java @@ -4,17 +4,15 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.tileentity.TileEntityMobSpawner; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverMobSpawner extends DriverBlock { - DriverMobSpawner() { - super(new ItemStack(Block.mobSpawner, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverMobSpawner extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntityMobSpawner.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverRecordPlayer.java b/src/main/java/li/cil/oc/driver/vanilla/DriverRecordPlayer.java index 2a77ae281..32dd4de50 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverRecordPlayer.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverRecordPlayer.java @@ -4,18 +4,17 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.item.ItemRecord; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityRecordPlayer; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverRecordPlayer extends DriverBlock { - DriverRecordPlayer() { - super(new ItemStack(Block.jukebox, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverRecordPlayer extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntityRecordPlayer.class; } @Override diff --git a/src/main/java/li/cil/oc/driver/vanilla/DriverSign.java b/src/main/java/li/cil/oc/driver/vanilla/DriverSign.java index d7a5d9b2a..df4f32747 100644 --- a/src/main/java/li/cil/oc/driver/vanilla/DriverSign.java +++ b/src/main/java/li/cil/oc/driver/vanilla/DriverSign.java @@ -4,20 +4,15 @@ import li.cil.oc.api.network.Arguments; import li.cil.oc.api.network.Callback; import li.cil.oc.api.network.Context; import li.cil.oc.api.network.ManagedEnvironment; -import li.cil.oc.api.prefab.DriverBlock; import li.cil.oc.driver.ManagedTileEntityEnvironment; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; +import li.cil.oc.driver.TileEntityDriver; import net.minecraft.tileentity.TileEntitySign; import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -public final class DriverSign extends DriverBlock { - DriverSign() { - super(new ItemStack(Item.sign, 1, OreDictionary.WILDCARD_VALUE), - new ItemStack(Block.signPost, 1, OreDictionary.WILDCARD_VALUE), - new ItemStack(Block.signWall, 1, OreDictionary.WILDCARD_VALUE)); +public final class DriverSign extends TileEntityDriver { + @Override + public Class getFilterClass() { + return TileEntitySign.class; } @Override diff --git a/src/main/java/li/cil/oc/util/TileEntityLookup.java b/src/main/java/li/cil/oc/util/TileEntityLookup.java deleted file mode 100644 index 11d1c63ac..000000000 --- a/src/main/java/li/cil/oc/util/TileEntityLookup.java +++ /dev/null @@ -1,83 +0,0 @@ -package li.cil.oc.util; - -import net.minecraft.block.Block; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import java.util.HashMap; -import java.util.Map; - -public final class TileEntityLookup { - private static Map> cache = new HashMap>(); - - private TileEntityLookup() { - } - - public static Class get(World world, int blockId, int metadata) { - BlockData data = new BlockData(blockId, metadata); - if (!cache.containsKey(data)) { - Class clazz = null; - try { - boolean isValidBlock = blockId >= 0 && blockId < Block.blocksList.length && Block.blocksList[blockId] != null; - if (isValidBlock) { - Block block = Block.blocksList[blockId]; - if (block.hasTileEntity(metadata)) { - TileEntity tileEntity = block.createTileEntity(world, metadata); - if (tileEntity != null) { - clazz = tileEntity.getClass(); - } - } - } - } catch (Throwable ignored) { - } - cache.put(data, clazz); - } - return cache.get(data); - } - - public static Class get(World world, ItemStack stack) { - if (stack != null) { - if (stack.getItem() instanceof ItemBlock) { - ItemBlock itemBlock = (ItemBlock) stack.getItem(); - int blockId = itemBlock.getBlockID(); - int metadata = itemBlock.getMetadata(stack.getItemDamage()); - return get(world, blockId, metadata); - } - } - return null; - } - - private static class BlockData { - public final int id; - public final int metadata; - - public BlockData(int id, int metadata) { - this.id = id; - this.metadata = metadata; - } - - @Override - public int hashCode() { - return (23 * 31 + id) * 31 + metadata; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - if (obj instanceof BlockData) { - BlockData other = (BlockData) obj; - return other.id == id && other.metadata == metadata; - } - return false; - } - - @Override - public String toString() { - return "{" + id + ":" + metadata + "}"; - } - } -}