create IFacadeItem API, close #1946
This commit is contained in:
parent
88351a6bd8
commit
260a57d600
12 changed files with 94 additions and 70 deletions
9
api/buildcraft/api/facades/FacadeType.java
Normal file
9
api/buildcraft/api/facades/FacadeType.java
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
package buildcraft.api.facades;
|
||||||
|
|
||||||
|
public enum FacadeType {
|
||||||
|
Basic, Phased;
|
||||||
|
|
||||||
|
public static FacadeType fromOrdinal(int ordinal) {
|
||||||
|
return ordinal == 1 ? Phased : Basic;
|
||||||
|
}
|
||||||
|
}
|
14
api/buildcraft/api/facades/IFacadeItem.java
Normal file
14
api/buildcraft/api/facades/IFacadeItem.java
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package buildcraft.api.facades;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface IFacadeItem {
|
||||||
|
FacadeType getFacadeType(ItemStack facade);
|
||||||
|
|
||||||
|
ItemStack getFacadeForBlock(Block block, int meta);
|
||||||
|
|
||||||
|
Block[] getBlocksForFacade(ItemStack facade);
|
||||||
|
|
||||||
|
int[] getMetaValuesForFacade(ItemStack facade);
|
||||||
|
}
|
11
api/buildcraft/api/facades/package-info.java
Normal file
11
api/buildcraft/api/facades/package-info.java
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
|
||||||
|
* http://www.mod-buildcraft.com
|
||||||
|
*
|
||||||
|
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||||
|
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||||
|
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||||
|
*/
|
||||||
|
@API(apiVersion = "1.0", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|facades")
|
||||||
|
package buildcraft.api.facades;
|
||||||
|
import cpw.mods.fml.common.API;
|
|
@ -607,9 +607,9 @@ public class BuildCraftSilicon extends BuildCraftMod {
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
public void remap(FMLMissingMappingsEvent event) {
|
public void remap(FMLMissingMappingsEvent event) {
|
||||||
for (FMLMissingMappingsEvent.MissingMapping mapping: event.get()) {
|
for (FMLMissingMappingsEvent.MissingMapping mapping: event.get()) {
|
||||||
if (mapping.name.equals("BuildCraft|Silicon:null"))
|
if (mapping.name.equals("BuildCraft|Silicon:null")) {
|
||||||
mapping.remap(laserBlock);
|
mapping.remap(laserBlock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -532,7 +532,7 @@ public class BuildCraftTransport extends BuildCraftMod {
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
public void postInit(FMLPostInitializationEvent evt) {
|
public void postInit(FMLPostInitializationEvent evt) {
|
||||||
ItemFacade.initialize();
|
facadeItem.initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
|
|
|
@ -19,7 +19,6 @@ import buildcraft.BuildCraftCore;
|
||||||
import buildcraft.BuildCraftFactory;
|
import buildcraft.BuildCraftFactory;
|
||||||
import buildcraft.BuildCraftSilicon;
|
import buildcraft.BuildCraftSilicon;
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.transport.ItemFacade;
|
|
||||||
|
|
||||||
public enum CreativeTabBuildCraft {
|
public enum CreativeTabBuildCraft {
|
||||||
|
|
||||||
|
@ -51,12 +50,12 @@ public enum CreativeTabBuildCraft {
|
||||||
case PIPES:
|
case PIPES:
|
||||||
return new ItemStack (BuildCraftTransport.pipeItemsDiamond, 1);
|
return new ItemStack (BuildCraftTransport.pipeItemsDiamond, 1);
|
||||||
case FACADES:
|
case FACADES:
|
||||||
return ItemFacade.getFacade(Blocks.brick_block, 0);
|
return BuildCraftTransport.facadeItem.getFacadeForBlock(Blocks.brick_block, 0);
|
||||||
case BOARDS:
|
case BOARDS:
|
||||||
return new ItemStack(BuildCraftSilicon.redstoneBoard, 1);
|
return new ItemStack(BuildCraftSilicon.redstoneBoard, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ItemFacade.getFacade(Blocks.brick_block, 0);
|
return BuildCraftTransport.facadeItem.getFacadeForBlock(Blocks.brick_block, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class Tab extends CreativeTabs {
|
private final class Tab extends CreativeTabs {
|
||||||
|
|
|
@ -23,12 +23,10 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.world.biome.BiomeGenBase;
|
import net.minecraft.world.biome.BiomeGenBase;
|
||||||
|
|
||||||
import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent;
|
import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent;
|
||||||
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
|
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage;
|
||||||
|
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.core.recipes.AssemblyRecipeManager;
|
import buildcraft.core.recipes.AssemblyRecipeManager;
|
||||||
import buildcraft.core.recipes.RefineryRecipeManager;
|
import buildcraft.core.recipes.RefineryRecipeManager;
|
||||||
import buildcraft.energy.worldgen.OilPopulate;
|
import buildcraft.energy.worldgen.OilPopulate;
|
||||||
|
@ -161,7 +159,8 @@ public final class InterModComms {
|
||||||
} else {
|
} else {
|
||||||
Block block = (Block) Block.blockRegistry.getObject(blockName);
|
Block block = (Block) Block.blockRegistry.getObject(blockName);
|
||||||
if (block.getRenderType() != 0 && block.getRenderType() != 31) {
|
if (block.getRenderType() != 0 && block.getRenderType() != 31) {
|
||||||
ItemFacade.addFacade("buildcraft:facade{" + blockName + "}",
|
BuildCraftTransport.facadeItem.addFacade(
|
||||||
|
"buildcraft:facade{" + blockName + "}",
|
||||||
new ItemStack(block, 1, metaId));
|
new ItemStack(block, 1, metaId));
|
||||||
} else {
|
} else {
|
||||||
logRedundantAddFacadeMessage(m, block.toString());
|
logRedundantAddFacadeMessage(m, block.toString());
|
||||||
|
@ -173,7 +172,8 @@ public final class InterModComms {
|
||||||
|
|
||||||
Block block = Block.getBlockFromItem(modItemStack.getItem());
|
Block block = Block.getBlockFromItem(modItemStack.getItem());
|
||||||
if (block != null && block.getRenderType() != 0 && block.getRenderType() != 31) {
|
if (block != null && block.getRenderType() != 0 && block.getRenderType() != 31) {
|
||||||
ItemFacade.addFacade("buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "}",
|
BuildCraftTransport.facadeItem.addFacade(
|
||||||
|
"buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "}",
|
||||||
modItemStack);
|
modItemStack);
|
||||||
} else {
|
} else {
|
||||||
logRedundantAddFacadeMessage(m, block.toString());
|
logRedundantAddFacadeMessage(m, block.toString());
|
||||||
|
|
|
@ -9,16 +9,17 @@
|
||||||
package buildcraft.silicon.recipes;
|
package buildcraft.silicon.recipes;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.api.core.JavaTools;
|
import buildcraft.api.core.JavaTools;
|
||||||
|
import buildcraft.api.facades.FacadeType;
|
||||||
|
import buildcraft.api.facades.IFacadeItem;
|
||||||
import buildcraft.api.recipes.CraftingResult;
|
import buildcraft.api.recipes.CraftingResult;
|
||||||
import buildcraft.api.transport.PipeWire;
|
import buildcraft.api.transport.PipeWire;
|
||||||
import buildcraft.silicon.ItemRedstoneChipset;
|
import buildcraft.silicon.ItemRedstoneChipset;
|
||||||
import buildcraft.silicon.TileIntegrationTable;
|
import buildcraft.silicon.TileIntegrationTable;
|
||||||
import buildcraft.transport.ItemFacade;
|
import buildcraft.transport.ItemFacade;
|
||||||
|
import buildcraft.transport.ItemFacade.FacadeState;
|
||||||
import buildcraft.transport.ItemPipeWire;
|
import buildcraft.transport.ItemPipeWire;
|
||||||
|
|
||||||
public class AdvancedFacadeRecipe extends IntegrationTableRecipe {
|
public class AdvancedFacadeRecipe extends IntegrationTableRecipe {
|
||||||
|
@ -36,7 +37,8 @@ public class AdvancedFacadeRecipe extends IntegrationTableRecipe {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isValidInputB(ItemStack inputB) {
|
public boolean isValidInputB(ItemStack inputB) {
|
||||||
return inputB != null && (inputB.getItem() instanceof ItemFacade && ItemFacade.getType(inputB) == ItemFacade.FacadeType.Basic ||
|
return inputB != null && (inputB.getItem() instanceof ItemFacade &&
|
||||||
|
((IFacadeItem) inputB.getItem()).getFacadeType(inputB) == FacadeType.Basic ||
|
||||||
inputB.getItem() == BuildCraftTransport.plugItem);
|
inputB.getItem() == BuildCraftTransport.plugItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,14 +61,14 @@ public class AdvancedFacadeRecipe extends IntegrationTableRecipe {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wire != null) {
|
if (wire != null) {
|
||||||
ItemFacade.FacadeState[] states = ItemFacade.getFacadeStates(inputA);
|
FacadeState[] states = ItemFacade.getFacadeStates(inputA);
|
||||||
ItemFacade.FacadeState additionalState;
|
FacadeState additionalState;
|
||||||
|
|
||||||
if (inputB.getItem() == BuildCraftTransport.plugItem) {
|
if (inputB.getItem() == BuildCraftTransport.plugItem) {
|
||||||
additionalState = ItemFacade.FacadeState.createTransparent(wire);
|
additionalState = FacadeState.createTransparent(wire);
|
||||||
} else {
|
} else {
|
||||||
additionalState = ItemFacade.getFacadeStates(inputB)[0];
|
additionalState = ItemFacade.getFacadeStates(inputB)[0];
|
||||||
additionalState = ItemFacade.FacadeState.create(additionalState.block, additionalState.metadata, wire);
|
additionalState = FacadeState.create(additionalState.block, additionalState.metadata, wire);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if in states array exists state with the same wire just override it
|
// if in states array exists state with the same wire just override it
|
||||||
|
@ -83,7 +85,7 @@ public class AdvancedFacadeRecipe extends IntegrationTableRecipe {
|
||||||
|
|
||||||
result.energyCost = 50000;
|
result.energyCost = 50000;
|
||||||
result.crafted = ItemFacade.getFacade(JavaTools.concat(states,
|
result.crafted = ItemFacade.getFacade(JavaTools.concat(states,
|
||||||
new ItemFacade.FacadeState[] {additionalState}));
|
new FacadeState[] {additionalState}));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -663,7 +663,7 @@ public class BlockGenericPipe extends BlockBuildCraft {
|
||||||
FacadeMatrix matrix = getPipe(world, x, y, z).container.renderState.facadeMatrix;
|
FacadeMatrix matrix = getPipe(world, x, y, z).container.renderState.facadeMatrix;
|
||||||
Block block = matrix.getFacadeBlock(dir);
|
Block block = matrix.getFacadeBlock(dir);
|
||||||
if (block != null) {
|
if (block != null) {
|
||||||
return ItemFacade.getFacade(block,
|
return BuildCraftTransport.facadeItem.getFacadeForBlock(block,
|
||||||
matrix.getFacadeMetaId(dir));
|
matrix.getFacadeMetaId(dir));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,16 +27,15 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.api.core.JavaTools;
|
import buildcraft.api.core.JavaTools;
|
||||||
import buildcraft.api.core.Position;
|
import buildcraft.api.core.Position;
|
||||||
|
import buildcraft.api.facades.FacadeType;
|
||||||
|
import buildcraft.api.facades.IFacadeItem;
|
||||||
import buildcraft.api.recipes.BuildcraftRecipeRegistry;
|
import buildcraft.api.recipes.BuildcraftRecipeRegistry;
|
||||||
import buildcraft.api.transport.IPipePluggable;
|
import buildcraft.api.transport.IPipePluggable;
|
||||||
import buildcraft.api.transport.IPipeTile;
|
import buildcraft.api.transport.IPipeTile;
|
||||||
|
@ -47,7 +46,7 @@ import buildcraft.core.ItemBuildCraft;
|
||||||
import buildcraft.core.proxy.CoreProxy;
|
import buildcraft.core.proxy.CoreProxy;
|
||||||
import buildcraft.core.utils.StringUtils;
|
import buildcraft.core.utils.StringUtils;
|
||||||
|
|
||||||
public class ItemFacade extends ItemBuildCraft {
|
public class ItemFacade extends ItemBuildCraft implements IFacadeItem {
|
||||||
public static class FacadeState {
|
public static class FacadeState {
|
||||||
public final Block block;
|
public final Block block;
|
||||||
public final int metadata;
|
public final int metadata;
|
||||||
|
@ -124,14 +123,6 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum FacadeType {
|
|
||||||
Basic, Phased;
|
|
||||||
|
|
||||||
public static FacadeType fromOrdinal(int ordinal) {
|
|
||||||
return ordinal == 1 ? Phased : Basic;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final LinkedList<ItemStack> allFacades = new LinkedList<ItemStack>();
|
public static final LinkedList<ItemStack> allFacades = new LinkedList<ItemStack>();
|
||||||
public static final LinkedList<String> blacklistedFacades = new LinkedList<String>();
|
public static final LinkedList<String> blacklistedFacades = new LinkedList<String>();
|
||||||
|
|
||||||
|
@ -147,7 +138,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getItemStackDisplayName(ItemStack itemstack) {
|
public String getItemStackDisplayName(ItemStack itemstack) {
|
||||||
switch (getType(itemstack)) {
|
switch (getFacadeType(itemstack)) {
|
||||||
case Basic:
|
case Basic:
|
||||||
return super.getItemStackDisplayName(itemstack) + ": " + getFacadeStateDisplayName(getFacadeStates(itemstack)[0]);
|
return super.getItemStackDisplayName(itemstack) + ": " + getFacadeStateDisplayName(getFacadeStates(itemstack)[0]);
|
||||||
case Phased:
|
case Phased:
|
||||||
|
@ -164,7 +155,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean debug) {
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean debug) {
|
||||||
if (getType(stack) == FacadeType.Phased) {
|
if (getFacadeType(stack) == FacadeType.Phased) {
|
||||||
String stateString = StringUtils.localize("item.FacadePhased.state");
|
String stateString = StringUtils.localize("item.FacadePhased.state");
|
||||||
FacadeState defaultState = null;
|
FacadeState defaultState = null;
|
||||||
for (FacadeState state : getFacadeStates(stack)) {
|
for (FacadeState state : getFacadeStates(stack)) {
|
||||||
|
@ -224,7 +215,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void initialize() {
|
public void initialize() {
|
||||||
for (Object o : Block.blockRegistry) {
|
for (Object o : Block.blockRegistry) {
|
||||||
Block b = (Block) o;
|
Block b = (Block) o;
|
||||||
|
|
||||||
|
@ -246,7 +237,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void registerValidFacades(Block block, Item item) {
|
private void registerValidFacades(Block block, Item item) {
|
||||||
Set<String> names = Sets.newHashSet();
|
Set<String> names = Sets.newHashSet();
|
||||||
|
|
||||||
for (int i = 0; i <= 15; i++) {
|
for (int i = 0; i <= 15; i++) {
|
||||||
|
@ -255,8 +246,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
|
|
||||||
if (!Strings.isNullOrEmpty(stack.getUnlocalizedName())
|
if (!Strings.isNullOrEmpty(stack.getUnlocalizedName())
|
||||||
&& names.add(stack.getUnlocalizedName())) {
|
&& names.add(stack.getUnlocalizedName())) {
|
||||||
ItemFacade.addFacade(
|
addFacade("buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "#"
|
||||||
"buildcraft:facade{" + Block.blockRegistry.getNameForObject(block) + "#"
|
|
||||||
+ stack.getItemDamage() + "}", stack);
|
+ stack.getItemDamage() + "}", stack);
|
||||||
|
|
||||||
// prevent adding multiple facades if it's a rotatable block
|
// prevent adding multiple facades if it's a rotatable block
|
||||||
|
@ -365,7 +355,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
return nbt;
|
return nbt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Block[] getBlocks(ItemStack stack) {
|
public Block[] getBlocksForFacade(ItemStack stack) {
|
||||||
FacadeState[] states = getFacadeStates(stack);
|
FacadeState[] states = getFacadeStates(stack);
|
||||||
Block[] blocks = new Block[states.length];
|
Block[] blocks = new Block[states.length];
|
||||||
for (int i = 0; i < states.length; i++) {
|
for (int i = 0; i < states.length; i++) {
|
||||||
|
@ -374,7 +364,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
return blocks;
|
return blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] getMetaValues(ItemStack stack) {
|
public int[] getMetaValuesForFacade(ItemStack stack) {
|
||||||
FacadeState[] states = getFacadeStates(stack);
|
FacadeState[] states = getFacadeStates(stack);
|
||||||
int[] meta = new int[states.length];
|
int[] meta = new int[states.length];
|
||||||
for (int i = 0; i < states.length; i++) {
|
for (int i = 0; i < states.length; i++) {
|
||||||
|
@ -384,7 +374,8 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GETTERS FOR FACADE DATA
|
// GETTERS FOR FACADE DATA
|
||||||
public static FacadeType getType(ItemStack stack) {
|
@Override
|
||||||
|
public FacadeType getFacadeType(ItemStack stack) {
|
||||||
if (!stack.hasTagCompound()) {
|
if (!stack.hasTagCompound()) {
|
||||||
return FacadeType.Basic;
|
return FacadeType.Basic;
|
||||||
}
|
}
|
||||||
|
@ -401,12 +392,12 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void addFacade(String id, ItemStack itemStack) {
|
public void addFacade(String id, ItemStack itemStack) {
|
||||||
if (itemStack.stackSize == 0) {
|
if (itemStack.stackSize == 0) {
|
||||||
itemStack.stackSize = 1;
|
itemStack.stackSize = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack facade = getFacade(Block.getBlockFromItem(itemStack.getItem()), itemStack.getItemDamage());
|
ItemStack facade = getFacadeForBlock(Block.getBlockFromItem(itemStack.getItem()), itemStack.getItemDamage());
|
||||||
if (!allFacades.contains(facade)) {
|
if (!allFacades.contains(facade)) {
|
||||||
allFacades.add(facade);
|
allFacades.add(facade);
|
||||||
|
|
||||||
|
@ -525,14 +516,14 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (slotmatch != null && slotmatch != NO_MATCH) {
|
if (slotmatch != null && slotmatch != NO_MATCH) {
|
||||||
return new Object[]{ItemFacade.getBlocks(slotmatch), slotmatch};
|
return new Object[]{getBlocksForFacade(slotmatch), slotmatch};
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ItemStack getNextFacadeItemStack(Block block, ItemStack originalFacade) {
|
private ItemStack getNextFacadeItemStack(Block block, ItemStack originalFacade) {
|
||||||
int blockMeta = ItemFacade.getMetaValues(originalFacade)[0];
|
int blockMeta = getMetaValuesForFacade(originalFacade)[0];
|
||||||
int stackMeta = 0;
|
int stackMeta = 0;
|
||||||
|
|
||||||
switch (block.getRenderType()) {
|
switch (block.getRenderType()) {
|
||||||
|
@ -559,7 +550,7 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
stackMeta = blockMeta;
|
stackMeta = blockMeta;
|
||||||
}
|
}
|
||||||
|
|
||||||
return getFacade(block, stackMeta);
|
return getFacadeForBlock(block, stackMeta);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -584,8 +575,9 @@ public class ItemFacade extends ItemBuildCraft {
|
||||||
public int getSpriteNumber() {
|
public int getSpriteNumber() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack getFacade(Block block, int metadata) {
|
@Override
|
||||||
|
public ItemStack getFacadeForBlock(Block block, int metadata) {
|
||||||
return getFacade(FacadeState.create(block, metadata));
|
return getFacade(FacadeState.create(block, metadata));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@ import java.util.LinkedList;
|
||||||
import org.apache.logging.log4j.Level;
|
import org.apache.logging.log4j.Level;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
@ -24,19 +23,15 @@ import net.minecraft.network.Packet;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.WorldServer;
|
import net.minecraft.world.WorldServer;
|
||||||
|
|
||||||
import cpw.mods.fml.relauncher.Side;
|
import cpw.mods.fml.relauncher.Side;
|
||||||
import cpw.mods.fml.relauncher.SideOnly;
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
import net.minecraftforge.fluids.Fluid;
|
import net.minecraftforge.fluids.Fluid;
|
||||||
import net.minecraftforge.fluids.FluidStack;
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
import net.minecraftforge.fluids.FluidTankInfo;
|
import net.minecraftforge.fluids.FluidTankInfo;
|
||||||
import net.minecraftforge.fluids.IFluidHandler;
|
import net.minecraftforge.fluids.IFluidHandler;
|
||||||
|
|
||||||
import cofh.api.energy.IEnergyHandler;
|
import cofh.api.energy.IEnergyHandler;
|
||||||
|
|
||||||
import buildcraft.BuildCraftCore;
|
import buildcraft.BuildCraftCore;
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
import buildcraft.api.core.BCLog;
|
import buildcraft.api.core.BCLog;
|
||||||
|
@ -65,6 +60,7 @@ import buildcraft.core.network.ISyncedTile;
|
||||||
import buildcraft.core.network.PacketTileState;
|
import buildcraft.core.network.PacketTileState;
|
||||||
import buildcraft.core.robots.DockingStation;
|
import buildcraft.core.robots.DockingStation;
|
||||||
import buildcraft.core.utils.Utils;
|
import buildcraft.core.utils.Utils;
|
||||||
|
import buildcraft.transport.ItemFacade.FacadeState;
|
||||||
import buildcraft.transport.gates.GateFactory;
|
import buildcraft.transport.gates.GateFactory;
|
||||||
import buildcraft.transport.gates.ItemGate;
|
import buildcraft.transport.gates.ItemGate;
|
||||||
import buildcraft.transport.utils.RobotStationState;
|
import buildcraft.transport.utils.RobotStationState;
|
||||||
|
@ -171,7 +167,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
|
||||||
for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
|
for (int i = 0; i < ForgeDirection.VALID_DIRECTIONS.length; i++) {
|
||||||
IPipePluggable pluggable = null;
|
IPipePluggable pluggable = null;
|
||||||
if (nbt.hasKey("facadeState[" + i + "]")) {
|
if (nbt.hasKey("facadeState[" + i + "]")) {
|
||||||
pluggable = new ItemFacade.FacadePluggable(ItemFacade.FacadeState.readArray(nbt.getTagList("facadeState[" + i + "]", Constants.NBT.TAG_COMPOUND)));
|
pluggable = new ItemFacade.FacadePluggable(FacadeState.readArray(nbt.getTagList("facadeState[" + i + "]", Constants.NBT.TAG_COMPOUND)));
|
||||||
} else {
|
} else {
|
||||||
// Migration support for 5.0.x and 6.0.x
|
// Migration support for 5.0.x and 6.0.x
|
||||||
if (nbt.hasKey("facadeBlocks[" + i + "]")) {
|
if (nbt.hasKey("facadeBlocks[" + i + "]")) {
|
||||||
|
@ -181,23 +177,23 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
|
||||||
|
|
||||||
if (blockId != 0) {
|
if (blockId != 0) {
|
||||||
int metadata = nbt.getInteger("facadeMeta[" + i + "]");
|
int metadata = nbt.getInteger("facadeMeta[" + i + "]");
|
||||||
pluggable = new ItemFacade.FacadePluggable(new ItemFacade.FacadeState[]{ItemFacade.FacadeState.create(block, metadata)});
|
pluggable = new ItemFacade.FacadePluggable(new FacadeState[]{FacadeState.create(block, metadata)});
|
||||||
}
|
}
|
||||||
} else if (nbt.hasKey("facadeBlocksStr[" + i + "][0]")) {
|
} else if (nbt.hasKey("facadeBlocksStr[" + i + "][0]")) {
|
||||||
// 6.0.x
|
// 6.0.x
|
||||||
ItemFacade.FacadeState mainState = ItemFacade.FacadeState.create(
|
FacadeState mainState = FacadeState.create(
|
||||||
(Block) Block.blockRegistry.getObject(nbt.getString("facadeBlocksStr[" + i + "][0]")),
|
(Block) Block.blockRegistry.getObject(nbt.getString("facadeBlocksStr[" + i + "][0]")),
|
||||||
nbt.getInteger("facadeMeta[" + i + "][0]")
|
nbt.getInteger("facadeMeta[" + i + "][0]")
|
||||||
);
|
);
|
||||||
if (nbt.hasKey("facadeBlocksStr[" + i + "][1]")) {
|
if (nbt.hasKey("facadeBlocksStr[" + i + "][1]")) {
|
||||||
ItemFacade.FacadeState phasedState = ItemFacade.FacadeState.create(
|
FacadeState phasedState = FacadeState.create(
|
||||||
(Block) Block.blockRegistry.getObject(nbt.getString("facadeBlocksStr[" + i + "][1]")),
|
(Block) Block.blockRegistry.getObject(nbt.getString("facadeBlocksStr[" + i + "][1]")),
|
||||||
nbt.getInteger("facadeMeta[" + i + "][1]"),
|
nbt.getInteger("facadeMeta[" + i + "][1]"),
|
||||||
PipeWire.fromOrdinal(nbt.getInteger("facadeWires[" + i + "]"))
|
PipeWire.fromOrdinal(nbt.getInteger("facadeWires[" + i + "]"))
|
||||||
);
|
);
|
||||||
pluggable = new ItemFacade.FacadePluggable(new ItemFacade.FacadeState[]{mainState, phasedState});
|
pluggable = new ItemFacade.FacadePluggable(new FacadeState[]{mainState, phasedState});
|
||||||
} else {
|
} else {
|
||||||
pluggable = new ItemFacade.FacadePluggable(new ItemFacade.FacadeState[]{mainState});
|
pluggable = new ItemFacade.FacadePluggable(new FacadeState[]{mainState});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -476,14 +472,14 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
|
||||||
renderState.facadeMatrix.setFacade(direction, null, 0, true);
|
renderState.facadeMatrix.setFacade(direction, null, 0, true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ItemFacade.FacadeState[] states = ((ItemFacade.FacadePluggable) pluggable).states;
|
FacadeState[] states = ((ItemFacade.FacadePluggable) pluggable).states;
|
||||||
if (states == null) {
|
if (states == null) {
|
||||||
renderState.facadeMatrix.setFacade(direction, null, 0, true);
|
renderState.facadeMatrix.setFacade(direction, null, 0, true);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Iterate over all states and activate first proper
|
// Iterate over all states and activate first proper
|
||||||
ItemFacade.FacadeState defaultState = null, activeState = null;
|
FacadeState defaultState = null, activeState = null;
|
||||||
for (ItemFacade.FacadeState state : states) {
|
for (FacadeState state : states) {
|
||||||
if (state.wire == null) {
|
if (state.wire == null) {
|
||||||
defaultState = state;
|
defaultState = state;
|
||||||
continue;
|
continue;
|
||||||
|
@ -861,7 +857,7 @@ public class TileGenericPipe extends TileEntity implements IPowerReceptor, IFlui
|
||||||
refreshRenderState = true;
|
refreshRenderState = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean addFacade(ForgeDirection direction, ItemFacade.FacadeState[] states) {
|
public boolean addFacade(ForgeDirection direction, FacadeState[] states) {
|
||||||
return setPluggable(direction, new ItemFacade.FacadePluggable(states));
|
return setPluggable(direction, new ItemFacade.FacadePluggable(states));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,14 @@ import net.minecraft.client.renderer.RenderBlocks;
|
||||||
import net.minecraft.client.renderer.Tessellator;
|
import net.minecraft.client.renderer.Tessellator;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.IIcon;
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
import net.minecraftforge.client.IItemRenderer;
|
import net.minecraftforge.client.IItemRenderer;
|
||||||
|
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
|
import buildcraft.api.facades.FacadeType;
|
||||||
|
import buildcraft.api.facades.IFacadeItem;
|
||||||
import buildcraft.core.CoreConstants;
|
import buildcraft.core.CoreConstants;
|
||||||
import buildcraft.core.render.RenderUtils;
|
import buildcraft.core.render.RenderUtils;
|
||||||
import buildcraft.transport.ItemFacade;
|
import buildcraft.transport.ItemFacade;
|
||||||
|
import buildcraft.transport.ItemFacade.FacadeState;
|
||||||
import buildcraft.transport.PipeIconProvider;
|
import buildcraft.transport.PipeIconProvider;
|
||||||
|
|
||||||
public class FacadeItemRenderer implements IItemRenderer {
|
public class FacadeItemRenderer implements IItemRenderer {
|
||||||
|
@ -38,12 +39,12 @@ public class FacadeItemRenderer implements IItemRenderer {
|
||||||
lastTime = System.currentTimeMillis() + 1000L;
|
lastTime = System.currentTimeMillis() + 1000L;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemFacade.FacadeType type = ItemFacade.getType(item);
|
FacadeType type = ((IFacadeItem) item.getItem()).getFacadeType(item);
|
||||||
ItemFacade.FacadeState[] states = ItemFacade.getFacadeStates(item);
|
FacadeState[] states = ItemFacade.getFacadeStates(item);
|
||||||
ItemFacade.FacadeState activeState = null;
|
FacadeState activeState = null;
|
||||||
if (type == ItemFacade.FacadeType.Basic) {
|
if (type == FacadeType.Basic) {
|
||||||
activeState = states[0];
|
activeState = states[0];
|
||||||
} else if (type == ItemFacade.FacadeType.Phased) {
|
} else if (type == FacadeType.Phased) {
|
||||||
activeState = states[renderState % states.length];
|
activeState = states[renderState % states.length];
|
||||||
}
|
}
|
||||||
Block block = activeState != null ? activeState.block : null;
|
Block block = activeState != null ? activeState.block : null;
|
||||||
|
|
Loading…
Reference in a new issue