Merge pull request #1655 from 70000hp/more-more-qol

Settings Tool
This commit is contained in:
HbmMods 2024-09-13 08:12:16 +02:00 committed by GitHub
commit f806dee99f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
84 changed files with 1266 additions and 113 deletions

View File

@ -6,6 +6,7 @@ import java.util.Random;
import com.hbm.handler.MultiblockHandlerXR; import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.handler.ThreeInts; import com.hbm.handler.ThreeInts;
import com.hbm.interfaces.ICopiable;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
@ -32,7 +33,7 @@ import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent; import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight { public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable {
public BlockDummyable(Material mat) { public BlockDummyable(Material mat) {
super(mat); super(mat);
@ -507,4 +508,31 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
ICustomBlockHighlight.cleanup(); ICustomBlockHighlight.cleanup();
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if (tile instanceof ICopiable)
return ((ICopiable) tile).getSettings(world, pos[0], pos[1], pos[2]);
else
return null;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if (tile instanceof ICopiable)
((ICopiable) tile).pasteSettings(nbt, index, world, player, pos[0], pos[1], pos[2]);
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
int[] pos = findCore(world, x, y, z);
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if (tile instanceof ICopiable)
return ((ICopiable) tile).infoForDisplay(world, x, y, z);
return null;
}
} }

View File

@ -4,8 +4,11 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.hbm.blocks.IAnalyzable; import com.hbm.blocks.IAnalyzable;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.HbmKeybinds;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.items.machine.IItemFluidIdentifier;
import com.hbm.items.machine.ItemFluidIDMulti;
import com.hbm.tileentity.network.TileEntityPipeBaseNT; import com.hbm.tileentity.network.TileEntityPipeBaseNT;
import api.hbm.fluid.IPipeNet; import api.hbm.fluid.IPipeNet;
@ -14,6 +17,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@ -36,13 +40,24 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IA
IItemFluidIdentifier id = (IItemFluidIdentifier) player.getHeldItem().getItem(); IItemFluidIdentifier id = (IItemFluidIdentifier) player.getHeldItem().getItem();
FluidType type = id.getType(world, x, y, z, player.getHeldItem()); FluidType type = id.getType(world, x, y, z, player.getHeldItem());
if(!player.isSneaking()) { if(!HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_CTRL) && !player.isSneaking()) {
TileEntity te = world.getTileEntity(x, y, z); TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityPipeBaseNT) { if(te instanceof TileEntityPipeBaseNT) {
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
if(HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_ALT)) {
Item item = player.getHeldItem().getItem();
if (item instanceof ItemFluidIDMulti) {
if (id.getType(world, x, y, z, player.getHeldItem()) != pipe.getType()) {
ItemFluidIDMulti.setType(player.getHeldItem(), pipe.getType(), true);
world.playSoundAtEntity(player, "random.orb", 0.25F, 0.75F);
return true;
}
}
}
if(pipe.getType() != type) { if(pipe.getType() != type) {
pipe.setType(type); pipe.setType(type);
return true; return true;
@ -54,6 +69,18 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct, IA
if(te instanceof TileEntityPipeBaseNT) { if(te instanceof TileEntityPipeBaseNT) {
TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te;
if(HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_ALT)) {
Item item = player.getHeldItem().getItem();
if (item instanceof ItemFluidIDMulti) {
if (id.getType(world, x, y, z, player.getHeldItem()) != pipe.getType()) {
ItemFluidIDMulti.setType(player.getHeldItem(), pipe.getType(), true);
world.playSoundAtEntity(player, "random.orb", 0.25F, 0.75F);
return true;
}
}
}
changeTypeRecursively(world, x, y, z, pipe.getType(), type, 64); changeTypeRecursively(world, x, y, z, pipe.getType(), type, 64);
return true; return true;
} }

View File

@ -137,6 +137,7 @@ public class ToolRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_tool, 1), new Object[] { "TBT", "SRS", "SCS", 'T', TA.nugget(), 'B', ModItems.nugget_bismuth, 'S', ANY_RESISTANTALLOY.ingot(), 'R', ModItems.reacher, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP) });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'D', ModItems.sat_chip, 'I', GOLD.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.sat_designator, 1), new Object[] { "RRD", "PIC", " P", 'P', GOLD.plate(), 'R', Items.redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'D', ModItems.sat_chip, 'I', GOLD.ingot() });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.sat_relay), new Object[] { ModItems.sat_chip, ModItems.ducttape, ModItems.radar_linker }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.sat_relay), new Object[] { ModItems.sat_chip, ModItems.ducttape, ModItems.radar_linker });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.settings_tool), new Object[] { " P ", "PCP", "III", 'P', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'I', ModItems.plate_polymer });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pipette, 1), new Object[] { " L", " G ", "G ", 'L', ANY_RUBBER.ingot(), 'G', KEY_CLEARGLASS}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pipette, 1), new Object[] { " L", " G ", "G ", 'L', ANY_RUBBER.ingot(), 'G', KEY_CLEARGLASS});
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pipette_boron, 1), new Object[] { " P", " B ", "B ", 'P', RUBBER.ingot(), 'B', ModBlocks.glass_boron}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.pipette_boron, 1), new Object[] { " P", " B ", "B ", 'P', RUBBER.ingot(), 'B', ModBlocks.glass_boron});

View File

@ -25,6 +25,9 @@ public class HbmKeybinds {
public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category); public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category);
public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_LSHIFT, category); public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_LSHIFT, category);
public static KeyBinding trainKey = new KeyBinding(category + ".trainInv", Keyboard.KEY_R, category); public static KeyBinding trainKey = new KeyBinding(category + ".trainInv", Keyboard.KEY_R, category);
public static KeyBinding copyToolAlt = new KeyBinding(category + ".copyToolAlt", Keyboard.KEY_LMENU, category);
public static KeyBinding copyToolCtrl = new KeyBinding(category + ".copyToolCtrl", Keyboard.KEY_LCONTROL, category);
public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category);
public static KeyBinding gunPrimaryKey = new KeyBinding(category + ".gunPrimary", -100, category); public static KeyBinding gunPrimaryKey = new KeyBinding(category + ".gunPrimary", -100, category);
@ -54,6 +57,8 @@ public class HbmKeybinds {
ClientRegistry.registerKeyBinding(craneLeftKey); ClientRegistry.registerKeyBinding(craneLeftKey);
ClientRegistry.registerKeyBinding(craneRightKey); ClientRegistry.registerKeyBinding(craneRightKey);
ClientRegistry.registerKeyBinding(craneLoadKey); ClientRegistry.registerKeyBinding(craneLoadKey);
ClientRegistry.registerKeyBinding(copyToolAlt);
ClientRegistry.registerKeyBinding(copyToolCtrl);
} }
@SubscribeEvent @SubscribeEvent
@ -101,10 +106,11 @@ public class HbmKeybinds {
CRANE_LEFT, CRANE_LEFT,
CRANE_RIGHT, CRANE_RIGHT,
CRANE_LOAD, CRANE_LOAD,
TOOL_ALT,
TOOL_CTRL,
GUN_PRIMARY, GUN_PRIMARY,
GUN_SECONDARY, GUN_SECONDARY,
GUN_TERTIARY, GUN_TERTIARY,
RELOAD, RELOAD
} }
} }

View File

@ -0,0 +1,29 @@
package com.hbm.interfaces;
import com.hbm.util.Either;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public interface ICopiable {
NBTTagCompound getSettings(World world, int x, int y, int z);
void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z);
default String getSettingsSourceID(Either<TileEntity, Block> self) {
Block block = self.isLeft() ? self.left().getBlockType() : self.right();
return block.getUnlocalizedName();
}
default String getSettingsSourceDisplay(Either<TileEntity, Block> self) {
Block block = self.isLeft() ? self.left().getBlockType() : self.right();
return block.getLocalizedName();
}
default String[] infoForDisplay(World world, int x, int y, int z){
return null;
}
}

View File

@ -1248,6 +1248,7 @@ public class ModItems {
public static Item coupling_tool; public static Item coupling_tool;
public static Item drone_linker; public static Item drone_linker;
public static Item radar_linker; public static Item radar_linker;
public static Item settings_tool;
public static Item template_folder; public static Item template_folder;
public static Item journal_pip; public static Item journal_pip;
@ -4513,6 +4514,7 @@ public class ModItems {
coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool"); coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool");
drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker"); drone_linker = new ItemDroneLinker().setUnlocalizedName("drone_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":drone_linker");
radar_linker = new ItemRadarLinker().setUnlocalizedName("radar_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radar_linker"); radar_linker = new ItemRadarLinker().setUnlocalizedName("radar_linker").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":radar_linker");
settings_tool = new ItemSettingsTool().setUnlocalizedName("settings_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":settings_tool");
key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key");
key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red");
@ -6684,6 +6686,7 @@ public class ModItems {
GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName());
GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName()); GameRegistry.registerItem(analysis_tool, analysis_tool.getUnlocalizedName());
GameRegistry.registerItem(coupling_tool, coupling_tool.getUnlocalizedName()); GameRegistry.registerItem(coupling_tool, coupling_tool.getUnlocalizedName());
GameRegistry.registerItem(settings_tool, settings_tool.getUnlocalizedName());
GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName()); GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName());
GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName());
GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName());

