tooltips for persistent containers

This commit is contained in:
Boblet 2022-08-19 11:23:22 +02:00
parent 42c154fa6e
commit 739ac79a6a
16 changed files with 186 additions and 34 deletions

View File

@ -0,0 +1,12 @@
package com.hbm.blocks;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public interface IPersistentInfoProvider {
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext);
}

View File

@ -1,12 +1,17 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Random; import java.util.Random;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.storage.TileEntityBarrel; import com.hbm.tileentity.machine.storage.TileEntityBarrel;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
@ -22,10 +27,11 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.stats.StatList; import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
public class BlockFluidBarrel extends BlockContainer { public class BlockFluidBarrel extends BlockContainer implements IPersistentInfoProvider {
int capacity; int capacity;
@ -156,4 +162,11 @@ public class BlockFluidBarrel extends BlockContainer {
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F); player.addExhaustion(0.025F);
} }
@Override
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
FluidTank tank = new FluidTank(Fluids.NONE, 0, 0);
tank.readFromNBT(persistentTag, "tank");
list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName()));
}
} }

View File

@ -5,10 +5,11 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityDiFurnace; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.I18nUtil; import com.hbm.util.I18nUtil;
@ -26,13 +27,15 @@ import net.minecraft.entity.player.EntityPlayer;
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.stats.StatList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class MachineBattery extends BlockContainer implements ILookOverlay { public class MachineBattery extends BlockContainer implements ILookOverlay, IPersistentInfoProvider {
private final Random field_149933_a = new Random(); private final Random field_149933_a = new Random();
private static boolean keepInventory; private static boolean keepInventory;
@ -143,8 +146,10 @@ public class MachineBattery extends BlockContainer implements ILookOverlay {
} }
if(itemStack.hasDisplayName()) { if(itemStack.hasDisplayName()) {
((TileEntityDiFurnace) world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName()); ((TileEntityMachineBattery) world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName());
} }
IPersistentNBT.restoreData(world, x, y, z, itemStack);
} }
@Override @Override
@ -249,4 +254,30 @@ public class MachineBattery extends BlockContainer implements ILookOverlay {
TileEntityMachineBattery battery = (TileEntityMachineBattery) te; TileEntityMachineBattery battery = (TileEntityMachineBattery) te;
return battery.getComparatorPower(); return battery.getComparatorPower();
} }
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return IPersistentNBT.getDrops(world, x, y, z, this);
}
@Override
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(!player.capabilities.isCreativeMode) {
harvesters.set(player);
this.dropBlockAsItem(world, x, y, z, meta, 0);
harvesters.set(null);
}
}
@Override
public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) {
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F);
}
@Override
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(this.maxPower) + "HE");
}
} }

View File

@ -1,24 +1,31 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandlerXR; import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
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.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
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 MachineBigAssTank9000 extends BlockDummyable { public class MachineBigAssTank9000 extends BlockDummyable implements IPersistentInfoProvider {
public MachineBigAssTank9000(Material mat) { public MachineBigAssTank9000(Material mat) {
super(mat); super(mat);
@ -91,4 +98,11 @@ public class MachineBigAssTank9000 extends BlockDummyable {
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) { public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return IPersistentNBT.getDrops(world, x, y, z, this); return IPersistentNBT.getDrops(world, x, y, z, this);
} }
@Override
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
FluidTank tank = new FluidTank(Fluids.NONE, 0, 0);
tank.readFromNBT(persistentTag, "tank");
list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName()));
}
} }

View File

@ -5,9 +5,9 @@ import java.util.List;
import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU; import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
@ -17,11 +17,13 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
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.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class MachineFENSU extends BlockDummyable implements ILookOverlay { public class MachineFENSU extends BlockDummyable implements ILookOverlay, IPersistentInfoProvider {
public MachineFENSU(Material mat) { public MachineFENSU(Material mat) {
super(mat); super(mat);
@ -93,4 +95,9 @@ public class MachineFENSU extends BlockDummyable implements ILookOverlay {
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
} }
@Override
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(Long.MAX_VALUE) + "HE");
}
} }

View File

