mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-17 11:15:12 -04:00
clean up after driver api restructuring
This commit is contained in:
parent
70d99f625f
commit
d39cdd40a4
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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<BlockData, Class<? extends TileEntity>> cache = new HashMap<BlockData, Class<? extends TileEntity>>();
|
||||
|
||||
private TileEntityLookup() {
|
||||
}
|
||||
|
||||
public static Class<? extends TileEntity> get(World world, int blockId, int metadata) {
|
||||
BlockData data = new BlockData(blockId, metadata);
|
||||
if (!cache.containsKey(data)) {
|
||||
Class<? extends TileEntity> 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<? extends TileEntity> 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 + "}";
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user