View File

@ -0,0 +1,139 @@
package com.hbm.items.tool;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.HbmKeybinds;
import com.hbm.interfaces.ICopiable;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.PlayerInformPacket;
import com.hbm.util.ChatBuilder;
import com.hbm.util.Either;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import javax.annotation.Nullable;
import java.util.List;
public class ItemSettingsTool extends Item {
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) {
NBTTagList displayInfo;
if(!(entity instanceof EntityPlayerMP)) return;
if(((EntityPlayer) entity).getHeldItem() == stack && stack.hasTagCompound()) {
EntityPlayer player = ((EntityPlayer) entity);
int delay = stack.stackTagCompound.getInteger("inputDelay");
delay++;
displayInfo = stack.stackTagCompound.getTagList("displayInfo", 10);
if (HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_ALT) && delay > 4) {
int index = stack.stackTagCompound.getInteger("copyIndex") + 1;
if(index > displayInfo.tagCount() - 1) index = 0;
stack.stackTagCompound.setInteger("copyIndex", index);
delay = 0;
}
stack.stackTagCompound.setInteger("inputDelay", delay);
if(world.getTotalWorldTime() % 5 != 0) return;
if(displayInfo.tagCount() > 0){
for (int j = 0; j < displayInfo.tagCount(); j++) {
NBTTagCompound nbt = displayInfo.getCompoundTagAt(j);
EnumChatFormatting format = stack.stackTagCompound.getInteger("copyIndex") == j ? EnumChatFormatting.AQUA : EnumChatFormatting.YELLOW;
PacketDispatcher.wrapper.sendTo(
new PlayerInformPacket(ChatBuilder.startTranslation(nbt.getString("info"))
.color(format)
.flush()
, 897 + j, 4000 ), (EntityPlayerMP) entity);
}
}
}
}
@SuppressWarnings("unchecked")
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add("Can copy the settings (filters, fluid ID, etc) of machines");
list.add("Shift right-click to copy, right click to paste");
list.add("Ctrl click on pipes to paste settings to multiple pipes");
/*if(stack.stackTagCompound != null) {
NBTTagCompound nbt = stack.stackTagCompound;
if (nbt.hasKey("tileName")){
list.add(ChatBuilder.startTranslation(nbt.getString("tileName")).color(EnumChatFormatting.BLUE).flush().getFormattedText());
} else {
list.add(EnumChatFormatting.RED + " None ");
}
}*/
//the translation wont fucking work I swear to allah
}
@Override
public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) {
Either<TileEntity, Block> schrodinger = getCopyInfoSource(world, x, y, z);
if(schrodinger == null) return false;
ICopiable copiable = schrodinger.cast();
if(player.isSneaking()) {
stack.stackTagCompound = copiable.getSettings(world, x, y, z);
if(stack.stackTagCompound != null) {
stack.stackTagCompound.setString("tileName", copiable.getSettingsSourceID(schrodinger));
stack.stackTagCompound.setInteger("copyIndex", 0);
stack.stackTagCompound.setInteger("inputDelay", 0);
String[] info = copiable.infoForDisplay(world, x, y, z);
if (info != null) {
NBTTagList displayInfo = new NBTTagList();
for (String str : info) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("info", str);
displayInfo.appendTag(nbt);
}
stack.stackTagCompound.setTag("displayInfo", displayInfo);
}
if (world.isRemote) {
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Copied settings of " + copiable.getSettingsSourceDisplay(schrodinger)).color(EnumChatFormatting.AQUA).flush());
}
} else {
player.addChatMessage(ChatBuilder.start("[").color(EnumChatFormatting.DARK_AQUA)
.nextTranslation(this.getUnlocalizedName() + ".name").color(EnumChatFormatting.DARK_AQUA)
.next("] ").color(EnumChatFormatting.DARK_AQUA)
.next("Copy failed, machine has no settings tool support: " + copiable.getSettingsSourceDisplay(schrodinger)).color(EnumChatFormatting.RED).flush());
}
} else if(stack.hasTagCompound()) {
int index = stack.stackTagCompound.getInteger("copyIndex");
copiable.pasteSettings(stack.stackTagCompound, index, world, player, x, y, z);
}
return !world.isRemote;
}
@Nullable
private Either<TileEntity, Block> getCopyInfoSource(World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof ICopiable) {
return Either.left(te);
}
Block block = world.getBlock(x, y, z);
if(block instanceof ICopiable) {
return Either.right(block);
}
return null;
}
}

View File

@ -2111,6 +2111,8 @@ public class ClientProxy extends ServerProxy {
case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed();
case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed(); case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed();
case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed(); case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed();
case TOOL_ALT: return HbmKeybinds.copyToolAlt.getIsKeyPressed();
case TOOL_CTRL: return HbmKeybinds.copyToolCtrl.getIsKeyPressed();
case GUN_PRIMARY: return HbmKeybinds.gunPrimaryKey.getIsKeyPressed(); case GUN_PRIMARY: return HbmKeybinds.gunPrimaryKey.getIsKeyPressed();
case GUN_SECONDARY: return HbmKeybinds.gunSecondaryKey.getIsKeyPressed(); case GUN_SECONDARY: return HbmKeybinds.gunSecondaryKey.getIsKeyPressed();
case GUN_TERTIARY: return HbmKeybinds.gunTertiaryKey.getIsKeyPressed(); case GUN_TERTIARY: return HbmKeybinds.gunTertiaryKey.getIsKeyPressed();

View File

@ -2,18 +2,27 @@ package com.hbm.tileentity;
import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IControlReceiver;
import com.hbm.interfaces.ICopiable;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public interface IControlReceiverFilter extends IControlReceiver { public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
void nextMode(int i); void nextMode(int i);
/*
default ModulePatternMatcher getMatcher(){
}*/
@Override @Override
public default void receiveControl(NBTTagCompound data) { default void receiveControl(NBTTagCompound data) {
if(data.hasKey("slot")) { if(data.hasKey("slot")) {
setFilterContents(data); setFilterContents(data);
} }
@ -23,7 +32,7 @@ public interface IControlReceiverFilter extends IControlReceiver {
* Expects the implementor to be a tile entity and an IInventory * Expects the implementor to be a tile entity and an IInventory
* @param nbt * @param nbt
*/ */
public default void setFilterContents(NBTTagCompound nbt) { default void setFilterContents(NBTTagCompound nbt) {
TileEntity tile = (TileEntity) this; TileEntity tile = (TileEntity) this;
IInventory inv = (IInventory) this; IInventory inv = (IInventory) this;
int slot = nbt.getInteger("slot"); int slot = nbt.getInteger("slot");
@ -31,4 +40,62 @@ public interface IControlReceiverFilter extends IControlReceiver {
nextMode(slot); nextMode(slot);
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
} }
/**
* Used for the copy tool
* @return The start and end (start inclusive, end exclusive) of the filter slots of the TE
*/
int[] getFilterSlots();
@Override
default NBTTagCompound getSettings(World world, int x, int y, int z) {
IInventory inv = (IInventory) this;
NBTTagCompound nbt = new NBTTagCompound();
NBTTagList tags = new NBTTagList();
int count = 0;
for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) {
NBTTagCompound slotNBT = new NBTTagCompound();
if(inv.getStackInSlot(i) != null) {
slotNBT.setByte("slot", (byte) count);
inv.getStackInSlot(i).writeToNBT(slotNBT);
tags.appendTag(slotNBT);
}
count++;
}
nbt.setTag("items", tags);
return nbt;
}
@Override
default void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
TileEntity tile = (TileEntity) this;
IInventory inv = (IInventory) this;
NBTTagList items = nbt.getTagList("items", 10);
int listSize = items.tagCount();
if(listSize > 0) {
int count = 0;
for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) {
if (i < listSize) {
NBTTagCompound slotNBT = items.getCompoundTagAt(count);
byte slot = slotNBT.getByte("slot");
ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT);
//whether the filter info came from a router
boolean router = nbt.hasKey("modes") && slot > index * 5 && slot < index * + 5;
if (loadedStack != null && index < listSize && (slot < getFilterSlots()[1] || router)) {
inv.setInventorySlotContents(slot + getFilterSlots()[0], ItemStack.loadItemStackFromNBT(slotNBT));
nextMode(slot);
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
}
}
count++;
}
}
}
@Override
default String[] infoForDisplay(World world, int x, int y, int z) {
return new String[] { "copytool.filter" };
}
} }

View File