@ -1,15 +1,20 @@
package com.hbm.blocks.machine; package com.hbm.blocks.machine;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List;
import java.util.Random; import java.util.Random;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandler; import com.hbm.handler.MultiblockHandler;
import com.hbm.interfaces.IMultiblock; import com.hbm.interfaces.IMultiblock;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.machine.TileEntityDummy;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -24,10 +29,11 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.stats.StatList; import net.minecraft.stats.StatList;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.MathHelper; import net.minecraft.util.MathHelper;
import net.minecraft.world.World; import net.minecraft.world.World;
public class MachineFluidTank extends BlockContainer implements IMultiblock { public class MachineFluidTank extends BlockContainer implements IMultiblock, IPersistentInfoProvider {
public MachineFluidTank(Material p_i45386_1_) { public MachineFluidTank(Material p_i45386_1_) {
super(p_i45386_1_); super(p_i45386_1_);
@ -342,4 +348,11 @@ public class MachineFluidTank extends BlockContainer implements IMultiblock {
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
player.addExhaustion(0.025F); player.addExhaustion(0.025F);
} }
@Override
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
FluidTank tank = new FluidTank(Fluids.NONE, 0, 0);
tank.readFromNBT(persistentTag, "tank");
list.add(EnumChatFormatting.YELLOW + "" + tank.getFill() + "/" + tank.getMaxFill() + "mB " + I18nUtil.resolveKey(tank.getTankType().getUnlocalizedName()));
}
} }

View File

@ -10,6 +10,7 @@ import com.hbm.items.machine.ItemBattery;
import com.hbm.items.tool.ItemModMinecart; import com.hbm.items.tool.ItemModMinecart;
import com.hbm.items.tool.ItemModMinecart.EnumCartBase; import com.hbm.items.tool.ItemModMinecart.EnumCartBase;
import com.hbm.items.tool.ItemModMinecart.EnumMinecart; import com.hbm.items.tool.ItemModMinecart.EnumMinecart;
import com.hbm.items.tool.ItemToolAbilityFueled;
import com.hbm.main.CraftingManager; import com.hbm.main.CraftingManager;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
@ -78,7 +79,7 @@ public class ToolRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mese_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_desh, 'D', ModItems.powder_dineutronium, 'A', ModItems.plate_paa, 'P', ModItems.chlorophyte_pickaxe, 'F', ModItems.shimmer_handle }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mese_pickaxe, 1), new Object[] { " SD", "APS", "FA ", 'S', ModItems.blades_desh, 'D', ModItems.powder_dineutronium, 'A', ModItems.plate_paa, 'P', ModItems.chlorophyte_pickaxe, 'F', ModItems.shimmer_handle });
//Chainsaws //Chainsaws
CraftingManager.addRecipeAuto(new ItemStack(ModItems.chainsaw, 1), new Object[] { " H", "BBP", " C", 'H', ModItems.hull_small_steel, 'B', ModItems.blades_steel, 'P', ModItems.piston_selenium, 'C', ModItems.canister_empty }); CraftingManager.addRecipeAuto(ItemToolAbilityFueled.getEmptyTool(ModItems.chainsaw), new Object[] { "CCH", "BBP", "CCE", 'H', ModItems.hull_small_steel, 'B', ModItems.blades_steel, 'P', ModItems.piston_selenium, 'C', ModBlocks.chain, 'E', ModItems.canister_empty });
//Misc //Misc
CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_stopper, 1), new Object[] { "I", "S", "S", 'I', EUPH.ingot(), 'S', KEY_STICK }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_stopper, 1), new Object[] { "I", "S", "S", 'I', EUPH.ingot(), 'S', KEY_STICK });

View File