@ -0,0 +1,69 @@
package com.hbm.tileentity;
import api.hbm.fluid.IFluidStandardTransceiver;
import api.hbm.fluid.IFluidUser;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.util.BobMathUtil;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import java.util.ArrayList;
public interface IFluidCopiable extends ICopiable {
/**
* @return First type for the normal paste, second type for the alt paste, none if there is no alt paste support
*/
default int[] getFluidIDToCopy(){
IFluidUser tile = (IFluidUser) this;
ArrayList<Integer> types = new ArrayList<>();
for (FluidTank tank : tile.getAllTanks()) {
if (!tank.getTankType().hasNoID())
types.add(tank.getTankType().getID());
}
return BobMathUtil.intCollectionToArray(types);
}
default FluidTank getTankToPaste(){
TileEntity te = (TileEntity) this;
if (te instanceof IFluidStandardTransceiver) {
IFluidStandardTransceiver tile = (IFluidStandardTransceiver) this;
return tile.getReceivingTanks() != null ? tile.getReceivingTanks()[0] : null;
}
return null;
}
@Override
default NBTTagCompound getSettings(World world, int x, int y, int z){
NBTTagCompound tag = new NBTTagCompound();
if(getFluidIDToCopy().length > 0)
tag.setIntArray("fluidID", getFluidIDToCopy());
return tag;
}
@Override
default void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
if(getTankToPaste() != null) {
int[] ids = nbt.getIntArray("fluidID");
if(ids.length > 0 && index < ids.length) {
int id = ids[index];
getTankToPaste().setTankType(Fluids.fromID(id));
}
}
}
@Override
default String[] infoForDisplay(World world, int x, int y, int z) {
int[] ids = getFluidIDToCopy();
String[] names = new String[ids.length];
for (int i = 0; i < ids.length; i++) {
names[i] = Fluids.fromID(ids[i]).getUnlocalizedName();
}
return names;
}
}

View File

@ -0,0 +1,32 @@
package com.hbm.tileentity;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.material.Mats;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public interface IMetalCopiable extends ICopiable {
int[] getMatsToCopy();
@Override
default NBTTagCompound getSettings(World world, int x, int y, int z){
NBTTagCompound tag = new NBTTagCompound();
if(getMatsToCopy().length > 0)
tag.setIntArray("matFilter", getMatsToCopy());
return tag;
}
@Override
default String[] infoForDisplay(World world, int x, int y, int z) {
int[] ids = getMatsToCopy();
String[] names = new String[ids.length];
for (int i = 0; i < ids.length; i++) {
names[i] = Mats.matById.get(ids[i]).getUnlocalizedName();
}
return names;
}
@Override
default void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z){
};
}

View File

@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import com.hbm.handler.CompatHandler; import com.hbm.handler.CompatHandler;
import com.hbm.tileentity.IFluidCopiable;
import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional;
import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Arguments;
import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Callback;
@ -56,7 +57,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent { public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IRadarCommandReceiver, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable {
/** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */ /** Automatic instantiation of generic missiles, i.e. everything that both extends EntityMissileBaseNT and needs a designator */
public static final HashMap<ComparableStack, Class<? extends EntityMissileBaseNT>> missiles = new HashMap(); public static final HashMap<ComparableStack, Class<? extends EntityMissileBaseNT>> missiles = new HashMap();
@ -555,4 +556,14 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl
} }
throw new NoSuchMethodException(); throw new NoSuchMethodException();
} }
@Override
public int[] getFluidIDToCopy() {
return new int[]{tanks[0].getTankType().getID(), tanks[1].getTankType().getID()};
}
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -16,6 +16,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.NBTPacket; import com.hbm.packet.toclient.NBTPacket;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
@ -40,8 +41,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyProviderMK2, INBTPacketReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine, IFluidCopiable {
public long power; public long power;
private int turnTimer; private int turnTimer;
public float rotor; public float rotor;
@ -372,4 +372,9 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IEnergyPr
data.setDouble(CompatEnergyControl.D_OUTPUT_MB, info[1]); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, info[1]);
data.setDouble(CompatEnergyControl.D_OUTPUT_HE, info[2]); data.setDouble(CompatEnergyControl.D_OUTPUT_HE, info[2]);
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -7,6 +7,7 @@ import com.google.gson.stream.JsonWriter;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.saveddata.TomSaveData; import com.hbm.saveddata.TomSaveData;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
@ -17,7 +18,7 @@ import api.hbm.tile.IInfoProviderEC;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.EnumSkyBlock;
public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC, IConfigurableMachine { public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IInfoProviderEC, IConfigurableMachine, IFluidCopiable {
public int age = 0; public int age = 0;
public FluidTank[] tanks; public FluidTank[] tanks;
@ -146,4 +147,9 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidS
data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, throughput); data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, throughput);
data.setDouble(CompatEnergyControl.D_OUTPUT_MB, throughput); data.setDouble(CompatEnergyControl.D_OUTPUT_MB, throughput);
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -22,7 +22,9 @@ import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IMetalCopiable;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.BobMathUtil;
import com.hbm.util.CrucibleUtil; import com.hbm.util.CrucibleUtil;
import api.hbm.block.ICrucibleAcceptor; import api.hbm.block.ICrucibleAcceptor;
@ -35,6 +37,7 @@ import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -45,7 +48,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine { public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine, IMetalCopiable {
public int heat; public int heat;
public int progress; public int progress;
@ -417,7 +420,6 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
//if there's no materials in there at all, don't smelt //if there's no materials in there at all, don't smelt
if(materials.isEmpty()) if(materials.isEmpty())
return false; return false;
CrucibleRecipe recipe = getLoadedRecipe(); CrucibleRecipe recipe = getLoadedRecipe();
//needs to be true, will always be true if there's no recipe loaded //needs to be true, will always be true if there's no recipe loaded
@ -601,4 +603,18 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; } @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; } @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
@Override
public int[] getMatsToCopy() {
ArrayList<Integer> types = new ArrayList<>();
for (MaterialStack stack : recipeStack) {
types.add(stack.material.id);
}
for (MaterialStack stack : wasteStack) {
types.add(stack.material.id);
}
return BobMathUtil.intCollectionToArray(types);
}
} }

View File

@ -2,6 +2,7 @@ package com.hbm.tileentity.machine;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.energymk2.IEnergyReceiverMK2;
@ -9,7 +10,7 @@ import api.hbm.fluid.IFluidStandardTransceiver;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver { public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IFluidCopiable {
public long power = 0; public long power = 0;
public FluidTank[] tanks; public FluidTank[] tanks;
@ -121,4 +122,9 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen
public FluidTank[] getAllTanks() { public FluidTank[] getAllTanks() {
return tanks; return tanks;
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -24,10 +24,8 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.*;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.CrucibleUtil; import com.hbm.util.CrucibleUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
@ -50,7 +48,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable, IMetalCopiable {
public long power; public long power;
public static final long maxPower = 20000000; public static final long maxPower = 20000000;
@ -547,4 +545,50 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
if(type == UpgradeType.OVERDRIVE) return 3; if(type == UpgradeType.OVERDRIVE) return 3;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return tanks[0];
}
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound tag = new NBTTagCompound();
if(getFluidIDToCopy().length > 0)
tag.setIntArray("fluidID", getFluidIDToCopy());
if(getMatsToCopy().length > 0)
tag.setIntArray("matFilter", getMatsToCopy());
return tag;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
IFluidCopiable.super.pasteSettings(nbt, index, world, player, x, y, z);
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
ArrayList<String> names = new ArrayList<>();
int[] fluidIDs = getFluidIDToCopy();
int[] matIDs = getMatsToCopy();
for (int fluidID : fluidIDs) {
names.add(Fluids.fromID(fluidID).getUnlocalizedName());
}
for (int matID : matIDs) {
names.add(Mats.matById.get(matID).getUnlocalizedName());
}
return names.toArray(new String[0]);
}
@Override
public int[] getMatsToCopy() {
ArrayList<Integer> types = new ArrayList<>();
if(leftStack != null) types.add(leftStack.material.id);
if(rightStack != null) types.add(rightStack.material.id);
return BobMathUtil.intCollectionToArray(types);
}
} }

View File

@ -1,10 +1,12 @@
package com.hbm.tileentity.machine; package com.hbm.tileentity.machine;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats;
import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.NTMMaterial;
import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.material.Mats.MaterialStack;
import api.hbm.block.ICrucibleAcceptor; import api.hbm.block.ICrucibleAcceptor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager; import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
@ -19,7 +21,7 @@ import net.minecraftforge.common.util.ForgeDirection;
* @author hbm * @author hbm
* *
*/ */
public abstract class TileEntityFoundryBase extends TileEntity implements ICrucibleAcceptor { public abstract class TileEntityFoundryBase extends TileEntity implements ICrucibleAcceptor, ICopiable {
public NTMMaterial type; public NTMMaterial type;
protected NTMMaterial lastType; protected NTMMaterial lastType;
@ -142,4 +144,16 @@ public abstract class TileEntityFoundryBase extends TileEntity implements ICruci
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
return standardAdd(world, x, y, z, side, stack); return standardAdd(world, x, y, z, side, stack);
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound nbt = new NBTTagCompound();
if(type != null) nbt.setIntArray("matFilter", new int[]{ type.id });
return nbt;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
}
} }

View File