@ -4,7 +4,9 @@ import java.util.List;
import com.hbm.blocks.BlockEnumMulti; import com.hbm.blocks.BlockEnumMulti;
import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IBlockMulti;
import com.hbm.blocks.IPersistentInfoProvider;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.util.EnumUtil; import com.hbm.util.EnumUtil;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -14,6 +16,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity; import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
public class ItemBlockBase extends ItemBlock { public class ItemBlockBase extends ItemBlock {
@ -48,10 +51,15 @@ public class ItemBlockBase extends ItemBlock {
} }
@Override @Override
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
if(field_150939_a instanceof ITooltipProvider) { if(field_150939_a instanceof ITooltipProvider) {
((ITooltipProvider) field_150939_a).addInformation(itemstack, player, list, bool); ((ITooltipProvider) field_150939_a).addInformation(stack, player, list, bool);
}
if(field_150939_a instanceof IPersistentInfoProvider && stack.hasTagCompound() && stack.getTagCompound().hasKey(IPersistentNBT.NBT_PERSISTENT_KEY)) {
NBTTagCompound data = stack.getTagCompound().getCompoundTag(IPersistentNBT.NBT_PERSISTENT_KEY);
((IPersistentInfoProvider) field_150939_a).addInformation(stack, data, player, list, bool);
} }
} }

View File

@ -10,6 +10,7 @@ import api.hbm.fluid.IFillableItem;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
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.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
@ -113,4 +114,11 @@ public class ItemToolAbilityFueled extends ItemToolAbility implements IFillableI
public int tryEmpty(FluidType type, int amount, ItemStack stack) { public int tryEmpty(FluidType type, int amount, ItemStack stack) {
return amount; return amount;
} }
public static ItemStack getEmptyTool(Item item) {
ItemToolAbilityFueled tool = (ItemToolAbilityFueled) item;
ItemStack stack = new ItemStack(item);
tool.setFill(stack, 0);
return stack;
}
} }

View File

@ -5,15 +5,19 @@ import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
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 com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.inventory.fluid.trait.FT_Corrosive;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase; import com.hbm.render.item.ItemRenderBase;
import com.hbm.render.util.DiamondPronter; import com.hbm.render.util.DiamondPronter;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.IItemRenderer;
@ -38,11 +42,8 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR
bindTexture(ResourceManager.tank_tex); bindTexture(ResourceManager.tank_tex);
ResourceManager.fluidtank.renderPart("Frame"); ResourceManager.fluidtank.renderPart("Frame");
String s = "NONE"; TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) tileEntity;
if(tileEntity instanceof TileEntityMachineFluidTank) bindTexture(new ResourceLocation(RefStrings.MODID, getTextureFromType(tank.tank.getTankType())));
s = ((TileEntityMachineFluidTank) tileEntity).tank.getTankType().getName();
bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/tank/tank_" + s + ".png"));
ResourceManager.fluidtank.renderPart("Tank"); ResourceManager.fluidtank.renderPart("Tank");
GL11.glShadeModel(GL11.GL_FLAT); GL11.glShadeModel(GL11.GL_FLAT);
@ -71,6 +72,15 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR
RenderHelper.enableStandardItemLighting(); RenderHelper.enableStandardItemLighting();
} }
public String getTextureFromType(FluidType type) {
String s = type.getName();
if(type.isAntimatter() || (type.hasTrait(FT_Corrosive.class) && type.getTrait(FT_Corrosive.class).isHighlyCorrosive()))
s = "DANGER";
return "textures/models/tank/tank_" + s + ".png";
}
@Override @Override
public Item getItemForRenderer() { public Item getItemForRenderer() {
return Item.getItemFromBlock(ModBlocks.machine_fluidtank); return Item.getItemFromBlock(ModBlocks.machine_fluidtank);
@ -85,12 +95,19 @@ public class RenderFluidTank extends TileEntitySpecialRenderer implements IItemR
GL11.glTranslated(0, -2, 0); GL11.glTranslated(0, -2, 0);
GL11.glScaled(3.5, 3.5, 3.5); GL11.glScaled(3.5, 3.5, 3.5);
} }
public void renderCommon() { public void renderCommonWithStack(ItemStack item) {
GL11.glRotated(90, 0, 1, 0); GL11.glRotated(90, 0, 1, 0);
GL11.glScaled(0.75, 0.75, 0.75); GL11.glScaled(0.75, 0.75, 0.75);
GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.tank_tex); ResourceManager.fluidtank.renderPart("Frame"); bindTexture(ResourceManager.tank_tex); ResourceManager.fluidtank.renderPart("Frame");
bindTexture(ResourceManager.tank_label_tex); ResourceManager.fluidtank.renderPart("Tank");
FluidTank tank = new FluidTank(Fluids.NONE, 0, 0);
if(item.hasTagCompound() && item.getTagCompound().hasKey(IPersistentNBT.NBT_PERSISTENT_KEY)) {
tank.readFromNBT(item.getTagCompound().getCompoundTag(IPersistentNBT.NBT_PERSISTENT_KEY), "tank");
}
bindTexture(new ResourceLocation(RefStrings.MODID, getTextureFromType(tank.getTankType())));
ResourceManager.fluidtank.renderPart("Tank");
GL11.glShadeModel(GL11.GL_FLAT); GL11.glShadeModel(GL11.GL_FLAT);
}}; }};
} }