@ -1,5 +1,6 @@
package com.hbm.tileentity.machine; package com.hbm.tileentity.machine;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats;
import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.inventory.material.Mats.MaterialStack;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
@ -9,13 +10,16 @@ import com.hbm.util.CrucibleUtil;
import api.hbm.block.ICrucibleAcceptor; import api.hbm.block.ICrucibleAcceptor;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityFoundryOutlet extends TileEntityFoundryBase { import java.util.ArrayList;
public class TileEntityFoundryOutlet extends TileEntityFoundryBase{
public NTMMaterial filter = null; public NTMMaterial filter = null;
public NTMMaterial lastFilter = null; public NTMMaterial lastFilter = null;
@ -121,4 +125,39 @@ public class TileEntityFoundryOutlet extends TileEntityFoundryBase {
nbt.setBoolean("invertFilter", this.invertFilter); nbt.setBoolean("invertFilter", this.invertFilter);
nbt.setShort("filter", this.filter == null ? -1 : (short) this.filter.id); nbt.setShort("filter", this.filter == null ? -1 : (short) this.filter.id);
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setBoolean("invert", this.invertRedstone);
nbt.setBoolean("invertFilter", this.invertFilter);
if(filter != null){
nbt.setIntArray("matFilter", new int[]{ filter.id });
}
return nbt;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
if(nbt.hasKey("invert")) this.invertRedstone = nbt.getBoolean("invert");
if(nbt.hasKey("invertFilter")) this.invertFilter = nbt.getBoolean("invertFilter");
if(nbt.hasKey("matFilter")) {
int[] ids = nbt.getIntArray("matFilter");
if(ids.length > 0 && index < ids.length)
this.filter = Mats.matById.get(ids[index]);
}
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
ArrayList<String> info = new ArrayList<>();
info.add("copytool.invertRedstone");
info.add("copytool.invertFilter");
if (filter != null) info.add(filter.getUnlocalizedName());
return info.toArray(new String[0]);
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.gui.GUIFurnaceCombo;
import com.hbm.inventory.recipes.CombinationRecipes; import com.hbm.inventory.recipes.CombinationRecipes;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.tileentity.TileEntityMachinePolluting;
import com.hbm.util.Tuple.Pair; import com.hbm.util.Tuple.Pair;
@ -30,7 +31,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityFurnaceCombination extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider { public class TileEntityFurnaceCombination extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider, IFluidCopiable {
public boolean wasOn; public boolean wasOn;
public int progress; public int progress;

View File

@ -19,6 +19,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.saveddata.TomSaveData; import com.hbm.saveddata.TomSaveData;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -31,9 +32,10 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.EnumSkyBlock;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine { public class TileEntityHeatBoiler extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable {
public int heat; public int heat;
public FluidTank[] tanks; public FluidTank[] tanks;

View File

@ -14,6 +14,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.saveddata.TomSaveData; import com.hbm.saveddata.TomSaveData;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -26,8 +27,9 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.EnumSkyBlock;
import net.minecraft.world.World;
public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine { public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine, IFluidCopiable {
public int heat; public int heat;
public FluidTank[] tanks; public FluidTank[] tanks;

View File

@ -2,6 +2,7 @@ package com.hbm.tileentity.machine;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IControlReceiver;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.container.ContainerHeaterHeatex; import com.hbm.inventory.container.ContainerHeaterHeatex;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
@ -9,6 +10,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable;
import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType;
import com.hbm.inventory.gui.GUIHeaterHeatex; import com.hbm.inventory.gui.GUIHeaterHeatex;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -27,7 +29,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, INBTPacketReceiver, IFluidStandardTransceiver, IGUIProvider, IControlReceiver { public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, INBTPacketReceiver, IFluidStandardTransceiver, IGUIProvider, IControlReceiver, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;
public int amountToCool = 1; public int amountToCool = 1;
@ -233,4 +235,23 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe
this.markChanged(); this.markChanged();
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("toCool", amountToCool);
if(getFluidIDToCopy().length > 0)
nbt.setIntArray("fluidID", getFluidIDToCopy());
return nbt;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int[] ids = nbt.getIntArray("fluidID");
if(ids.length > 0) {
int id = ids[index];
tanks[0].setTankType(Fluids.fromID(id));
}
if(nbt.hasKey("toCool")) amountToCool = nbt.getInteger("toCool");
}
} }

View File

@ -8,6 +8,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable;
import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType; import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType;
import com.hbm.inventory.gui.GUIOilburner; import com.hbm.inventory.gui.GUIOilburner;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.tileentity.TileEntityMachinePolluting;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -24,7 +25,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implements IGUIProvider, IFluidStandardTransceiver, IHeatSource, IControlReceiver { public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implements IGUIProvider, IFluidStandardTransceiver, IHeatSource, IControlReceiver, IFluidCopiable {
public boolean isOn = false; public boolean isOn = false;
public FluidTank tank; public FluidTank tank;
@ -217,4 +218,21 @@ public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implem
public FluidTank[] getSendingTanks() { public FluidTank[] getSendingTanks() {
return this.getSmokeTanks(); return this.getSmokeTanks();
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound tag = new NBTTagCompound();
tag.setIntArray("fluidID", new int[]{tank.getTankType().getID()});
tag.setInteger("burnRate", setting);
tag.setBoolean("isOn", isOn);
return tag;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int id = nbt.getIntArray("fluidID")[index];
tank.setTankType(Fluids.fromID(id));
if(nbt.hasKey("isOn")) isOn = nbt.getBoolean("isOn");
if(nbt.hasKey("burnRate")) setting = nbt.getInteger("burnRate");
}
} }

View File

@ -12,6 +12,7 @@ import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemICFPellet; import com.hbm.items.machine.ItemICFPellet;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -39,7 +40,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable {
public long laser; public long laser;
public long maxLaser; public long maxLaser;

View File

@ -12,6 +12,7 @@ import com.hbm.inventory.material.Mats.MaterialStack;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemICFPellet; import com.hbm.items.machine.ItemICFPellet;
import com.hbm.items.machine.ItemICFPellet.EnumICFFuel; import com.hbm.items.machine.ItemICFPellet.EnumICFFuel;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -26,7 +27,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityICFPress extends TileEntityMachineBase implements IFluidStandardReceiver, IGUIProvider { public class TileEntityICFPress extends TileEntityMachineBase implements IFluidStandardReceiver, IGUIProvider, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;
public int muon; public int muon;

View File

@ -24,6 +24,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
@ -51,7 +52,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { public class TileEntityITER extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 10000000; public static final long maxPower = 10000000;
@ -650,4 +651,9 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece
} }
throw new NoSuchMethodException(); throw new NoSuchMethodException();
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -15,11 +15,8 @@ import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.*;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IConditionalInvAccess;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -41,7 +38,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider { public class TileEntityMachineArcWelder extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IConditionalInvAccess, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable {
public long power; public long power;
public long maxPower = 2_000; public long maxPower = 2_000;
@ -392,4 +389,9 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements
if(type == UpgradeType.POWER) return 3; if(type == UpgradeType.POWER) return 3;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -12,6 +12,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIAssemfac; import com.hbm.inventory.gui.GUIAssemfac;
import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
@ -31,7 +32,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IUpgradeInfoProvider { public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IUpgradeInfoProvider, IFluidCopiable {
public AssemblerArm[] arms; public AssemblerArm[] arms;
@ -476,4 +477,9 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im
if(type == UpgradeType.OVERDRIVE) return 12; if(type == UpgradeType.OVERDRIVE) return 12;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -187,7 +187,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
if(i > 9 && i < 19) { if(i > 9 && i < 19) {
ItemStack filter = slots[i - 10]; ItemStack filter = slots[i - 10];
if(filter == null) return true; if(filter == null || matcher.modes[i - 10] == null || matcher.modes[i - 10].isEmpty()) return true;
return !matcher.isValidForFilter(filter, i - 10, stack); return !matcher.isValidForFilter(filter, i - 10, stack);
} }
@ -216,7 +216,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
List<Integer> validSlots = new ArrayList(); List<Integer> validSlots = new ArrayList();
for(int i = 0; i < 9; i++) { for(int i = 0; i < 9; i++) {
ItemStack filter = slots[i]; ItemStack filter = slots[i];
if(filter == null) continue; if(filter == null || matcher.modes[i] == null || matcher.modes[i].isEmpty()) continue;
if(matcher.isValidForFilter(filter, i, stack)) { if(matcher.isValidForFilter(filter, i, stack)) {
validSlots.add(i + 10); validSlots.add(i + 10);
@ -350,13 +350,20 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
@Override @Override
public void setFilterContents(NBTTagCompound nbt) { public void setFilterContents(NBTTagCompound nbt) {
TileEntity tile = (TileEntity) this; TileEntity tile = this;
IInventory inv = (IInventory) this; IInventory inv = this;
int slot = nbt.getInteger("slot"); int slot = nbt.getInteger("slot");
if(slot > 8) return; if(slot > 8) return;
inv.setInventorySlotContents(slot, new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta"))); ItemStack item = new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta"));
inv.setInventorySlotContents(slot, item);
matcher.initPatternSmart(getWorldObj(), item, slot);
updateTemplateGrid();
nextMode(slot); nextMode(slot);
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile); tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
updateTemplateGrid(); updateTemplateGrid();
} }
@Override
public int[] getFilterSlots() {
return new int[]{0,9};
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.ModDamageSource; import com.hbm.lib.ModDamageSource;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
@ -29,7 +30,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardReceiver { public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardReceiver, IFluidCopiable {
public static final HashSet<FluidType> acceptedFuels = new HashSet(); public static final HashSet<FluidType> acceptedFuels = new HashSet();
@ -342,4 +343,8 @@ public class TileEntityMachineAutosaw extends TileEntityLoadedBase implements IN
public double getMaxRenderDistanceSquared() { public double getMaxRenderDistanceSquared() {
return 65536.0D; return 65536.0D;
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -14,6 +14,7 @@ import com.hbm.inventory.gui.GUIChemfac;
import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
@ -32,7 +33,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase implements IUpgradeInfoProvider { public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase implements IUpgradeInfoProvider, IFluidCopiable {
float rotSpeed; float rotSpeed;
public float rot; public float rot;
@ -389,4 +390,9 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase imp
if(type == UpgradeType.OVERDRIVE) return 12; if(type == UpgradeType.OVERDRIVE) return 12;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -14,6 +14,7 @@ import com.hbm.items.machine.ItemPistons.EnumPistonType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.tileentity.TileEntityMachinePolluting;
import com.hbm.util.EnumUtil; import com.hbm.util.EnumUtil;
@ -32,7 +33,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IFluidCopiable {
public boolean isOn = false; public boolean isOn = false;
public static long maxPower = 2_500_000; public static long maxPower = 2_500_000;
@ -318,4 +319,21 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachinePollutin
this.markChanged(); this.markChanged();
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound tag = new NBTTagCompound();
tag.setIntArray("fluidID", new int[]{tank.getTankType().getID()});
tag.setBoolean("isOn", isOn);
tag.setInteger("burnRate", setting);
return tag;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int id = nbt.getIntArray("fluidID")[index];
tank.setTankType(Fluids.fromID(id));
if(nbt.hasKey("isOn")) isOn = nbt.getBoolean("isOn");
if(nbt.hasKey("burnRate")) setting = nbt.getInteger("burnRate");
}
} }

View File

@ -15,6 +15,7 @@ import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -37,7 +38,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider { public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;
public long power; public long power;
@ -366,4 +367,34 @@ public class TileEntityMachineCompressor extends TileEntityMachineBase implement
if(type == UpgradeType.OVERDRIVE) return 9; if(type == UpgradeType.OVERDRIVE) return 9;
return 0; return 0;
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound tag = new NBTTagCompound();
tag.setIntArray("fluidID", getFluidIDToCopy());
tag.setInteger("compression", tanks[0].getPressure());
return tag;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
if(nbt.hasKey("compression")) {
int compression = nbt.getInteger("compression");
if (compression != tanks[0].getPressure()) {
tanks[0].withPressure(compression);
CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), compression));
if (recipe == null) {
tanks[1].withPressure(compression + 1);
} else {
tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type);
}
this.markChanged();
}
}
IFluidCopiable.super.pasteSettings(nbt, index, world, player, x, y, z);
}
} }

View File

@ -15,6 +15,7 @@ import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -39,7 +40,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public class TileEntityMachineCrystallizer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1000000; public static final long maxPower = 1000000;
@ -394,4 +395,14 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
if(type == UpgradeType.OVERDRIVE) return 3; if(type == UpgradeType.OVERDRIVE) return 3;
return 0; return 0;
} }
@Override
public int[] getFluidIDToCopy() {
return new int[]{ tank.getTankType().getID()};
}
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -16,10 +16,7 @@ import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.*;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import com.hbm.util.Tuple.Pair; import com.hbm.util.Tuple.Pair;
@ -42,7 +39,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC { public class TileEntityMachineCyclotron extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IConditionalInvAccess, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100000000; public static final long maxPower = 100000000;
@ -433,4 +430,9 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements
data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0);
data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? getConsumption() : 0); data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.progress > 0 ? getConsumption() : 0);
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -18,6 +18,7 @@ import com.hbm.inventory.gui.GUIMachineDiesel;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.tileentity.TileEntityMachinePolluting;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
@ -36,7 +37,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC { public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public int soundCycle = 0; public int soundCycle = 0;

View File

@ -15,6 +15,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.BufPacket; import com.hbm.packet.toclient.BufPacket;
import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IBufPacketReceiver;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -30,7 +31,7 @@ import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFluidStandardReceiver, IBufPacketReceiver { public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFluidStandardReceiver, IBufPacketReceiver, IFluidCopiable {
public FluidTank tank; public FluidTank tank;
@ -157,4 +158,9 @@ public class TileEntityMachineDrain extends TileEntityLoadedBase implements IFlu
public double getMaxRenderDistanceSquared() { public double getMaxRenderDistanceSquared() {
return 65536.0D; return 65536.0D;
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -24,6 +24,7 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.items.special.ItemBedrockOreBase;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -60,7 +61,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { public class TileEntityMachineExcavator extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable {
public static final long maxPower = 1_000_000; public static final long maxPower = 1_000_000;
public long power; public long power;
@ -879,4 +880,9 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements
if(type == UpgradeType.POWER) return 3; if(type == UpgradeType.POWER) return 3;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -23,7 +24,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IFluidCopiable {
public FluidTank input; public FluidTank input;
public FluidTank output; public FluidTank output;

View File

@ -17,6 +17,7 @@ import com.hbm.inventory.gui.GUIMachineLargeTurbine;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -43,7 +44,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine { public class TileEntityMachineLargeTurbine extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine, IFluidCopiable {
public long power; public long power;
public FluidTank[] tanks; public FluidTank[] tanks;

View File

@ -6,6 +6,7 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.UpgradeManager;
import com.hbm.inventory.container.ContainerMixer; import com.hbm.inventory.container.ContainerMixer;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIMixer; import com.hbm.inventory.gui.GUIMixer;
@ -13,10 +14,7 @@ import com.hbm.inventory.recipes.MixerRecipes;
import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.*;
import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -35,7 +33,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider { public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyReceiverMK2, IFluidStandardTransceiver, IUpgradeInfoProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 10_000; public static final long maxPower = 10_000;
@ -374,4 +372,10 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB
if(type == UpgradeType.OVERDRIVE) return 6; if(type == UpgradeType.OVERDRIVE) return 6;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return this.tanks[2];
}
} }

View File

@ -19,6 +19,7 @@ import com.hbm.lib.Library;
import com.hbm.lib.ModDamageSource; import com.hbm.lib.ModDamageSource;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
@ -46,7 +47,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { public class TileEntityMachineOreSlopper extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100_000; public static final long maxPower = 100_000;

View File

@ -12,6 +12,7 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIPlasmaHeater; import com.hbm.inventory.gui.GUIPlasmaHeater;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider { public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100000000; public static final long maxPower = 100000000;

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -22,7 +23,7 @@ import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase implements IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine, IFluidCopiable {
public static final HashSet<Block> validBlocks = new HashSet(); public static final HashSet<Block> validBlocks = new HashSet();
@ -200,4 +201,9 @@ public abstract class TileEntityMachinePumpBase extends TileEntityLoadedBase imp
public double getMaxRenderDistanceSquared() { public double getMaxRenderDistanceSquared() {
return 65536.0D; return 65536.0D;
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -11,6 +11,7 @@ import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemRTGPellet; import com.hbm.items.machine.ItemRTGPellet;
import com.hbm.items.machine.ItemRTGPelletDepleted; import com.hbm.items.machine.ItemRTGPelletDepleted;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
@ -33,7 +34,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC { public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final int maxPower = 1000000; public static final int maxPower = 1000000;

View File

@ -15,6 +15,7 @@ import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
@ -38,7 +39,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineSolderingStation extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider { public class TileEntityMachineSolderingStation extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable {
public long power; public long power;
public long maxPower = 2_000; public long maxPower = 2_000;
@ -365,4 +366,9 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp
if(type == UpgradeType.POWER) return 3; if(type == UpgradeType.POWER) return 3;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -13,6 +13,7 @@ import com.hbm.inventory.fluid.trait.FT_Coolable;
import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType;
import com.hbm.inventory.gui.GUIMachineTurbine; import com.hbm.inventory.gui.GUIMachineTurbine;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IBufPacketReceiver;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
@ -42,7 +43,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine{ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IEnergyProviderMK2, IFluidStandardTransceiver, IBufPacketReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IConfigurableMachine, IFluidCopiable{
private ItemStack slots[]; private ItemStack slots[];

View File

@ -18,6 +18,7 @@ import com.hbm.items.machine.IItemFluidIdentifier;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
@ -42,7 +43,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyProviderMK2, IControlReceiver, IGUIProvider, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1000000L; public static final long maxPower = 1000000L;

View File

@ -21,6 +21,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.tileentity.TileEntityMachinePolluting;
@ -47,7 +48,7 @@ import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1_000_000; public static final long maxPower = 1_000_000;

View File

@ -14,6 +14,7 @@ import com.hbm.items.ModItems;
import com.hbm.items.ItemEnums.EnumAshType; import com.hbm.items.ItemEnums.EnumAshType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.module.ModuleBurnTime; import com.hbm.module.ModuleBurnTime;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CompatEnergyControl; import com.hbm.util.CompatEnergyControl;
@ -34,7 +35,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC { public class TileEntityMachineWoodBurner extends TileEntityMachineBase implements IFluidStandardReceiver, IControlReceiver, IEnergyProviderMK2, IGUIProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100_000; public static final long maxPower = 100_000;
@ -321,4 +322,9 @@ public class TileEntityMachineWoodBurner extends TileEntityMachineBase implement
if(this.liquidBurn) data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, 1D); if(this.liquidBurn) data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, 1D);
data.setDouble(CompatEnergyControl.D_OUTPUT_HE, power); data.setDouble(CompatEnergyControl.D_OUTPUT_HE, power);
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -1,6 +1,7 @@
package com.hbm.tileentity.machine; package com.hbm.tileentity.machine;
import com.hbm.handler.CompatHandler; import com.hbm.handler.CompatHandler;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.container.ContainerMicrowave; import com.hbm.inventory.container.ContainerMicrowave;
import com.hbm.inventory.gui.GUIMicrowave; import com.hbm.inventory.gui.GUIMicrowave;
import com.hbm.lib.Library; import com.hbm.lib.Library;
@ -29,7 +30,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent { public class TileEntityMicrowave extends TileEntityMachineBase implements IEnergyReceiverMK2, IGUIProvider, SimpleComponent, CompatHandler.OCComponent, ICopiable {
public long power; public long power;
public static final long maxPower = 50000; public static final long maxPower = 50000;
@ -254,4 +255,21 @@ public class TileEntityMicrowave extends TileEntityMachineBase implements IEnerg
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIMicrowave(player.inventory, this); return new GUIMicrowave(player.inventory, this);
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("microSpeed", speed);
return null;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
if(nbt.hasKey("microSpeed")) speed = nbt.getInteger("microSpeed");
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
return new String[]{ "copyTool.speed"};
}
} }

View File

@ -2,12 +2,14 @@ package com.hbm.tileentity.machine;
import java.util.HashSet; import java.util.HashSet;
import com.hbm.interfaces.ICopiable;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.BufPacket; import com.hbm.packet.toclient.BufPacket;
import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IBufPacketReceiver;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluid.IFluidStandardTransceiver;
@ -19,7 +21,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.ChunkCoordinates;
public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFluidStandardTransceiver, IBufPacketReceiver { public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFluidStandardTransceiver, IBufPacketReceiver, IFluidCopiable {
private FluidTank water; private FluidTank water;
private FluidTank steam; private FluidTank steam;
@ -137,4 +139,9 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
water.deserialize(buf); water.deserialize(buf);
steam.deserialize(buf); steam.deserialize(buf);
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -14,6 +14,7 @@ import com.hbm.items.ModItems;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -36,7 +37,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements ISidedInventory, IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider { public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements ISidedInventory, IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1000000; public static final long maxPower = 1000000;
@ -452,4 +453,9 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUISoyuzLauncher(player.inventory, this); return new GUISoyuzLauncher(player.inventory, this);
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable;
import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -24,7 +25,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEnergyProviderMK2, IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine { public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEnergyProviderMK2, IFluidStandardTransceiver, INBTPacketReceiver, IConfigurableMachine, IFluidCopiable {
public long powerBuffer; public long powerBuffer;
@ -214,4 +215,9 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IEner
this.tanks[0].readFromNBT(nbt, "s"); this.tanks[0].readFromNBT(nbt, "s");
this.tanks[1].readFromNBT(nbt, "w"); this.tanks[1].readFromNBT(nbt, "w");
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -12,6 +12,7 @@ import com.hbm.inventory.gui.GUIStorageDrum;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.special.ItemWasteLong; import com.hbm.items.special.ItemWasteLong;
import com.hbm.items.special.ItemWasteShort; import com.hbm.items.special.ItemWasteShort;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IBufPacketReceiver;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -34,7 +35,8 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityStorageDrum extends TileEntityMachineBase implements IFluidStandardSender, IBufPacketReceiver, IGUIProvider { public class TileEntityStorageDrum extends TileEntityMachineBase implements IFluidStandardSender, IBufPacketReceiver, IGUIProvider, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;
private static final int[] slots_arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 }; private static final int[] slots_arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
@ -277,4 +279,9 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIStorageDrum(player.inventory, this); return new GUIStorageDrum(player.inventory, this);
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -19,6 +19,7 @@ import com.hbm.items.machine.ItemWatzPellet;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -44,7 +45,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityWatz extends TileEntityMachineBase implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public class TileEntityWatz extends TileEntityMachineBase implements IFluidStandardTransceiver, IControlReceiver, IGUIProvider, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;
public int heat; public int heat;
@ -549,4 +550,9 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
public FluidTank[] getReceivingTanks() { public FluidTank[] getReceivingTanks() {
return new FluidTank[] { tanks[0] }; return new FluidTank[] { tanks[0] };
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -5,6 +5,7 @@ import com.hbm.inventory.FluidStack;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.recipes.CrackingRecipes; import com.hbm.inventory.recipes.CrackingRecipes;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.Tuple.Pair; import com.hbm.util.Tuple.Pair;
@ -17,7 +18,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;
@ -193,4 +194,9 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl
public FluidTank[] getAllTanks() { public FluidTank[] getAllTanks() {
return tanks; return tanks;
} }
@Override
public FluidTank getTankToPaste() {
return tanks[0];
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.gui.GUIMachineCatalyticReformer;
import com.hbm.inventory.recipes.ReformingRecipes; import com.hbm.inventory.recipes.ReformingRecipes;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1_000_000; public static final long maxPower = 1_000_000;

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.gui.GUIMachineCoker;
import com.hbm.inventory.recipes.CokerRecipes; import com.hbm.inventory.recipes.CokerRecipes;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.Tuple.Triplet; import com.hbm.util.Tuple.Triplet;
@ -28,7 +29,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable {
public boolean wasOn; public boolean wasOn;
public int progress; public int progress;

View File

@ -8,6 +8,7 @@ import com.hbm.lib.Library;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.BufPacket; import com.hbm.packet.toclient.BufPacket;
import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IBufPacketReceiver;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.util.Tuple.Pair; import com.hbm.util.Tuple.Pair;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -21,7 +22,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver { public class TileEntityMachineFractionTower extends TileEntityLoadedBase implements IBufPacketReceiver, IFluidStandardTransceiver, IFluidCopiable {
public FluidTank[] tanks; public FluidTank[] tanks;

View File

@ -17,6 +17,7 @@ import com.hbm.inventory.gui.GUIMachineGasFlare;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -41,7 +42,7 @@ import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyProviderMK2, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100000; public static final long maxPower = 100000;
@ -327,4 +328,21 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements
data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.fluidUsed); data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.fluidUsed);
data.setDouble(CompatEnergyControl.D_OUTPUT_HE, this.output); data.setDouble(CompatEnergyControl.D_OUTPUT_HE, this.output);
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound tag = new NBTTagCompound();
tag.setIntArray("fluidID", new int[]{tank.getTankType().getID()});
tag.setBoolean("isOn", isOn);
tag.setBoolean("doesBurn", doesBurn);
return tag;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int id = nbt.getIntArray("fluidID")[index];
tank.setTankType(Fluids.fromID(id));
if(nbt.hasKey("isOn")) isOn = nbt.getBoolean("isOn");
if(nbt.hasKey("doesBurn")) doesBurn = nbt.getBoolean("doesBurn");
}
} }

View File

@ -9,6 +9,7 @@ import com.hbm.inventory.gui.GUIMachineHydrotreater;
import com.hbm.inventory.recipes.HydrotreatingRecipes; import com.hbm.inventory.recipes.HydrotreatingRecipes;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineHydrotreater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public class TileEntityMachineHydrotreater extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1_000_000; public static final long maxPower = 1_000_000;
@ -222,4 +223,9 @@ public class TileEntityMachineHydrotreater extends TileEntityMachineBase impleme
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIMachineHydrotreater(player.inventory, this); return new GUIMachineHydrotreater(player.inventory, this);
} }
@Override
public FluidTank getTankToPaste() {
return tanks[0];
}
} }

View File

@ -12,6 +12,7 @@ import com.hbm.inventory.gui.GUILiquefactor;
import com.hbm.inventory.recipes.LiquefactionRecipes; import com.hbm.inventory.recipes.LiquefactionRecipes;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -33,7 +34,8 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public class TileEntityMachineLiquefactor extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardSender, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100000; public static final long maxPower = 100000;

View File

@ -24,11 +24,7 @@ import com.hbm.items.ModItems;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.*;
import com.hbm.tileentity.IOverpressurable;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.ParticleUtil; import com.hbm.util.ParticleUtil;
import com.hbm.util.Tuple.Quintet; import com.hbm.util.Tuple.Quintet;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
@ -49,7 +45,7 @@ import net.minecraft.world.Explosion;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyReceiverMK2, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider { public class TileEntityMachineRefinery extends TileEntityMachineBase implements IEnergyReceiverMK2, IOverpressurable, IPersistentNBT, IRepairable, IFluidStandardTransceiver, IGUIProvider, IFluidCopiable {
public long power = 0; public long power = 0;
public int sulfur = 0; public int sulfur = 0;
@ -467,4 +463,5 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIMachineRefinery(player.inventory, this); return new GUIMachineRefinery(player.inventory, this);
} }
} }

View File

@ -11,6 +11,7 @@ import com.hbm.inventory.gui.GUISolidifier;
import com.hbm.inventory.recipes.SolidificationRecipes; import com.hbm.inventory.recipes.SolidificationRecipes;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -33,7 +34,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public class TileEntityMachineSolidifier extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 100000; public static final long maxPower = 100000;
@ -283,4 +284,9 @@ public class TileEntityMachineSolidifier extends TileEntityMachineBase implement
data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0); data.setBoolean(CompatEnergyControl.B_ACTIVE, this.progress > 0);
data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.usage); data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, this.usage);
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.inventory.recipes.RefineryRecipes;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -28,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, IFluidCopiable {
public long power; public long power;
public static final long maxPower = 1_000_000; public static final long maxPower = 1_000_000;

View File

@ -9,11 +9,7 @@ import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade;
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.*;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.IUpgradeInfoProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.Tuple; import com.hbm.util.Tuple;
import com.hbm.util.Tuple.Triplet; import com.hbm.util.Tuple.Triplet;
@ -28,9 +24,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider { public abstract class TileEntityOilDrillBase extends TileEntityMachineBase implements IEnergyReceiverMK2, IFluidStandardTransceiver, IConfigurableMachine, IPersistentNBT, IGUIProvider, IUpgradeInfoProvider, IFluidCopiable {
public int indicator = 0; public int indicator = 0;
@ -329,4 +326,9 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple
if(type == UpgradeType.OVERDRIVE) return 3; if(type == UpgradeType.OVERDRIVE) return 3;
return 0; return 0;
} }
@Override
public FluidTank getTankToPaste() {
return null;
}
} }

View File

@ -14,6 +14,7 @@ import com.hbm.inventory.fluid.trait.FluidTrait.FluidReleaseType;
import com.hbm.inventory.gui.GUIBarrel; import com.hbm.inventory.gui.GUIBarrel;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.saveddata.TomSaveData; import com.hbm.saveddata.TomSaveData;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -43,7 +44,7 @@ import java.util.List;
import java.util.Set; import java.util.Set;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
public class TileEntityBarrel extends TileEntityMachineBase implements SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent { public class TileEntityBarrel extends TileEntityMachineBase implements SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider, CompatHandler.OCComponent, IFluidCopiable {
public FluidTank tank; public FluidTank tank;
public short mode = 0; public short mode = 0;
@ -304,6 +305,16 @@ public class TileEntityBarrel extends TileEntityMachineBase implements SimpleCom
return new FluidTank[] { tank }; return new FluidTank[] { tank };
} }
@Override
public int[] getFluidIDToCopy() {
return new int[] {tank.getTankType().getID()};
}
@Override
public FluidTank getTankToPaste() {
return tank;
}
@Override @Override
public void writeNBT(NBTTagCompound nbt) { public void writeNBT(NBTTagCompound nbt) {
if(tank.getFill() == 0) return; if(tank.getFill() == 0) return;

View File

@ -20,12 +20,8 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.*;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.IOverpressurable;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.ParticleUtil; import com.hbm.util.ParticleUtil;
import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.Optional;
@ -53,7 +49,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")})
public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public class TileEntityMachineFluidTank extends TileEntityMachineBase implements SimpleComponent, OCComponent, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable, IFluidCopiable{
public FluidTank tank; public FluidTank tank;
public short mode = 0; public short mode = 0;
@ -381,6 +377,16 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0]; return (mode == 0 || mode == 1) ? new FluidTank[] {tank} : new FluidTank[0];
} }
@Override
public int[] getFluidIDToCopy() {
return new int[] {tank.getTankType().getID()};
}
@Override
public FluidTank getTankToPaste() {
return tank;
}
@Override @Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerMachineFluidTank(player.inventory, (TileEntityMachineFluidTank) world.getTileEntity(x, y, z)); return new ContainerMachineFluidTank(player.inventory, (TileEntityMachineFluidTank) world.getTileEntity(x, y, z));

View File

@ -221,4 +221,9 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIMassStorage(player.inventory, this); return new GUIMassStorage(player.inventory, this);
} }
@Override
public int[] getFilterSlots() {
return new int[]{1,2};
}
} }

View File

@ -1,14 +1,21 @@
package com.hbm.tileentity.network; package com.hbm.tileentity.network;
import com.hbm.interfaces.ICopiable;
import com.hbm.tileentity.IControlReceiverFilter;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.network.NetworkManager; import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.Constants; import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public abstract class TileEntityCraneBase extends TileEntityMachineBase { public abstract class TileEntityCraneBase extends TileEntityMachineBase implements ICopiable {
public TileEntityCraneBase(int scount) { public TileEntityCraneBase(int scount) {
super(scount); super(scount);
@ -101,4 +108,75 @@ public abstract class TileEntityCraneBase extends TileEntityMachineBase {
super.writeToNBT(nbt); super.writeToNBT(nbt);
nbt.setByte("CraneOutputOverride", (byte) outputOverride.ordinal()); nbt.setByte("CraneOutputOverride", (byte) outputOverride.ordinal());
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("inputSide", getInputSide().ordinal());
nbt.setInteger("outputSide", getOutputSide().ordinal());
if(this instanceof IControlReceiverFilter){
IControlReceiverFilter filter = ((IControlReceiverFilter) this);
IInventory inv = this;
NBTTagList tags = new NBTTagList();
int count = 0;
for (int i = filter.getFilterSlots()[0]; i < filter.getFilterSlots()[1]; i++) {
NBTTagCompound slotNBT = new NBTTagCompound();
if(inv.getStackInSlot(i) != null) {
slotNBT.setByte("slot", (byte) count);
inv.getStackInSlot(i).writeToNBT(slotNBT);
tags.appendTag(slotNBT);
}
count++;
}
nbt.setTag("items", tags);
}
return nbt;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
if(index == 1) {
if (nbt.hasKey("outputSide")) {
outputOverride = ForgeDirection.getOrientation(nbt.getInteger("outputSide"));
onBlockChanged();
}
if (nbt.hasKey("inputSide")) {
worldObj.setBlockMetadataWithNotify(xCoord, yCoord, zCoord, nbt.getInteger("inputSide"), 3);
}
} else {
if (this instanceof IControlReceiverFilter) {
IControlReceiverFilter filter = ((IControlReceiverFilter) this);
IInventory inv = this;
NBTTagList items = nbt.getTagList("items", 10);
int listSize = items.tagCount();
if (listSize > 0) {
int count = 0;
for (int i = filter.getFilterSlots()[0]; i < filter.getFilterSlots()[1]; i++) {
if (i < listSize) {
NBTTagCompound slotNBT = items.getCompoundTagAt(count);
byte slot = slotNBT.getByte("slot");
ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT);
//whether the filter info came from a router
boolean router = nbt.hasKey("modes") && slot > index * 5 && slot < index * + 5;
if (loadedStack != null && (slot < filter.getFilterSlots()[1] || router)) {
inv.setInventorySlotContents(slot + filter.getFilterSlots()[0], ItemStack.loadItemStackFromNBT(slotNBT));
filter.nextMode(slot);
this.getWorldObj().markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this);
}
}
count++;
}
}
}
}
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
return new String[]{"copytool.filter", "copytool.orientation"};
}
} }

View File

@ -8,6 +8,7 @@ import com.hbm.items.ModItems;
import com.hbm.module.ModulePatternMatcher; import com.hbm.module.ModulePatternMatcher;
import com.hbm.tileentity.IControlReceiverFilter; import com.hbm.tileentity.IControlReceiverFilter;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.util.ItemStackUtil;
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 io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
@ -255,4 +256,10 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU
setFilterContents(data); setFilterContents(data);
} }
} }
@Override
public int[] getFilterSlots() {
return new int[]{0,9};
}
} }

View File

@ -190,6 +190,11 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
} }
@Override
public int[] getFilterSlots() {
return new int[]{0,9};
}
@Override @Override
public void receiveControl(NBTTagCompound data) { public void receiveControl(NBTTagCompound data) {
if(data.hasKey("whitelist")) { if(data.hasKey("whitelist")) {

View File

@ -12,8 +12,11 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -120,7 +123,10 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI
public boolean hasPermission(EntityPlayer player) { public boolean hasPermission(EntityPlayer player) {
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
} }
@Override
public int[] getFilterSlots() {
return new int[]{0, slots.length};
}
@Override @Override
public void receiveControl(NBTTagCompound data) { public void receiveControl(NBTTagCompound data) {
if(data.hasKey("toggle")) { if(data.hasKey("toggle")) {
@ -133,4 +139,60 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI
setFilterContents(data); setFilterContents(data);
} }
} }
@Override
public NBTTagCompound getSettings(World world, int x, int y, int z) {
IInventory inv = (IInventory) this;
NBTTagCompound nbt = new NBTTagCompound();
NBTTagList tags = new NBTTagList();
int count = 0;
for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) {
NBTTagCompound slotNBT = new NBTTagCompound();
if (inv.getStackInSlot(i) != null) {
slotNBT.setByte("slot", (byte) count);
inv.getStackInSlot(i).writeToNBT(slotNBT);
tags.appendTag(slotNBT);
}
count++;
}
nbt.setTag("items", tags);
nbt.setIntArray("modes", modes);
return nbt;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
NBTTagList items = nbt.getTagList("items", 10);
int listSize = items.tagCount();
if(listSize > 0 && nbt.hasKey("modes")) {
for (int i = 0; i < listSize; i++) {
NBTTagCompound slotNBT = items.getCompoundTagAt(i);
byte slot = slotNBT.getByte("slot");
ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT);
if (loadedStack != null && slot > index * 5 && slot < Math.min(index * 5 + 5, 30)) {
this.setInventorySlotContents(slot, ItemStack.loadItemStackFromNBT(slotNBT));
nextMode(slot);
this.getWorldObj().markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this);
}
}
modes = nbt.getIntArray("modes");
} else {
IControlReceiverFilter.super.pasteSettings(nbt, index, world, player, x, y, z);
}
}
@Override
public String[] infoForDisplay(World world, int x, int y, int z) {
String[] options = new String[patterns.length];
for (int i = 0; i < options.length; i++) {
options[i] = "copytool.pattern" + i;
}
return options;
}
} }

View File

@ -9,6 +9,7 @@ import com.hbm.inventory.container.ContainerDroneCrate;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.gui.GUIDroneCrate; import com.hbm.inventory.gui.GUIDroneCrate;
import com.hbm.tileentity.IFluidCopiable;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.INBTPacketReceiver;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
@ -27,7 +28,7 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3; import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IControlReceiver, IDroneLinkable, IFluidStandardTransceiver { public class TileEntityDroneCrate extends TileEntityMachineBase implements IGUIProvider, INBTPacketReceiver, IControlReceiver, IDroneLinkable, IFluidStandardTransceiver, IFluidCopiable {
public FluidTank tank; public FluidTank tank;

View File

@ -130,4 +130,9 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer
public boolean hasPermission(EntityPlayer player) { public boolean hasPermission(EntityPlayer player) {
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
} }
@Override
public int[] getFilterSlots() {
return new int[]{0,9};
}
} }

View File

@ -1,20 +1,28 @@
package com.hbm.tileentity.network; package com.hbm.tileentity.network;
import com.hbm.blocks.network.FluidDuctBase;
import com.hbm.blocks.network.IBlockFluidDuct;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.HbmKeybinds;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import api.hbm.fluid.IFluidConductor; import api.hbm.fluid.IFluidConductor;
import api.hbm.fluid.IPipeNet; import api.hbm.fluid.IPipeNet;
import api.hbm.fluid.PipeNet; import api.hbm.fluid.PipeNet;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.tileentity.IFluidCopiable;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager; import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor { public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor, IFluidCopiable {
protected IPipeNet network; protected IPipeNet network;
protected FluidType type = Fluids.NONE; protected FluidType type = Fluids.NONE;
@ -165,4 +173,36 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor
super.onChunkUnload(); super.onChunkUnload();
this.isLoaded = false; this.isLoaded = false;
} }
@Override
public int[] getFluidIDToCopy() {
return new int[]{ type.getID() };
}
@Override
public FluidTank getTankToPaste() {
return null;
}
@Override
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
int[] ids = nbt.getIntArray("fluidID");
if(ids.length > 0) {
int id;
if (index < ids.length)
id = ids[index];
else
id = 0;
FluidType fluid = Fluids.fromID(id);
if(HbmPlayerProps.getData(player).getKeyPressed(HbmKeybinds.EnumKeybind.TOOL_CTRL)){
IBlockFluidDuct pipe = (IBlockFluidDuct)world.getBlock(x, y, z);
pipe.changeTypeRecursively(world, x, y, z, getType(), fluid, 64);
} else {
this.setType(fluid);
}
}
}
} }

View File

@ -131,4 +131,9 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement
setFilterContents(data); setFilterContents(data);
} }
} }
@Override
public int[] getFilterSlots() {
return new int[]{0, slots.length};
}
} }