View File

@ -10,6 +10,8 @@ import net.minecraft.world.World;
public interface IPersistentNBT { public interface IPersistentNBT {
public static final String NBT_PERSISTENT_KEY = "persistent";
public void writeNBT(NBTTagCompound nbt); public void writeNBT(NBTTagCompound nbt);
public void readNBT(NBTTagCompound nbt); public void readNBT(NBTTagCompound nbt);
@ -33,8 +35,12 @@ public interface IPersistentNBT {
} }
public static void restoreData(World world, int x, int y, int z, ItemStack stack) { public static void restoreData(World world, int x, int y, int z, ItemStack stack) {
if(!stack.hasTagCompound()) return; try {
IPersistentNBT tile = (IPersistentNBT) world.getTileEntity(x, y, z); if(!stack.hasTagCompound()) return;
tile.readNBT(stack.stackTagCompound); IPersistentNBT tile = (IPersistentNBT) world.getTileEntity(x, y, z);
tile.readNBT(stack.stackTagCompound);
} catch(Exception ex) {
ex.printStackTrace();
}
} }
} }

View File

@ -402,11 +402,6 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen
for(int z = -range; z <= range; z++) { for(int z = -range; z <= range; z++) {
if(worldObj.getBlock(x + xCoord, targetY, z + zCoord).getMaterial().isLiquid()) { if(worldObj.getBlock(x + xCoord, targetY, z + zCoord).getMaterial().isLiquid()) {
/*targetX = x + xCoord;
targetZ = z + zCoord;
worldObj.func_147480_a(x + xCoord, targetY, z + zCoord, false);
beam = true;*/
continue; continue;
} }

View File

@ -226,13 +226,13 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
public void writeNBT(NBTTagCompound nbt) { public void writeNBT(NBTTagCompound nbt) {
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
this.tank.writeToNBT(data, "tank"); this.tank.writeToNBT(data, "tank");
data.getShort("mode"); data.setShort("mode", mode);
nbt.setTag("persistent", data); nbt.setTag(NBT_PERSISTENT_KEY, data);
} }
@Override @Override
public void readNBT(NBTTagCompound nbt) { public void readNBT(NBTTagCompound nbt) {
NBTTagCompound data = nbt.getCompoundTag("persistent"); NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY);
this.tank.readFromNBT(data, "tank"); this.tank.readFromNBT(data, "tank");
this.mode = data.getShort("nbt"); this.mode = data.getShort("nbt");
} }

View File

@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.storage;
import com.hbm.blocks.machine.MachineBattery; import com.hbm.blocks.machine.MachineBattery;
import com.hbm.lib.Library; import com.hbm.lib.Library;
import com.hbm.tileentity.IPersistentNBT;
import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.TileEntityMachineBase;
import api.hbm.energy.IBatteryItem; import api.hbm.energy.IBatteryItem;
@ -21,7 +22,7 @@ import li.cil.oc.api.machine.Context;
import li.cil.oc.api.network.SimpleComponent; import li.cil.oc.api.network.SimpleComponent;
@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 TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, SimpleComponent { public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent {
public long[] log = new long[20]; public long[] log = new long[20];
public long power = 0; public long power = 0;
@ -326,4 +327,23 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
public Object[] getMaxEnergy(Context context, Arguments args) { public Object[] getMaxEnergy(Context context, Arguments args) {
return new Object[] {getMaxPower()}; return new Object[] {getMaxPower()};
} }
@Override
public void writeNBT(NBTTagCompound nbt) {
NBTTagCompound data = new NBTTagCompound();
data.setLong("power", power);
data.setShort("redLow", redLow);
data.setShort("redHigh", redHigh);
data.setInteger("priority", this.priority.ordinal());
nbt.setTag(NBT_PERSISTENT_KEY, data);
}
@Override
public void readNBT(NBTTagCompound nbt) {
NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY);
this.power = data.getLong("power");
this.redLow = data.getShort("redLow");
this.redHigh = data.getShort("redHigh");
this.priority = ConnectionPriority.values()[data.getInteger("priority")];
}
} }