View File

@ -19,6 +19,7 @@ import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.AuxParticlePacketNT;
import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.fluid.IFluidStandardReceiver;
import com.hbm.tileentity.IFluidCopiable;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -30,7 +31,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFluidStandardReceiver { public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFluidStandardReceiver, IFluidCopiable {
public FluidTank tank; public FluidTank tank;
@ -228,4 +229,9 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUITurretFritz(player.inventory, this); return new GUITurretFritz(player.inventory, this);
} }
@Override
public FluidTank getTankToPaste() {
return tank;
}
} }

View File

@ -4,9 +4,8 @@ import java.lang.reflect.Field;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.ArrayList; import java.util.*;
import java.util.Collections; import java.util.function.ToIntFunction;
import java.util.List;
import javax.annotation.Nonnegative; import javax.annotation.Nonnegative;
@ -207,6 +206,21 @@ public class BobMathUtil {
return delta < -180 ? delta + 360 : delta; return delta < -180 ? delta + 360 : delta;
} }
// I am sick of trying to remember the ridiculous quirks of Java 8
// so I wrote this thing that can shit any int-ish list-ish into a regular fucking int[]
// made by mellow, thrown here by 70k
public static int[] intCollectionToArray(Collection<Integer> in) {
return intCollectionToArray(in, i -> (int)i);
}
public static int[] intCollectionToArray(Collection<Integer> in, ToIntFunction<? super Object> mapper) {
return Arrays.stream(in.toArray()).mapToInt(mapper).toArray();
}
public static int[] collectionToIntArray(Collection<? extends Object> in, ToIntFunction<? super Object> mapper) {
return Arrays.stream(in.toArray()).mapToInt(mapper).toArray();
}
/** Soft peak sine */ /** Soft peak sine */
public static double sps(double x) { public static double sps(double x) {
return Math.sin(Math.PI / 2D * Math.cos(x)); return Math.sin(Math.PI / 2D * Math.cos(x));

View File

@ -0,0 +1,76 @@
package com.hbm.util;
import java.util.function.Function;
/**
* Represents a value that is either of generic type L or R
* @author martinthedragon
*/
@SuppressWarnings("unchecked")
public final class Either<L, R> {
public static <L, R> Either<L, R> left(L value) {
return new Either<>(value, true);
}
public static <L, R> Either<L, R> right(R value) {
return new Either<>(value, false);
}
private final Object value;
private final boolean isLeft;
private Either(Object value, boolean isLeft) {
this.value = value;
this.isLeft = isLeft;
}
public boolean isLeft() {
return isLeft;
}
public boolean isRight() {
return !isLeft;
}
public L left() {
if(isLeft)
return (L) value;
else
throw new IllegalStateException("Tried accessing value as the L type, but was R type");
}
public R right() {
if(!isLeft)
return (R) value;
else
throw new IllegalStateException("Tried accessing value as the R type, but was L type");
}
public L leftOrNull() {
return isLeft ? (L) value : null;
}
public R rightOrNull() {
return !isLeft ? (R) value : null;
}
public <V> V cast() {
return (V) value;
}
public <T> T run(Function<L, T> leftFunc, Function<R, T> rightFunc) {
return isLeft ? leftFunc.apply((L) value) : rightFunc.apply((R) value);
}
public <T> T runLeftOrNull(Function<L, T> func) {
return isLeft ? func.apply((L) value) : null;
}
public <T> T runRightOrNull(Function<R, T> func) {
return !isLeft ? func.apply((R) value) : null;
}
public <V, T> T runCasting(Function<V, T> func) {
return func.apply((V) value);
}
}

View File

@ -860,6 +860,17 @@ container.wasteDrum=Spent Fuel Pool Drum
container.watzPowerplant=Watz Power Plant container.watzPowerplant=Watz Power Plant
container.zirnox=ZIRNOX Nuclear Reactor container.zirnox=ZIRNOX Nuclear Reactor
copytool.filter=Filter
copytool.invertRedstone=Redstone Inverted
copytool.invertFilter=Filter Inverted
copytool.orientation=Orientation
copytool.pattern0=Red Side
copytool.pattern1=Orange Side
copytool.pattern2=Yellow Side
copytool.pattern3=Green Side
copytool.pattern4=Blue Side
copytool.pattern5=Purple Side
crucible.aa=Advanced Alloy Production crucible.aa=Advanced Alloy Production
crucible.abronze=Arsenic Bronze Production crucible.abronze=Arsenic Bronze Production
crucible.bbronze=Bismuth Bronze Production crucible.bbronze=Bismuth Bronze Production
@ -1354,6 +1365,8 @@ hbm.key.dash=Dash (Unbind from Crouch in config)
hbm.key.toggleBack=Toggle Jetpack hbm.key.toggleBack=Toggle Jetpack
hbm.key.toggleHUD=Toggle HUD hbm.key.toggleHUD=Toggle HUD
hbm.key.reload=Reload hbm.key.reload=Reload
hbm.key.copyToolAlt=Copy Tool: Switch Paste
hbm.key.copyToolCtrl=Copy Tool: Paste to Pipes
hbmfluid.amat=Antimatter hbmfluid.amat=Antimatter
hbmfluid.aromatics=Aromatic Hydrocarbons hbmfluid.aromatics=Aromatic Hydrocarbons
@ -4285,6 +4298,7 @@ item.seg_20.name=Size 20 Connector
item.serum.name=Serum item.serum.name=Serum
item.servo_set.name=Servo Set item.servo_set.name=Servo Set
item.servo_set_desh.name=Desh Servo Set item.servo_set_desh.name=Desh Servo Set
item.settings_tool.name=Settings Tool
item.shackles.name=Shackles item.shackles.name=Shackles
item.shellntm.name=%s Shell item.shellntm.name=%s Shell
item.shimmer_axe.name=Shimmer Axe item.shimmer_axe.name=Shimmer Axe

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B