View File

@ -214,12 +214,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
this.tank.writeToNBT(data, "tank"); this.tank.writeToNBT(data, "tank");
data.setShort("mode", mode); data.setShort("mode", mode);
nbt.setTag("persistent", data); nbt.setTag(NBT_PERSISTENT_KEY, data);
} }
@Override @Override
public void readNBT(NBTTagCompound nbt) { public void readNBT(NBTTagCompound nbt) {
NBTTagCompound data = nbt.getCompoundTag("persistent"); NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY);
this.tank.readFromNBT(data, "tank"); this.tank.readFromNBT(data, "tank");
this.mode = data.getShort("mode"); this.mode = data.getShort("mode");
} }

View File

@ -57,6 +57,7 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT {
ammoStacks.add(new ItemStack(ModItems.upgrade_overdrive_2)); ammoStacks.add(new ItemStack(ModItems.upgrade_overdrive_2));
ammoStacks.add(new ItemStack(ModItems.upgrade_overdrive_3)); ammoStacks.add(new ItemStack(ModItems.upgrade_overdrive_3));
ammoStacks.add(new ItemStack(ModItems.upgrade_5g)); ammoStacks.add(new ItemStack(ModItems.upgrade_5g));
ammoStacks.add(new ItemStack(ModItems.upgrade_screm));
return ammoStacks; return ammoStacks;
} }
@ -143,6 +144,7 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT {
this.blackLevel = 0; this.blackLevel = 0;
this.pinkLevel = 0; this.pinkLevel = 0;
this._5g = false; this._5g = false;
this.screm = false;
for(int i = 1; i < 10; i++) { for(int i = 1; i < 10; i++) {
if(slots[i] != null) { if(slots[i] != null) {
@ -164,6 +166,7 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT {
if(item == ModItems.upgrade_overdrive_2) blackLevel += 2; if(item == ModItems.upgrade_overdrive_2) blackLevel += 2;
if(item == ModItems.upgrade_overdrive_3) blackLevel += 3; if(item == ModItems.upgrade_overdrive_3) blackLevel += 3;
if(item == ModItems.upgrade_5g) _5g = true; if(item == ModItems.upgrade_5g) _5g = true;
if(item == ModItems.upgrade_screm) screm = true;
} }
} }
} }
@ -180,6 +183,7 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT {
int blackLevel; int blackLevel;
int pinkLevel; int pinkLevel;
boolean _5g; boolean _5g;
boolean screm;
int checkDelay; int checkDelay;
@ -206,7 +210,10 @@ public class TileEntityTurretMaxwell extends TileEntityTurretBaseNT {
vdat.setInteger("ent", this.target.getEntityId()); vdat.setInteger("ent", this.target.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, this.target.posX, this.target.posY + this.target.height * 0.5, this.target.posZ), new TargetPoint(this.target.dimension, this.target.posX, this.target.posY + this.target.height * 0.5, this.target.posZ, 150)); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(vdat, this.target.posX, this.target.posY + this.target.height * 0.5, this.target.posZ), new TargetPoint(this.target.dimension, this.target.posX, this.target.posY + this.target.height * 0.5, this.target.posZ, 150));
worldObj.playSoundEffect(this.target.posX, this.target.posY, this.target.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F); if(this.screm)
worldObj.playSoundEffect(this.target.posX, this.target.posY, this.target.posZ, "hbm:block.screm", 20.0F, 1.0F);
else
worldObj.playSoundEffect(this.target.posX, this.target.posY, this.target.posZ, "mob.zombie.woodbreak", 2.0F, 0.95F + worldObj.rand.nextFloat() * 0.2F);
} }
this.power -= demand; this.power -= demand;