diff --git a/src/main/java/api/hbm/energy/IEnergyConductor.java b/src/main/java/api/hbm/energy/IEnergyConductor.java index 154ccced3..6fc2e5206 100644 --- a/src/main/java/api/hbm/energy/IEnergyConductor.java +++ b/src/main/java/api/hbm/energy/IEnergyConductor.java @@ -1,6 +1,11 @@ package api.hbm.energy; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; /** * For compatible cables with no buffer, using the IPowertNet. You can make your own cables with IEnergyConnector as well, but they won't join their power network. @@ -17,14 +22,139 @@ public interface IEnergyConductor extends IEnergyConnector { * @return */ public default int getIdentity() { - - TileEntity te = (TileEntity) this; - + return getIdentityFromTile((TileEntity) this); + } + + public static int getIdentityFromTile(TileEntity te) { + return getIdentityFromPos(te.xCoord, te.yCoord, te.zCoord); + } + + public static int getIdentityFromPos(int x, int y, int z) { final int prime = 31; int result = 1; - result = prime * result + te.xCoord; - result = prime * result + te.yCoord; - result = prime * result + te.zCoord; + result = prime * result + x; + result = prime * result + y; + result = prime * result + z; return result; } + + /** + * Whether the link should be part of reeval when the network is changed. + * I.e. if this link should join any of the new networks (FALSE for switches that are turned off for example) + * @return + */ + public default boolean canReevaluate() { + return !((TileEntity) this).isInvalid(); + } + + /** + * When a link leaves the network, the net has to manually calculate the resulting networks. + * Each link has to decide what other links will join the same net. + * @param copy + */ + public default void reevaluate(HashMap copy, HashMap proxies) { + + for(int[] pos : getConnectionPoints()) { + int newX = pos[0]; + int newY = pos[1]; + int newZ = pos[2]; + int id = IEnergyConductor.getIdentityFromPos(newX, newY, newZ); + + IEnergyConductor neighbor = copy.get(id); + + if(neighbor == null) { + Integer newId = proxies.get(id); + + if(newId != null) { + neighbor = copy.get(newId); + } + } + + if(neighbor != null && this.canReevaluate() && neighbor.canReevaluate()) { + + if(neighbor.getPowerNet() != null) { + + //neighbor net and no self net + if(this.getPowerNet() == null) { + neighbor.getPowerNet().joinLink(this); + //neighbor net and self net + } else { + this.getPowerNet().joinNetworks(neighbor.getPowerNet()); + } + + //bidirectional re-eval, experimental and technically optional, only useful as a fallback + } /*else { + + //no neighbor net and no self net + if(this.getPowerNet() == null) { + this.setPowerNet(new PowerNet().joinLink(this)); + neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor)); + //no neighbor net and self net + } else { + neighbor.setPowerNet(this.getPowerNet().joinLink(neighbor)); + } + }*/ + + //extensive debugging has shown that bidirectional re-eval ic complete shit + } + } + } + + /** + * Creates a list of positions for the reeval process. In short - what positions should be considered as connected. + * Also used by pylons to quickly figure out what positions to connect to. + * DEFAULT: Connects to all six neighboring blocks. + * @return + */ + public default List getConnectionPoints() { + + List pos = new ArrayList(); + TileEntity tile = (TileEntity) this; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + int newX = tile.xCoord + dir.offsetX; + int newY = tile.yCoord + dir.offsetY; + int newZ = tile.zCoord + dir.offsetZ; + + pos.add(new int[] {newX, newY, newZ}); + } + + return pos; + } + + /** + * Since isLoaded is only currently used for weeding out unwanted subscribers, and cables shouldn't (although technically can) be + * subscribers, we just default to true because I don't feel like wasting time implementing things that we don't actually need. + * Perhaps this indicates a minor flaw in the new API, but I physically lack the ability to worry about it. + */ + @Override + public default boolean isLoaded() { + return true; + } + + //TODO: check if this standard implementation doesn't break anything (it shouldn't but right now it's a bit redundant) also: remove duplicate implementations + @Override + public default long transferPower(long power) { + + if(this.getPowerNet() == null) + return power; + + return this.getPowerNet().transferPower(power); + } + + /** + * Returns whether the conductor has mutliblock proxies which need to be taken into consideration for re-eval. + * @return + */ + public default boolean hasProxies() { + return false; + } + + /** + * Returns the identities (position-based) of proxies which resolve into the conductor's own identity. + * @return + */ + public default List getProxies() { + return new ArrayList(); + } } diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java index 87a0f0a88..663ed8c7b 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ b/src/main/java/api/hbm/energy/IEnergyConnector.java @@ -6,6 +6,7 @@ import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -14,7 +15,7 @@ import net.minecraftforge.common.util.ForgeDirection; * This is mean for TILE ENTITIES * @author hbm */ -public interface IEnergyConnector { +public interface IEnergyConnector extends ILoadedTile { /** * Returns the amount of power that remains in the source after transfer @@ -94,4 +95,10 @@ public interface IEnergyConnector { } public static final boolean particleDebug = false; + + public default Vec3 getDebugParticlePos() { + TileEntity te = (TileEntity) this; + Vec3 vec = Vec3.createVectorHelper(te.xCoord + 0.5, te.yCoord + 1, te.zCoord + 0.5); + return vec; + } } diff --git a/src/main/java/api/hbm/energy/ILoadedTile.java b/src/main/java/api/hbm/energy/ILoadedTile.java new file mode 100644 index 000000000..1f6d0f88b --- /dev/null +++ b/src/main/java/api/hbm/energy/ILoadedTile.java @@ -0,0 +1,6 @@ +package api.hbm.energy; + +public interface ILoadedTile { + + public boolean isLoaded(); +} diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 97af6d4b4..89efb819c 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -1,6 +1,7 @@ package api.hbm.energy; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import net.minecraft.tileentity.TileEntity; @@ -13,7 +14,8 @@ import net.minecraft.tileentity.TileEntity; public class PowerNet implements IPowerNet { private boolean valid = true; - private List links = new ArrayList(); + private HashMap links = new HashMap(); + private HashMap proxies = new HashMap(); private List subscribers = new ArrayList(); @Override @@ -23,8 +25,7 @@ public class PowerNet implements IPowerNet { return; //wtf?! for(IEnergyConductor conductor : network.getLinks()) { - conductor.setPowerNet(this); - this.getLinks().add(conductor); + joinLink(conductor); } network.getLinks().clear(); @@ -42,14 +43,29 @@ public class PowerNet implements IPowerNet { conductor.getPowerNet().leaveLink(conductor); conductor.setPowerNet(this); - this.getLinks().add(conductor); + int identity = conductor.getIdentity(); + this.links.put(identity, conductor); + + if(conductor.hasProxies()) { + for(Integer i : conductor.getProxies()) { + this.proxies.put(i, identity); + } + } + return this; } @Override public void leaveLink(IEnergyConductor conductor) { conductor.setPowerNet(null); - this.getLinks().remove(conductor); + int identity = conductor.getIdentity(); + this.links.remove(identity); + + if(conductor.hasProxies()) { + for(Integer i : conductor.getProxies()) { + this.proxies.remove(i); + } + } } @Override @@ -69,7 +85,14 @@ public class PowerNet implements IPowerNet { @Override public List getLinks() { - return this.links; + List linkList = new ArrayList(); + linkList.addAll(this.links.values()); + return linkList; + } + + public HashMap getProxies() { + HashMap proxyCopy = new HashMap(proxies); + return proxyCopy; } @Override @@ -80,10 +103,9 @@ public class PowerNet implements IPowerNet { @Override public void destroy() { this.valid = false; - this.subscribers.clear(); - for(IEnergyConductor link : this.links) { + for(IEnergyConductor link : this.links.values()) { link.setPowerNet(null); } @@ -95,12 +117,18 @@ public class PowerNet implements IPowerNet { return this.valid; } + public long lastCleanup = System.currentTimeMillis(); + @Override public long transferPower(long power) { - this.subscribers.removeIf(x -> - x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() - ); + if(lastCleanup + 45 < System.currentTimeMillis()) { + this.subscribers.removeIf(x -> + x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() || !x.isLoaded() + ); + + lastCleanup = System.currentTimeMillis(); + } if(this.subscribers.isEmpty()) return power; @@ -135,5 +163,25 @@ public class PowerNet implements IPowerNet { } @Override - public void reevaluate() { } + public void reevaluate() { + + //this.destroy();// + + HashMap copy = new HashMap(links); + HashMap proxyCopy = new HashMap(proxies); + + for(IEnergyConductor link : copy.values()) { + this.leaveLink(link); + } + + for(IEnergyConductor link : copy.values()) { + + link.setPowerNet(null); + link.reevaluate(copy, proxyCopy); + + if(link.getPowerNet() == null) { + link.setPowerNet(new PowerNet().joinLink(link)); + } + } + } } diff --git a/src/main/java/api/hbm/fluid/IFluidConductor.java b/src/main/java/api/hbm/fluid/IFluidConductor.java index 152e9524e..95ae30766 100644 --- a/src/main/java/api/hbm/fluid/IFluidConductor.java +++ b/src/main/java/api/hbm/fluid/IFluidConductor.java @@ -2,9 +2,18 @@ package api.hbm.fluid; import com.hbm.inventory.fluid.FluidType; -public interface IFluidConductor { +public interface IFluidConductor extends IFluidConnector { public IPipeNet getPipeNet(FluidType type); - public void setPipeNet(FluidType type, FluidType network); + public void setPipeNet(FluidType type, IPipeNet network); + + @Override + public default long transferFluid(FluidType type, long amount) { + + if(this.getPipeNet(type) == null) + return amount; + + return this.getPipeNet(type).transferFluid(amount); + } } diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index 3430cc739..f8f1034d8 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -1,7 +1,13 @@ package api.hbm.fluid; import com.hbm.inventory.fluid.FluidType; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public interface IFluidConnector { @@ -11,7 +17,7 @@ public interface IFluidConnector { * @param power * @return */ - public int transferFluid(FluidType type, int fluid); + public long transferFluid(FluidType type, long fluid); /** * Whether the given side can be connected to @@ -27,5 +33,52 @@ public interface IFluidConnector { * @param type * @return */ - public int getDemand(FluidType type); + public long getDemand(FluidType type); + + /** + * Basic implementation of subscribing to a nearby power grid + * @param world + * @param x + * @param y + * @param z + */ + public default void trySubscribe(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { + + TileEntity te = world.getTileEntity(x, y, z); + boolean red = false; + + if(te instanceof IFluidConductor) { + IFluidConductor con = (IFluidConductor) te; + + if(!con.canConnect(type, dir)) + return; + + if(con.getPipeNet(type) != null && !con.getPipeNet(type).isSubscribed(this)) + con.getPipeNet(type).subscribe(this); + + if(con.getPipeNet(type) != null) + red = true; + } + + if(particleDebug) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", red ? "reddust" : "bluedust"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + world.rand.nextDouble(), y + world.rand.nextDouble(), z + world.rand.nextDouble()), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 25)); + } + } + + public default void tryUnsubscribe(FluidType type, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof IFluidConductor) { + IFluidConductor con = (IFluidConductor) te; + + if(con.getPipeNet(type) != null && con.getPipeNet(type).isSubscribed(this)) + con.getPipeNet(type).unsubscribe(this); + } + } + + public static final boolean particleDebug = true; } diff --git a/src/main/java/api/hbm/fluid/IFluidConnectorBlock.java b/src/main/java/api/hbm/fluid/IFluidConnectorBlock.java new file mode 100644 index 000000000..65ff758ba --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidConnectorBlock.java @@ -0,0 +1,11 @@ +package api.hbm.fluid; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidConnectorBlock { + + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir); +} diff --git a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java new file mode 100644 index 000000000..2d198d1f4 --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java @@ -0,0 +1,49 @@ +package api.hbm.fluid; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; + +/** + * Uses default implementation to make the underlying interfaces easier to use for the most common fluid users. + * Only handles a single input tank of the same type. + * Uses standard FluidTanks which use int32. + * Don't use this as part of the API! + * @author hbm + * + */ +public interface IFluidStandardReceiver extends IFluidUser { + + @Override + public default long transferFluid(FluidType type, long amount) { + + for(FluidTank tank : getReceivingTanks()) { + if(tank.getTankType() == type) { + tank.setFill(tank.getFill() + (int) amount); + + if(tank.getFill() > tank.getMaxFill()) { + long overshoot = tank.getFill() - tank.getMaxFill(); + tank.setFill(tank.getMaxFill()); + return overshoot; + } + + return 0; + } + } + + return amount; + } + + public FluidTank[] getReceivingTanks(); + + @Override + public default long getDemand(FluidType type) { + + for(FluidTank tank : getReceivingTanks()) { + if(tank.getTankType() == type) { + return tank.getMaxFill() - tank.getFill(); + } + } + + return 0; + } +} diff --git a/src/main/java/api/hbm/fluid/IFluidStandardSender.java b/src/main/java/api/hbm/fluid/IFluidStandardSender.java new file mode 100644 index 000000000..6f6ef8238 --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidStandardSender.java @@ -0,0 +1,50 @@ +package api.hbm.fluid; + +import com.hbm.inventory.FluidTank; +import com.hbm.inventory.fluid.FluidType; + +/** + * Uses default implementation to make the underlying interfaces easier to use for the most common fluid users. + * Only handles a single output tank of the same type. + * Uses standard FluidTanks which use int32. + * Don't use this as part of the API! + * @author hbm + * + */ +public interface IFluidStandardSender extends IFluidUser { + + public FluidTank[] getSendingTanks(); + + @Override + public default long getTotalFluidForSend(FluidType type) { + + for(FluidTank tank : getSendingTanks()) { + if(tank.getTankType() == type) { + return tank.getFill(); + } + } + + return 0; + } + + @Override + public default void removeFluidForTransfer(FluidType type, long amount) { + + for(FluidTank tank : getSendingTanks()) { + if(tank.getTankType() == type) { + tank.setFill(tank.getFill() - (int) amount); + return; + } + } + } + + @Override + public default long transferFluid(FluidType type, long fluid) { + return fluid; + } + + @Override + public default long getDemand(FluidType type) { + return 0; + } +} diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java new file mode 100644 index 000000000..d36dd105b --- /dev/null +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -0,0 +1,65 @@ +package api.hbm.fluid; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidUser extends IFluidConnector { + + public default void sendFluid(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { + + TileEntity te = world.getTileEntity(x, y, z); + boolean wasSubscribed = false; + boolean red = false; + + if(te instanceof IFluidConductor) { + IFluidConductor con = (IFluidConductor) te; + + if(con.getPipeNet(type) != null && con.getPipeNet(type).isSubscribed(this)) { + con.getPipeNet(type).unsubscribe(this); + wasSubscribed = true; + } + } + + if(te instanceof IFluidConnector) { + IFluidConnector con = (IFluidConnector) te; + + if(con.canConnect(type, dir.getOpposite())) { + long toSend = this.getTotalFluidForSend(type); + long transfer = toSend - con.transferFluid(type, toSend); + this.removeFluidForTransfer(type, transfer); + red = true; + } + } + + if(wasSubscribed && te instanceof IFluidConductor) { + IFluidConductor con = (IFluidConductor) te; + + if(con.getPipeNet(type) != null && !con.getPipeNet(type).isSubscribed(this)) { + con.getPipeNet(type).subscribe(this); + } + } + + if(particleDebug) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", red ? "reddust" : "greendust"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + world.rand.nextDouble(), y + world.rand.nextDouble(), z + world.rand.nextDouble()), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 25)); + } + } + + public default long getTotalFluidForSend(FluidType type) { return 0; } + public default void removeFluidForTransfer(FluidType type, long amount) { } + + public default void updateStandardPipes(FluidType type, World world, int x, int y, int z) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + this.trySubscribe(type, world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir); + } +} diff --git a/src/main/java/api/hbm/fluid/IPipeNet.java b/src/main/java/api/hbm/fluid/IPipeNet.java index c0f20eae9..e218df51f 100644 --- a/src/main/java/api/hbm/fluid/IPipeNet.java +++ b/src/main/java/api/hbm/fluid/IPipeNet.java @@ -1,8 +1,28 @@ package api.hbm.fluid; -import api.hbm.energy.IPowerNet; +import java.util.HashSet; +import java.util.List; + +import com.hbm.inventory.fluid.FluidType; public interface IPipeNet { - public void joinNetworks(IPowerNet network); + public void joinNetworks(IPipeNet network); + + public List getLinks(); + public HashSet getSubscribers(); + + public IPipeNet joinLink(IFluidConductor conductor); + public void leaveLink(IFluidConductor conductor); + + public void subscribe(IFluidConnector connector); + public void unsubscribe(IFluidConnector connector); + public boolean isSubscribed(IFluidConnector connector); + + public void destroy(); + + public boolean isValid(); + + public long transferFluid(long fill); + public FluidType getType(); } diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java new file mode 100644 index 000000000..2a2c6bf78 --- /dev/null +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -0,0 +1,142 @@ +package api.hbm.fluid; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraft.tileentity.TileEntity; + +public class PipeNet implements IPipeNet { + + private boolean valid = true; + private FluidType type; + private List links = new ArrayList(); + private HashSet subscribers = new HashSet(); + + public PipeNet(FluidType type) { + this.type = type; + } + + @Override + public void joinNetworks(IPipeNet network) { + + if(network == this) + return; + + for(IFluidConductor conductor : network.getLinks()) { + conductor.setPipeNet(type, this); + this.getLinks().add(conductor); + } + network.getLinks().clear(); + + for(IFluidConnector connector : network.getSubscribers()) { + this.subscribe(connector); + } + + network.destroy(); + } + + @Override + public List getLinks() { + return links; + } + + @Override + public HashSet getSubscribers() { + return subscribers; + } + + @Override + public IPipeNet joinLink(IFluidConductor conductor) { + + if(conductor.getPipeNet(type) != null) + conductor.getPipeNet(type).leaveLink(conductor); + + conductor.setPipeNet(type, this); + this.links.add(conductor); + return this; + } + + @Override + public void leaveLink(IFluidConductor conductor) { + conductor.setPipeNet(type, null); + this.links.remove(conductor); + } + + @Override + public void subscribe(IFluidConnector connector) { + this.subscribers.add(connector); + } + + @Override + public void unsubscribe(IFluidConnector connector) { + this.subscribers.remove(connector); + } + + @Override + public boolean isSubscribed(IFluidConnector connector) { + return this.subscribers.contains(connector); + } + + @Override + public long transferFluid(long fill) { + + this.subscribers.removeIf(x -> + x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() + ); + + if(this.subscribers.isEmpty()) + return fill; + + List subList = new ArrayList(subscribers); + + List weight = new ArrayList(); + long totalReq = 0; + + for(IFluidConnector con : subList) { + long req = con.getDemand(type); + weight.add(req); + totalReq += req; + } + + if(totalReq == 0) + return fill; + + long totalGiven = 0; + + for(int i = 0; i < subList.size(); i++) { + IFluidConnector con = subList.get(i); + long req = weight.get(i); + double fraction = (double)req / (double)totalReq; + + long given = (long) Math.floor(fraction * fill); + + totalGiven += (given - con.transferFluid(type, given)); + } + + return fill - totalGiven; + } + + @Override + public FluidType getType() { + return type; + } + + @Override + public void destroy() { + this.valid = false; + this.subscribers.clear(); + + for(IFluidConductor con : this.links) + con.setPipeNet(type, null); + + this.links.clear(); + } + + @Override + public boolean isValid() { + return this.valid; + } +} diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java new file mode 100644 index 000000000..5ece200f7 --- /dev/null +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -0,0 +1,64 @@ +package com.hbm.blocks; + +import java.util.List; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class BlockEnumMulti extends BlockBase { + + public Class theEnum; + public boolean multiName; + private boolean multiTexture; + + public BlockEnumMulti(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat); + this.theEnum = theEnum; + this.multiName = multiName; + this.multiTexture = multiTexture; + } + + @Override + public int damageDropped(int meta) { + return meta; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < theEnum.getEnumConstants().length; ++i) { + list.add(new ItemStack(item, 1, i)); + } + } + + private IIcon[] icons; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + + if(multiTexture) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase()); + } + } else { + this.blockIcon = reg.registerIcon(this.getTextureName()); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return this.icons[meta % this.icons.length]; + } +} diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java new file mode 100644 index 000000000..945f2493d --- /dev/null +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -0,0 +1,9 @@ +package com.hbm.blocks; + +public class BlockEnums { + + public static enum EnumStoneType { + SULFUR, + ASBESTOS + } +} diff --git a/src/main/java/com/hbm/blocks/ILookOverlay.java b/src/main/java/com/hbm/blocks/ILookOverlay.java index 47ff64eea..d100ed767 100644 --- a/src/main/java/com/hbm/blocks/ILookOverlay.java +++ b/src/main/java/com/hbm/blocks/ILookOverlay.java @@ -49,6 +49,7 @@ public interface ILookOverlay { } GL11.glDisable(GL11.GL_BLEND); + GL11.glColor3f(1F, 1F, 1F); GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 1e1a89399..e54849cab 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2,6 +2,7 @@ package com.hbm.blocks; import com.hbm.blocks.generic.*; import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; +import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; import com.hbm.blocks.bomb.*; import com.hbm.blocks.fluid.*; import com.hbm.blocks.gas.*; @@ -21,9 +22,12 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.DoorDecl; import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -50,6 +54,7 @@ public class ModBlocks { public static Block test_core; public static Block test_charge; public static Block test_conductor; + public static Block test_pipe; public static Block test_ct; public static Block test_rail; public static Block test_bb_bork; @@ -79,6 +84,8 @@ public class ModBlocks { public static Block ore_cinnebar; public static Block ore_coltan; public static Block ore_alexandrite; + + public static Block ore_random; public static Block ore_bedrock_coltan; @@ -132,6 +139,9 @@ public class ModBlocks { public static Block ore_depth_nether_neodymium; public static Block stone_porous; + public static Block stone_resource; + public static Block stalagmite; + public static Block stalactite; public static Block depth_brick; public static Block depth_tiles; @@ -453,6 +463,7 @@ public class ModBlocks { public static Block dirt_oily; public static Block sand_dirty; public static Block sand_dirty_red; + public static Block stone_cracked; public static Block burning_earth; public static Block tektite; public static Block ore_tektite_osmiridium; @@ -461,6 +472,8 @@ public class ModBlocks { public static Block fallout; public static Block foam_layer; public static Block sand_boron_layer; + public static Block leaves_layer; + public static Block sellafield_slaked; public static Block sellafield_0; @@ -475,6 +488,9 @@ public class ModBlocks { public static Block geysir_vapor; public static Block geysir_nether; + public static Block observer_off; + public static Block observer_on; + public static Block flame_war; public static Block float_bomb; public static Block therm_endo; @@ -710,6 +726,7 @@ public class ModBlocks { public static Block red_wire_coated; public static Block red_cable; + public static Block red_cable_classic; public static Block red_connector; public static Block red_pylon; public static Block red_pylon_large; @@ -1176,6 +1193,9 @@ public class ModBlocks { public static Fluid volcanic_lava_fluid; public static final Material fluidvolcanic = (new MaterialLiquid(MapColor.redColor)); + public static Block sulfuric_acid_block; + public static Fluid sulfuric_acid_fluid; + public static Block volcano_core; public static Block dummy_block_flare; @@ -1252,6 +1272,7 @@ public class ModBlocks { test_core = new TestCore(Material.iron).setBlockName("test_core").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_core"); test_charge = new TestCharge(Material.iron).setBlockName("test_charge").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F); test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cable_neo"); + test_pipe = new TestPipe(Material.iron).setBlockName("test_pipe").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); test_ct = new TestCT(Material.iron).setBlockName("test_ct").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_ct"); test_rail = new TestRail(Material.iron).setBlockName("test_rail").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_rail"); test_bb_bork = new TestBB(Material.iron).setBlockName("test_bb_bork").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_bork"); @@ -1327,6 +1348,8 @@ public class ModBlocks { cluster_depth_titanium = new BlockDepthOre().setBlockName("cluster_depth_titanium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_titanium"); cluster_depth_tungsten = new BlockDepthOre().setBlockName("cluster_depth_tungsten").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":cluster_depth_tungsten"); ore_alexandrite = new BlockDepthOre().setBlockName("ore_alexandrite").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_alexandrite"); + + ore_random = new BlockMotherOfAllOres().setBlockName("ore_random").setCreativeTab(MainRegistry.blockTab); depth_brick = new BlockDepth().setBlockName("depth_brick").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_brick"); depth_tiles = new BlockDepth().setBlockName("depth_tiles").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":depth_tiles"); @@ -1338,6 +1361,9 @@ public class ModBlocks { ore_depth_nether_neodymium = new BlockDepthOre().setBlockName("ore_depth_nether_neodymium").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ore_depth_nether_neodymium"); stone_porous = new BlockPorous().setBlockName("stone_porous").setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":stone_porous"); + stone_resource = new BlockResourceStone().setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); + stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); + stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); basalt_sulfur = new BlockOre(Material.rock).setBlockName("basalt_sulfur").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_sulfur"); @@ -1475,14 +1501,14 @@ public class ModBlocks { block_cap_sunset = new BlockCap(Material.iron, RefStrings.MODID + ":block_cap_sunset_top").setStepSound(Block.soundTypeMetal).setBlockName("block_cap_sunset").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_cap_sunset"); block_cap_star = new BlockCap(Material.iron, RefStrings.MODID + ":block_cap_star_top").setStepSound(Block.soundTypeMetal).setBlockName("block_cap_star").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_cap_star"); - deco_titanium = new BlockOre(Material.iron).setBlockName("deco_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_titanium"); - deco_red_copper = new BlockDecoCT(Material.iron).setBlockName("deco_red_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_red_copper"); - deco_tungsten = new BlockDecoCT(Material.iron).setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); - deco_aluminium = new BlockDecoCT(Material.iron).setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); - deco_steel = new BlockDecoCT(Material.iron).setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); - deco_lead = new BlockDecoCT(Material.iron).setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); - deco_beryllium = new BlockDecoCT(Material.iron).setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); - deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); + deco_titanium = new BlockOre(Material.iron).noFortune().setBlockName("deco_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_titanium"); + deco_red_copper = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_red_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_red_copper"); + deco_tungsten = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); + deco_aluminium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); + deco_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); + deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); + deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); + deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); @@ -1546,11 +1572,11 @@ public class ModBlocks { siege_emergency = new BlockBase(Material.iron).setBlockName("siege_emergency").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(20000.0F).setBlockTextureName(RefStrings.MODID + ":siege_emergency"); siege_hole = new SiegeHole(Material.iron).setBlockName("siege_hole").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":siege_hole"); - block_meteor = new BlockOre(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); - block_meteor_cobble = new BlockOre(Material.rock).setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); - block_meteor_broken = new BlockOre(Material.rock).setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); - block_meteor_molten = new BlockOre(Material.rock, true).setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); - block_meteor_treasure = new BlockOre(Material.rock).setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); + block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); + block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); + block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); + block_meteor_molten = new BlockOre(Material.rock, true).noFortune().setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); + block_meteor_treasure = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); meteor_polished = new BlockGeneric(Material.rock).setBlockName("meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_polished"); meteor_brick = new BlockGeneric(Material.rock).setBlockName("meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick"); meteor_brick_mossy = new BlockGeneric(Material.rock).setBlockName("meteor_brick_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_mossy"); @@ -1642,8 +1668,8 @@ public class ModBlocks { waste_earth = new WasteEarth(Material.ground, true).setBlockName("waste_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_earth"); waste_mycelium = new WasteEarth(Material.ground, true).setBlockName("waste_mycelium").setStepSound(Block.soundTypeGrass).setLightLevel(1F).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_mycelium_side"); - waste_trinitite = new BlockOre(Material.sand).setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); - waste_trinitite_red = new BlockOre(Material.sand).setBlockName("waste_trinitite_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite_red"); + waste_trinitite = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); + waste_trinitite_red = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite_red"); waste_log = new WasteLog(Material.wood).setBlockName("waste_log").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(2.5F); waste_leaves = new WasteLeaves(Material.leaves).setBlockName("waste_leaves").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); waste_planks = new BlockOre(Material.wood).setBlockName("waste_planks").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_planks"); @@ -1654,15 +1680,17 @@ public class ModBlocks { fallout = new BlockFallout(Material.snow).setBlockName("fallout").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":ash"); foam_layer = new BlockLayering(Material.snow).setBlockName("foam_layer").setStepSound(Block.soundTypeSnow).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":foam"); sand_boron_layer = new BlockLayering(Material.sand).setBlockName("sand_boron_layer").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":sand_boron"); + leaves_layer = new BlockLayering(Material.leaves).setBlockName("leaves_layer").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setLightOpacity(0).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); burning_earth = new WasteEarth(Material.ground, true).setBlockName("burning_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":burning_earth"); tektite = new BlockGeneric(Material.sand).setBlockName("tektite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":tektite"); ore_tektite_osmiridium = new BlockGeneric(Material.sand).setBlockName("ore_tektite_osmiridium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":ore_tektite_osmiridium"); impact_dirt = new BlockDirt(Material.ground, true).setBlockName("impact_dirt").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":waste_earth_bottom"); - dirt_dead = new BlockGeneric(Material.ground).setBlockName("dirt_dead").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_dead"); - dirt_oily = new BlockGeneric(Material.ground).setBlockName("dirt_oily").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_oily"); + dirt_dead = new BlockFalling(Material.ground).setBlockName("dirt_dead").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_dead"); + dirt_oily = new BlockFalling(Material.ground).setBlockName("dirt_oily").setStepSound(Block.soundTypeGravel).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":dirt_oily"); sand_dirty = new BlockFalling(Material.sand).setBlockName("sand_dirty").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty"); sand_dirty_red = new BlockFalling(Material.sand).setBlockName("sand_dirty_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_dirty_red"); + stone_cracked = new BlockFalling(Material.rock).setBlockName("stone_cracked").setStepSound(Block.soundTypeStone).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":stone_cracked"); sellafield_slaked = new BlockGeneric(Material.rock).setBlockName("sellafield_slaked").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_slaked"); sellafield_0 = new BlockHazard(Material.rock).setBlockName("sellafield_0").setStepSound(Block.soundTypeStone).setHardness(5.0F).setBlockTextureName(RefStrings.MODID + ":sellafield_0"); @@ -1677,6 +1705,9 @@ public class ModBlocks { geysir_vapor = new BlockGeysir(Material.rock).setBlockName("geysir_vapor").setStepSound(Block.soundTypeStone).setHardness(5.0F); geysir_nether = new BlockGeysir(Material.rock).setBlockName("geysir_nether").setLightLevel(1.0F).setStepSound(Block.soundTypeStone).setHardness(2.0F); + observer_off = new BlockObserver(Material.iron, false).setBlockName("observer_off").setStepSound(Block.soundTypeStone).setHardness(2.0F); + observer_on = new BlockObserver(Material.iron, true).setBlockName("observer_on").setStepSound(Block.soundTypeStone).setHardness(2.0F); + nuke_gadget = new NukeGadget(Material.iron).setBlockName("nuke_gadget").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":theGadget"); nuke_boy = new NukeBoy(Material.iron).setBlockName("nuke_boy").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":lilBoy"); nuke_man = new NukeMan(Material.iron).setBlockName("nuke_man").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":fatMan"); @@ -1827,6 +1858,7 @@ public class ModBlocks { red_wire_coated = new WireCoated(Material.iron).setBlockName("red_wire_coated").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_wire_coated"); red_cable = new BlockCable(Material.iron).setBlockName("red_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_neo"); + red_cable_classic = new BlockCable(Material.iron).setBlockName("red_cable_classic").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_cable_classic"); rf_cable = new BlockRFCable(Material.iron).setBlockName("rf_cable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rf_cable_icon"); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); @@ -2198,6 +2230,10 @@ public class ModBlocks { FluidRegistry.registerFluid(volcanic_lava_fluid); volcanic_lava_block = new VolcanicBlock(volcanic_lava_fluid, Material.lava).setBlockName("volcanic_lava_block").setResistance(500F); + sulfuric_acid_fluid = new GenericFluid("sulfuric_acid_fluid").setDensity(1840).setViscosity(1000).setTemperature(273); + FluidRegistry.registerFluid(sulfuric_acid_fluid); + sulfuric_acid_block = new GenericFluidBlock(sulfuric_acid_fluid, Material.water, "sulfuric_acid_still", "sulfuric_acid_flowing").setDamage(ModDamageSource.acid, 5F).setBlockName("sulfuric_acid_block").setResistance(500F); + dummy_block_flare = new DummyBlockFlare(Material.iron, false).setBlockName("dummy_block_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); dummy_port_flare = new DummyBlockFlare(Material.iron, true).setBlockName("dummy_port_flare").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); dummy_block_drill = new DummyBlockDrill(Material.iron, false).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); @@ -2260,6 +2296,7 @@ public class ModBlocks { GameRegistry.registerBlock(test_core, test_core.getUnlocalizedName()); GameRegistry.registerBlock(test_charge, test_charge.getUnlocalizedName()); GameRegistry.registerBlock(test_conductor, test_conductor.getUnlocalizedName()); + GameRegistry.registerBlock(test_pipe, test_pipe.getUnlocalizedName()); GameRegistry.registerBlock(test_ct, test_ct.getUnlocalizedName()); GameRegistry.registerBlock(test_rail, test_rail.getUnlocalizedName()); GameRegistry.registerBlock(test_bb_bork, test_bb_bork.getUnlocalizedName()); @@ -2368,12 +2405,20 @@ public class ModBlocks { //End Ores GameRegistry.registerBlock(ore_tikite, ore_tikite.getUnlocalizedName()); + //It's a meme you dip + GameRegistry.registerBlock(ore_random, ItemRandomOreBlock.class, ore_random.getUnlocalizedName()); + //Crystals GameRegistry.registerBlock(crystal_power, crystal_power.getUnlocalizedName()); GameRegistry.registerBlock(crystal_energy, crystal_energy.getUnlocalizedName()); GameRegistry.registerBlock(crystal_robust, crystal_robust.getUnlocalizedName()); GameRegistry.registerBlock(crystal_trixite, crystal_trixite.getUnlocalizedName()); + //Resource-bearing Stones + GameRegistry.registerBlock(stone_resource, ItemBlockBase.class, stone_resource.getUnlocalizedName()); + GameRegistry.registerBlock(stalagmite, ItemBlockBase.class, stalagmite.getUnlocalizedName()); + GameRegistry.registerBlock(stalactite, ItemBlockBase.class, stalactite.getUnlocalizedName()); + //Stone Variants GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); GameRegistry.registerBlock(stone_gneiss, stone_gneiss.getUnlocalizedName()); @@ -2664,9 +2709,11 @@ public class ModBlocks { GameRegistry.registerBlock(dirt_oily, dirt_oily.getUnlocalizedName()); GameRegistry.registerBlock(sand_dirty, sand_dirty.getUnlocalizedName()); GameRegistry.registerBlock(sand_dirty_red, sand_dirty_red.getUnlocalizedName()); + GameRegistry.registerBlock(stone_cracked, stone_cracked.getUnlocalizedName()); GameRegistry.registerBlock(fallout, fallout.getUnlocalizedName()); GameRegistry.registerBlock(foam_layer, foam_layer.getUnlocalizedName()); GameRegistry.registerBlock(sand_boron_layer, sand_boron_layer.getUnlocalizedName()); + GameRegistry.registerBlock(leaves_layer, leaves_layer.getUnlocalizedName()); GameRegistry.registerBlock(burning_earth, burning_earth.getUnlocalizedName()); GameRegistry.registerBlock(tektite, tektite.getUnlocalizedName()); GameRegistry.registerBlock(ore_tektite_osmiridium, ore_tektite_osmiridium.getUnlocalizedName()); @@ -2826,6 +2873,9 @@ public class ModBlocks { GameRegistry.registerBlock(bomber, bomber.getUnlocalizedName()); //Machines + //GameRegistry.registerBlock(observer_off, observer_off.getUnlocalizedName()); + //GameRegistry.registerBlock(observer_on, observer_on.getUnlocalizedName()); + GameRegistry.registerBlock(anvil_iron, ItemBlockBase.class, anvil_iron.getUnlocalizedName()); GameRegistry.registerBlock(anvil_lead, ItemBlockBase.class, anvil_lead.getUnlocalizedName()); GameRegistry.registerBlock(anvil_steel, ItemBlockBase.class, anvil_steel.getUnlocalizedName()); @@ -2930,6 +2980,7 @@ public class ModBlocks { GameRegistry.registerBlock(pribris_digamma, pribris_digamma.getUnlocalizedName()); GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName()); + GameRegistry.registerBlock(red_cable_classic, red_cable_classic.getUnlocalizedName()); GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName()); GameRegistry.registerBlock(red_connector, ItemBlockBase.class, red_connector.getUnlocalizedName()); GameRegistry.registerBlock(red_pylon, ItemBlockBase.class, red_pylon.getUnlocalizedName()); @@ -3178,6 +3229,7 @@ public class ModBlocks { GameRegistry.registerBlock(schrabidic_block, schrabidic_block.getUnlocalizedName()); GameRegistry.registerBlock(corium_block, corium_block.getUnlocalizedName()); GameRegistry.registerBlock(volcanic_lava_block, volcanic_lava_block.getUnlocalizedName()); + GameRegistry.registerBlock(sulfuric_acid_block, sulfuric_acid_block.getUnlocalizedName()); //Multiblock Dummy Blocks GameRegistry.registerBlock(dummy_block_flare, dummy_block_flare.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/fluid/AcidFluid.java b/src/main/java/com/hbm/blocks/fluid/AcidFluid.java index 6b8d576c4..7914731f0 100644 --- a/src/main/java/com/hbm/blocks/fluid/AcidFluid.java +++ b/src/main/java/com/hbm/blocks/fluid/AcidFluid.java @@ -11,21 +11,25 @@ public class AcidFluid extends Fluid { super("acid_fluid"); } - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon() { - return getStillIcon(); - } + public AcidFluid(String name) { + super(name); + } @Override @SideOnly(Side.CLIENT) - public IIcon getStillIcon() { - return AcidBlock.stillIcon; - } + public IIcon getIcon() { + return getStillIcon(); + } @Override @SideOnly(Side.CLIENT) - public IIcon getFlowingIcon() { - return AcidBlock.flowingIcon; - } + public IIcon getStillIcon() { + return AcidBlock.stillIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getFlowingIcon() { + return AcidBlock.flowingIcon; + } } diff --git a/src/main/java/com/hbm/blocks/fluid/GenericFluid.java b/src/main/java/com/hbm/blocks/fluid/GenericFluid.java new file mode 100644 index 000000000..6d7d0c29c --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/GenericFluid.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.fluid; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.IIcon; +import net.minecraftforge.fluids.Fluid; + +public class GenericFluid extends Fluid { + + public GenericFluid(String name) { + super(name); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon() { + return getStillIcon(); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getStillIcon() { + return this.block.getIcon(0, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getFlowingIcon() { + return this.block.getIcon(1, 0); + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java b/src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java new file mode 100644 index 000000000..d4d61c72b --- /dev/null +++ b/src/main/java/com/hbm/blocks/fluid/GenericFluidBlock.java @@ -0,0 +1,93 @@ +package com.hbm.blocks.fluid; + +import java.util.Random; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.util.DamageSource; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.fluids.BlockFluidClassic; +import net.minecraftforge.fluids.Fluid; + +public class GenericFluidBlock extends BlockFluidClassic { + + @SideOnly(Side.CLIENT) + public static IIcon stillIcon; + @SideOnly(Side.CLIENT) + public static IIcon flowingIcon; + public Random rand = new Random(); + + private String stillName; + private String flowingName; + + public float damage; + public DamageSource damageSource; + + public GenericFluidBlock(Fluid fluid, Material material, String still, String flowing) { + super(fluid, material); + setCreativeTab(null); + stillName = still; + flowingName = flowing; + displacements.put(this, false); + } + + public GenericFluidBlock setDamage(DamageSource source, float amount) { + damageSource = source; + damage = amount; + return this; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return (side == 0 || side == 1) ? stillIcon : flowingIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + stillIcon = register.registerIcon(RefStrings.MODID + ":" + stillName); + flowingIcon = register.registerIcon(RefStrings.MODID + ":" + flowingName); + } + + /** Only temporary, will be moved into a subclass */ + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + + if(damageSource != null) { + + if(entity instanceof EntityItem) { + + entity.motionX = 0; + entity.motionY = 0; + entity.motionZ = 0; + + if(entity.ticksExisted % 20 == 0 && !world.isRemote) { + entity.attackEntityFrom(damageSource, damage * 0.1F); + } + if(entity.ticksExisted % 5 == 0) { + world.spawnParticle("cloud", entity.posX, entity.posY, entity.posZ, 0.0, 0.0, 0.0); + } + } else { + + if(entity.motionY < -0.2) + entity.motionY *= 0.5; + + if(!world.isRemote) { + entity.attackEntityFrom(damageSource, damage); + } + } + + if(entity.ticksExisted % 5 == 0) { + world.playSoundAtEntity(entity, "random.fizz", 0.2F, 1F); + } + } + } +} diff --git a/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java b/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java index cb656986c..57e9b7b1a 100644 --- a/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java +++ b/src/main/java/com/hbm/blocks/fluid/SchrabidicBlock.java @@ -77,7 +77,9 @@ public class SchrabidicBlock extends BlockFluidClassic { @Override public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { - entity.setInWeb(); + + if(this.getMaterial() == ModBlocks.fluidschrabidic) + entity.setInWeb(); if(entity instanceof EntityLivingBase) ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, 1.0F); @@ -97,7 +99,7 @@ public class SchrabidicBlock extends BlockFluidClassic { } public boolean reactToBlocks(World world, int x, int y, int z) { - if(world.getBlock(x, y, z).getMaterial() != ModBlocks.fluidschrabidic) { + if(world.getBlock(x, y, z).getMaterial() != this.getMaterial()) { if(world.getBlock(x, y, z).getMaterial().isLiquid()) { return true; } diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasAsbestos.java b/src/main/java/com/hbm/blocks/gas/BlockGasAsbestos.java index 84883a519..38dcfdc7d 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasAsbestos.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasAsbestos.java @@ -5,9 +5,6 @@ import java.util.Random; import com.hbm.extprop.HbmLivingProps; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorRegistry.HazardClass; -import com.hbm.util.ContaminationUtil; -import com.hbm.util.ContaminationUtil.ContaminationType; -import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java b/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java index 52dc30b48..19033a933 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasClorine.java @@ -10,7 +10,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.IBlockAccess; diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasMeltdown.java b/src/main/java/com/hbm/blocks/gas/BlockGasMeltdown.java index 83088aa31..65f248873 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasMeltdown.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasMeltdown.java @@ -15,7 +15,6 @@ import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasMonoxide.java b/src/main/java/com/hbm/blocks/gas/BlockGasMonoxide.java index 1cf3f1511..71ea675a3 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasMonoxide.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasMonoxide.java @@ -6,9 +6,6 @@ import com.hbm.lib.ModDamageSource; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.util.ArmorUtil; -import com.hbm.util.ContaminationUtil; -import com.hbm.util.ContaminationUtil.ContaminationType; -import com.hbm.util.ContaminationUtil.HazardType; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java b/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java index fdf44479f..4ac7bab3f 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasRadon.java @@ -12,7 +12,6 @@ import com.hbm.util.ContaminationUtil.HazardType; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasRadonDense.java b/src/main/java/com/hbm/blocks/gas/BlockGasRadonDense.java index 21a24186f..7977d0da6 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasRadonDense.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasRadonDense.java @@ -4,7 +4,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.extprop.HbmLivingProps; -import com.hbm.lib.ModDamageSource; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; diff --git a/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java b/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java index 8dcc6bdb6..3e58249cb 100644 --- a/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java +++ b/src/main/java/com/hbm/blocks/gas/BlockGasRadonTomb.java @@ -4,6 +4,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.extprop.HbmLivingProps; +import com.hbm.potion.HbmPotion; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; @@ -52,8 +53,13 @@ public class BlockGasRadonTomb extends BlockGasBase { public void onEntityCollidedWithBlock(World world, int p_149670_2_, int p_149670_3_, int p_149670_4_, Entity entity) { if(entity instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.5F); - HbmLivingProps.incrementFibrosis((EntityLivingBase)entity, 10); + EntityLivingBase living = (EntityLivingBase) entity; + + living.removePotionEffect(HbmPotion.radaway.id); //get fucked + living.removePotionEffect(HbmPotion.radx.id); + + ContaminationUtil.contaminate(living, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 0.5F); + HbmLivingProps.incrementFibrosis(living, 10); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockLayering.java b/src/main/java/com/hbm/blocks/generic/BlockLayering.java index fa039eff3..21d6ed749 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockLayering.java +++ b/src/main/java/com/hbm/blocks/generic/BlockLayering.java @@ -84,9 +84,9 @@ public class BlockLayering extends Block { } public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) { - if(p_149674_1_.getSavedLightValue(EnumSkyBlock.Block, p_149674_2_, p_149674_3_, p_149674_4_) > 11) { + /*if(p_149674_1_.getSavedLightValue(EnumSkyBlock.Block, p_149674_2_, p_149674_3_, p_149674_4_) > 11) { p_149674_1_.setBlockToAir(p_149674_2_, p_149674_3_, p_149674_4_); - } + }*/ } @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java new file mode 100644 index 000000000..79227996b --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java @@ -0,0 +1,320 @@ +package com.hbm.blocks.generic; + +import java.awt.Color; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Random; + +import com.google.common.collect.HashBiMap; +import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.WorldConfig; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.util.ColorUtil; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; + +public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiPass { + + public static int override = -1; + + public static void shuffleOverride(Random rand) { + override = rand.nextInt(uniqueItems.size()); + } + + public static void resetOverride() { + override = -1; + } + + public BlockMotherOfAllOres() { + super(Material.rock); + this.setBlockTextureName("stone"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRandomOre(); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + + for(int i = 0; i < uniqueItems.size(); i++) + list.add(new ItemStack(item, 1, i)); + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + return new ItemStack(this, 1, ore.getStackId()); + } + + return new ItemStack(ModItems.nothing); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + ArrayList ret = new ArrayList(); + + if(fortune == 0xFECE00) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + ComparableStack item = ore.getCompStack(); + ret.add(item.toStack()); + } + } + + return ret; + } + + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + this.dropBlockAsItemWithChance(world, x, y, z, meta, 1, 0xFECE00); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { + ((TileEntityRandomOre)world.getTileEntity(x, y, z)).setItem(stack.getItemDamage()); + world.markBlockForUpdate(x, y, z); + } + + @Override + public int getRenderType(){ + return IBlockMultiPass.getRenderType(); + } + + @Override + public int getPasses() { + return 2; + } + + private IIcon[] overlays = new IIcon[10]; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + + this.blockIcon = reg.registerIcon("stone"); + for(int i = 0; i < overlays.length; i++) { + overlays[i] = reg.registerIcon(RefStrings.MODID + ":ore_random_" + (i + 1)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + if(RenderBlockMultipass.currentPass == 0) + return Blocks.stone.getIcon(0, 0); + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + int index = ore.getStackId() % overlays.length; + return overlays[index]; + } + + return Blocks.stone.getIcon(0, 0); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(RenderBlockMultipass.currentPass == 0) + return Blocks.stone.getIcon(0, 0); + + int index = meta % overlays.length; + return overlays[index]; + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + + if(RenderBlockMultipass.currentPass == 0) + return 0xffffff; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + ItemStack stack = ore.getStack(); + int color = ColorUtil.getAverageColorFromStack(stack); + color = ColorUtil.amplifyColor(color); + + Color col = new Color(color); + int r = col.getRed(); + int g = col.getGreen(); + int b = col.getBlue(); + + float[] hsb = new Color(color).RGBtoHSB(r, g, b, new float[3]); + + if(hsb[1] > 0F && hsb[1] < 0.75F) + hsb[1] = 0.75F; + + color = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]); + + return color; + } + + return super.colorMultiplier(world, x, y, z); + } + + public static class TileEntityRandomOre extends TileEntity { + + private ComparableStack stack; + + public TileEntityRandomOre() { + if(override != -1) { + setItem(override); + } + } + + public void setItem(int id) { + ComparableStack comp = itemMap.get(id); + this.stack = comp != null ? ((ComparableStack) comp.copy()) : null; + + if(this.worldObj != null) + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + public int getStackId() { + return itemMap.inverse().get(getCompStack()); + } + + public ItemStack getStack() { + return getCompStack().toStack(); + } + + public ComparableStack getCompStack() { + + if(stack == null) { + int rand = worldObj.rand.nextInt(uniqueItems.size()); + stack = (ComparableStack) itemMap.get(rand).copy(); + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + return stack != null ? stack : new ComparableStack(ModItems.nothing); + } + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + int key = nbt.getInteger("item"); + this.setItem(key); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + try { + Integer key = itemMap.inverse().get(getCompStack()); + nbt.setInteger("item", key != null ? key : 0); + } catch(Exception ex) { } + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + } + + public static class ItemRandomOreBlock extends ItemBlock { + + public ItemRandomOreBlock(Block block) { + super(block); + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + ComparableStack comp = itemMap.get(stack.getItemDamage()); + ItemStack name = comp != null ? comp.toStack() : new ItemStack(ModItems.nothing); + if(name.getItemDamage() == OreDictionary.WILDCARD_VALUE) { + name.setItemDamage(0); + } + return I18nUtil.resolveKey(this.getUnlocalizedName() + ".name", name.getItem().getItemStackDisplayName(name)); + } + } + + public static HashSet uniqueItems = new HashSet(); + public static HashBiMap itemMap = HashBiMap.create(); + + public static void init() { + + if(WorldConfig.enableRandom) { + for(Object b : Block.blockRegistry.getKeys()) { + Block block = Block.getBlockFromName((String) b); + if(block != null && Item.getItemFromBlock(block) != null) + uniqueItems.add(new ComparableStack(block)); + } + + for(Object i : Item.itemRegistry.getKeys()) { + Item item = (Item) Item.itemRegistry.getObject((String) i); + uniqueItems.add(new ComparableStack(item)); + } + + for(String i : OreDictionary.getOreNames()) { + for(ItemStack stack : OreDictionary.getOres(i)) { + uniqueItems.add(new ComparableStack(stack)); + } + } + } else { + uniqueItems.add(new ComparableStack(ModItems.nothing)); + } + + int i = 0; + for(ComparableStack stack : uniqueItems) { + itemMap.put(i++, stack); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 6f643733b..93b95e163 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -241,10 +241,17 @@ public class BlockOre extends Block { return 1; } + public boolean allowFortune = true; + + public BlockOre noFortune() { + this.allowFortune = false; + return this; + } + @Override public int quantityDroppedWithBonus(int fortune, Random rand) { - if(fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, rand, fortune)) { + if(fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, rand, fortune) && allowFortune) { int mult = rand.nextInt(fortune + 2) - 1; if(mult < 0) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java b/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java new file mode 100644 index 000000000..7100843ab --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockResourceStone.java @@ -0,0 +1,25 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockEnums; +import com.hbm.blocks.ModBlocks; + +import net.minecraft.block.material.Material; +import net.minecraft.world.World; + +public class BlockResourceStone extends BlockEnumMulti { + + public BlockResourceStone() { + super(Material.rock, BlockEnums.EnumStoneType.class, true, true); + } + + @Override + public void dropBlockAsItemWithChance(World world, int x, int y, int z, int meta, float chance, int fortune) { + + if(meta == BlockEnums.EnumStoneType.ASBESTOS.ordinal()) { + world.setBlock(x, y, z, ModBlocks.gas_asbestos); + } + + super.dropBlockAsItemWithChance(world, x, y, z, meta, chance, fortune); + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java new file mode 100644 index 000000000..f219fb30a --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java @@ -0,0 +1,71 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockEnums; +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockStalagmite extends BlockEnumMulti { + + public BlockStalagmite() { + super(Material.rock, BlockEnums.EnumStoneType.class, true, true); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return 1; + } + + @Override + public Item getItemDropped(int meta, Random rang, int fortune) { + + switch(meta) { + case 0: return ModItems.sulfur; + case 1: return ModItems.powder_asbestos; + } + + return null; + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + + if(this == ModBlocks.stalagmite) + return World.doesBlockHaveSolidTopSurface(world, x, y - 1, z); + if(this == ModBlocks.stalactite) + return world.isSideSolid(x, y + 1, z, ForgeDirection.DOWN); + + return true; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + if(!canPlaceBlockAt(world, x, y, z)) { + world.func_147480_a(x, y, z, true); + } + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/WasteEarth.java b/src/main/java/com/hbm/blocks/generic/WasteEarth.java index e6e876f24..419574181 100644 --- a/src/main/java/com/hbm/blocks/generic/WasteEarth.java +++ b/src/main/java/com/hbm/blocks/generic/WasteEarth.java @@ -4,8 +4,8 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; +import com.hbm.config.RadiationConfig; import com.hbm.lib.RefStrings; -import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; import cpw.mods.fml.relauncher.Side; @@ -159,7 +159,7 @@ public class WasteEarth extends Block { if(this == ModBlocks.waste_earth || this == ModBlocks.waste_mycelium) { - if(GeneralConfig.enableAutoCleanup || (world.getBlockLightValue(x, y + 1, z) < 4 && world.getBlockLightOpacity(x, y + 1, z) > 2)) { + if(RadiationConfig.cleanupDeadDirt || (world.getBlockLightValue(x, y + 1, z) < 4 && world.getBlockLightOpacity(x, y + 1, z) > 2)) { world.setBlock(x, y, z, Blocks.dirt); } diff --git a/src/main/java/com/hbm/blocks/generic/WasteLeaves.java b/src/main/java/com/hbm/blocks/generic/WasteLeaves.java index 57571f249..8ffadba81 100644 --- a/src/main/java/com/hbm/blocks/generic/WasteLeaves.java +++ b/src/main/java/com/hbm/blocks/generic/WasteLeaves.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -10,16 +11,17 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.IIcon; import net.minecraft.world.World; public class WasteLeaves extends Block { public WasteLeaves(Material mat) { super(mat); + this.setTickRandomly(true); } @Override @@ -36,8 +38,15 @@ public class WasteLeaves extends Block { @Override public void updateTick(World world, int x, int y, int z, Random rand) { - if(rand.nextInt(60) == 0) { + if(rand.nextInt(30) == 0) { world.setBlockToAir(x, y, z); + + if(world.getBlock(x, y - 1, z).getMaterial() == Material.air) { + EntityFallingBlock leaves = new EntityFallingBlock(world, x + 0.5, y + 0.5, z + 0.5, ModBlocks.leaves_layer); + leaves.field_145812_b = 2; + leaves.field_145813_c = false; + world.spawnEntityInWorld(leaves); + } } super.updateTick(world, x, y, z, rand); diff --git a/src/main/java/com/hbm/blocks/machine/BlockObserver.java b/src/main/java/com/hbm/blocks/machine/BlockObserver.java new file mode 100644 index 000000000..e1dfa027f --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockObserver.java @@ -0,0 +1,83 @@ +package com.hbm.blocks.machine; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockObserver extends Block { + + private boolean isActive; + + @SideOnly(Side.CLIENT) + private IIcon iconFront; + @SideOnly(Side.CLIENT) + private IIcon iconBack; + + public BlockObserver(Material mat, boolean isActive) { + super(mat); + this.isActive = isActive; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconBack = iconRegister.registerIcon(RefStrings.MODID + (this.isActive ? ":observer_back_on" : ":observer_back_off")); + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":observer_front"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":observer_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + ForgeDirection dir = ForgeDirection.getOrientation(metadata); + ForgeDirection opp = dir.getOpposite(); + return side == dir.ordinal() ? iconFront : side == opp.ordinal() ? iconBack : blockIcon; + } + + @Override + public Item getItemDropped(int meta, Random rand, int luck) { + return Item.getItemFromBlock(ModBlocks.observer_off); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + + if(this.isActive) + world.scheduleBlockUpdate(x, y, z, this, 2); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + if(!this.isActive) { + + } + } + + @Override + public boolean canProvidePower() { + return this.isActive; + } + + @Override + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { + return this.isActive ? 15 : 0; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java b/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java index 8e066e31f..480073153 100644 --- a/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java +++ b/src/main/java/com/hbm/blocks/machine/SoyuzLauncher.java @@ -160,63 +160,55 @@ public class SoyuzLauncher extends BlockDummyable { private static boolean keepInventory; @Override - public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int i) - { - if (!keepInventory) - { - ISidedInventory tileentityfurnace = (ISidedInventory)world.getTileEntity(x, y, z); + public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int i) { + if(!keepInventory) { + ISidedInventory tileentityfurnace = (ISidedInventory) world.getTileEntity(x, y, z); - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + if(tileentityfurnace != null) { + for(int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) { + ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + if(itemstack != null) { + float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; + float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; + while(itemstack.stackSize > 0) { + int j1 = this.field_149933_a.nextInt(21) + 10; - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - world.spawnEntityInWorld(entityitem); - } - } - } - - for(int l = 0; l < 10; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 38))); - for(int l = 0; l < 8; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 41))); - for(int l = 0; l < 6; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 64))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53))); - - world.func_147453_f(x, y, z, p_149749_5_); - } - } + float f3 = 0.05F; + entityitem.motionX = (float) this.field_149933_a.nextGaussian() * f3; + entityitem.motionY = (float) this.field_149933_a.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) this.field_149933_a.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + } - super.breakBlock(world, x, y, z, p_149749_5_, i); - } + for(int l = 0; l < 10; l++) + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_launcher, 38))); + for(int l = 0; l < 8; l++) + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.concrete_smooth, 41))); + for(int l = 0; l < 6; l++) + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_scaffold, 53))); + + world.func_147453_f(x, y, z, p_149749_5_); + } + } + + super.breakBlock(world, x, y, z, p_149749_5_, i); + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockCable.java b/src/main/java/com/hbm/blocks/network/BlockCable.java index 85a55ff90..ffc7c7f36 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCable.java @@ -1,9 +1,11 @@ package com.hbm.blocks.network; +import com.hbm.blocks.ModBlocks; import com.hbm.blocks.test.TestConductor; import com.hbm.lib.Library; import com.hbm.tileentity.network.TileEntityCableBaseNT; +import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; @@ -21,9 +23,15 @@ public class BlockCable extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityCableBaseNT(); } + + public static int renderIDClassic = RenderingRegistry.getNextAvailableRenderId(); @Override public int getRenderType() { + + if(this == ModBlocks.red_cable_classic) + return renderIDClassic; + return TestConductor.renderID; } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java index 37eee94f2..b14fa899e 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuct.java @@ -1,6 +1,12 @@ package com.hbm.blocks.network; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; import com.hbm.tileentity.conductor.TileEntityFluidDuct; +import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; +import com.hbm.util.I18nUtil; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -8,8 +14,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class BlockFluidDuct extends BlockContainer { +public class BlockFluidDuct extends BlockContainer implements ILookOverlay { public BlockFluidDuct(Material p_i45386_1_) { super(p_i45386_1_); @@ -79,4 +86,18 @@ public class BlockFluidDuct extends BlockContainer { return false; } + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityFluidDuctSimple)) + return; + + TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; + + List text = new ArrayList(); + text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java index 21c75992e..08031fe84 100644 --- a/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java +++ b/src/main/java/com/hbm/blocks/network/BlockFluidDuctSolid.java @@ -1,8 +1,13 @@ package com.hbm.blocks.network; +import java.util.ArrayList; +import java.util.List; + import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ILookOverlay; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -13,8 +18,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPass { +public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPass, ILookOverlay { public BlockFluidDuctSolid(Material mat) { super(mat); @@ -64,4 +70,19 @@ public class BlockFluidDuctSolid extends BlockContainer implements IBlockMultiPa return 0xffffff; } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityFluidDuctSimple)) + return; + + TileEntityFluidDuctSimple duct = (TileEntityFluidDuctSimple) te; + + List text = new ArrayList(); + text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } } diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index 8e260d42b..25da7bb68 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; @@ -119,7 +120,7 @@ public class CableDiode extends BlockContainer implements ILookOverlay, IToolabl return new TileEntityDiode(); } - public static class TileEntityDiode extends TileEntity implements IEnergyUser { + public static class TileEntityDiode extends TileEntityLoadedBase implements IEnergyUser { @Override public void readFromNBT(NBTTagCompound nbt) { diff --git a/src/main/java/com/hbm/blocks/test/TestBB.java b/src/main/java/com/hbm/blocks/test/TestBB.java index 20d2bfa5c..573cc0804 100644 --- a/src/main/java/com/hbm/blocks/test/TestBB.java +++ b/src/main/java/com/hbm/blocks/test/TestBB.java @@ -1,7 +1,5 @@ package com.hbm.blocks.test; -import com.hbm.blocks.ModBlocks; - import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -9,10 +7,5 @@ public class TestBB extends Block { public TestBB(Material mat) { super(mat); - - if(this == ModBlocks.test_bb_bork) - this.setBlockBounds(-1000F, -1000F, -1000F, 1001F, 1001F, 1001F); - else - this.setBlockBounds(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY); } } diff --git a/src/main/java/com/hbm/blocks/test/TestPipe.java b/src/main/java/com/hbm/blocks/test/TestPipe.java new file mode 100644 index 000000000..598b0e794 --- /dev/null +++ b/src/main/java/com/hbm/blocks/test/TestPipe.java @@ -0,0 +1,58 @@ +package com.hbm.blocks.test; + +import com.hbm.tileentity.network.TileEntityPipeBaseNT; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class TestPipe extends BlockContainer { + + @SideOnly(Side.CLIENT) + protected IIcon overlay; + + public TestPipe(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.overlay = iconRegister.registerIcon(this.getTextureName() + "_overlay"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 0 ? this.blockIcon : this.overlay; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityPipeBaseNT(); + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } +} diff --git a/src/main/java/com/hbm/config/BombConfig.java b/src/main/java/com/hbm/config/BombConfig.java index 8e325df4f..3ad1da586 100644 --- a/src/main/java/com/hbm/config/BombConfig.java +++ b/src/main/java/com/hbm/config/BombConfig.java @@ -25,10 +25,12 @@ public class BombConfig { public static int falloutRange = 100; public static int fDelay = 4; public static int limitExplosionLifespan = 0; + public static int rain = 0; + public static int cont = 0; public static void loadFromConfig(Configuration config) { - final String CATEGORY_NUKES = "03_nukes"; + final String CATEGORY_NUKES = CommonConfig.CATEGORY_NUKES; Property propGadget = config.get(CATEGORY_NUKES, "3.00_gadgetRadius", 150); propGadget.comment = "Radius of the Gadget"; gadgetRadius = propGadget.getInt(); @@ -72,7 +74,7 @@ public class BombConfig { propN2.comment = "Radius of the N2 mine"; n2Radius = propN2.getInt(); - final String CATEGORY_NUKE = "06_explosions"; + final String CATEGORY_NUKE = CommonConfig.CATEGORY_EXPLOSIONS; Property propLimitExplosionLifespan = config.get(CATEGORY_NUKE, "6.00_limitExplosionLifespan", 0); propLimitExplosionLifespan.comment = "How long an explosion can be unloaded until it dies in seconds. Based of system time. 0 disables the effect"; limitExplosionLifespan = propLimitExplosionLifespan.getInt(); @@ -91,5 +93,12 @@ public class BombConfig { Property falloutDelayProp = config.get(CATEGORY_NUKE, "6.04_falloutDelay", 4); falloutDelayProp.comment = "How many ticks to wait for the next fallout chunk computation"; fDelay = falloutDelayProp.getInt(); + + Property radRain = config.get(CATEGORY_NUKE, "6.05_falloutRainDuration", 0); + radRain.comment = "Duration of the thunderstorm after fallout in ticks (only large explosions)"; + rain = radRain.getInt(); + Property rainCont = config.get(CATEGORY_NUKE, "6.06_falloutRainRadiation", 0); + rainCont.comment = "Radiation in 100th RADs created by fallout rain"; + cont = rainCont.getInt(); } } diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 59cc4f297..2c9b88e1e 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -6,6 +6,22 @@ import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; public class CommonConfig { + + public static final String CATEGORY_GENERAL = "01_general"; + public static final String CATEGORY_ORES = "02_ores"; + public static final String CATEGORY_NUKES = "03_nukes"; + public static final String CATEGORY_DUNGEONS = "04_dungeons"; + public static final String CATEGORY_METEORS = "05_meteors"; + public static final String CATEGORY_EXPLOSIONS = "06_explosions"; + public static final String CATEGORY_MISSILE = "07_missile_machines"; + public static final String CATEGORY_POTION = "08_potion_effects"; + public static final String CATEGORY_MACHINES = "09_machines"; + public static final String CATEGORY_DROPS = "10_dangerous_drops"; + public static final String CATEGORY_TOOLS = "11_tools"; + public static final String CATEGORY_MOBS = "12_mobs"; + public static final String CATEGORY_RADIATION = "13_radiation"; + + public static final String CATEGORY_528 = "528"; public static int setDefZero(int value, int def) { @@ -30,28 +46,30 @@ public class CommonConfig { } public static int createConfigInt(Configuration config, String category, String name, String comment, int def) { - Property prop = config.get(category, name, def); prop.comment = comment; return prop.getInt(); } - public static boolean createConfigBool(Configuration config, String category, String name, String comment, boolean def) { + public static double createConfigDouble(Configuration config, String category, String name, String comment, double def) { + Property prop = config.get(category, name, def); + prop.comment = comment; + return prop.getDouble(); + } + public static boolean createConfigBool(Configuration config, String category, String name, String comment, boolean def) { Property prop = config.get(category, name, def); prop.comment = comment; return prop.getBoolean(); } public static String createConfigString(Configuration config, String category, String name, String comment, String def) { - Property prop = config.get(category, name, def); prop.comment = comment; return prop.getString(); } public static String[] createConfigStringList(Configuration config, String category, String name, String comment) { - Property prop = config.get(category, name, new String[] { "PLACEHOLDER" }); prop.comment = comment; return prop.getStringList(); diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 391ad8516..8330e60c2 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -13,14 +13,8 @@ public class GeneralConfig { public static boolean enableRad = true; public static boolean enableNITAN = true; public static boolean enableNukeClouds = true; - public static boolean enableAutoCleanup = false; - public static boolean enableMeteorStrikes = true; - public static boolean enableMeteorShowers = true; - public static boolean enableMeteorTails = true; - public static boolean enableSpecialMeteors = true; public static boolean enableBomberShortMode = false; public static boolean enableVaults = true; - public static boolean enableRads = true; public static boolean enableCataclysm = false; public static boolean enableExtendedLogging = false; public static boolean enableHardcoreTaint = false; @@ -42,7 +36,7 @@ public class GeneralConfig { public static void loadFromConfig(Configuration config) { - final String CATEGORY_GENERAL = "01_general"; + final String CATEGORY_GENERAL = CommonConfig.CATEGORY_GENERAL; enableDebugMode = config.get(CATEGORY_GENERAL, "1.00_enableDebugMode", false).getBoolean(false); enableMycelium = config.get(CATEGORY_GENERAL, "1.01_enableMyceliumSpread", false).getBoolean(false); enablePlutoniumOre = config.get(CATEGORY_GENERAL, "1.02_enablePlutoniumNetherOre", false).getBoolean(false); @@ -52,14 +46,8 @@ public class GeneralConfig { enableRad = config.get(CATEGORY_GENERAL, "1.06_enableRadHotspotSpawn", true).getBoolean(true); enableNITAN = config.get(CATEGORY_GENERAL, "1.07_enableNITANChestSpawn", true).getBoolean(true); enableNukeClouds = config.get(CATEGORY_GENERAL, "1.08_enableMushroomClouds", true).getBoolean(true); - enableAutoCleanup = config.get(CATEGORY_GENERAL, "1.09_enableAutomaticRadCleanup", false).getBoolean(false); - enableMeteorStrikes = config.get(CATEGORY_GENERAL, "1.10_enableMeteorStrikes", true).getBoolean(true); - enableMeteorShowers = config.get(CATEGORY_GENERAL, "1.11_enableMeteorShowers", true).getBoolean(true); - enableMeteorTails = config.get(CATEGORY_GENERAL, "1.12_enableMeteorTails", true).getBoolean(true); - enableSpecialMeteors = config.get(CATEGORY_GENERAL, "1.13_enableSpecialMeteors", false).getBoolean(false); enableBomberShortMode = config.get(CATEGORY_GENERAL, "1.14_enableBomberShortMode", false).getBoolean(false); enableVaults = config.get(CATEGORY_GENERAL, "1.15_enableVaultSpawn", true).getBoolean(true); - enableRads = config.get(CATEGORY_GENERAL, "1.16_enableNewRadiation", true).getBoolean(true); enableCataclysm = config.get(CATEGORY_GENERAL, "1.17_enableCataclysm", false).getBoolean(false); enableExtendedLogging = config.get(CATEGORY_GENERAL, "1.18_enableExtendedLogging", false).getBoolean(false); enableHardcoreTaint = config.get(CATEGORY_GENERAL, "1.19_enableHardcoreTaint", false).getBoolean(false); @@ -70,7 +58,7 @@ public class GeneralConfig { enableReflectorCompat = config.get(CATEGORY_GENERAL, "1.24_enableReflectorCompat", false).getBoolean(false); enableRenderDistCheck = config.get(CATEGORY_GENERAL, "1.25_enableRenderDistCheck", true).getBoolean(true); - final String CATEGORY_528 = "528"; + final String CATEGORY_528 = CommonConfig.CATEGORY_528; config.addCustomCategoryComment(CATEGORY_528, "CAUTION\n" + "528 Mode: Please proceed with caution!\n" diff --git a/src/main/java/com/hbm/config/MachineConfig.java b/src/main/java/com/hbm/config/MachineConfig.java index 555bfd4a8..ffa932dde 100644 --- a/src/main/java/com/hbm/config/MachineConfig.java +++ b/src/main/java/com/hbm/config/MachineConfig.java @@ -9,7 +9,7 @@ public class MachineConfig { public static void loadFromConfig(Configuration config) { - final String CATEGORY_MACHINE = "09_machines"; + final String CATEGORY_MACHINE = CommonConfig.CATEGORY_MACHINES; scaleRTGPower = CommonConfig.createConfigBool(config, CATEGORY_MACHINE, "9.00_scaleRTGPower", "Should RTG/Betavoltaic fuel power scale down as it decays?", false); doRTGsDecay = CommonConfig.createConfigBool(config, CATEGORY_MACHINE, "9.01_doRTGsDecay", "Should RTG/Betavoltaic fuel decay at all?", true); diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index c98ee9c95..cd01ac0c8 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -29,7 +29,7 @@ public class MobConfig { public static void loadFromConfig(Configuration config) { - final String CATEGORY = "12_mobs"; + final String CATEGORY = CommonConfig.CATEGORY_MOBS; enableMaskman = CommonConfig.createConfigBool(config, CATEGORY, "12.M00_enableMaskman", "Whether mask man should spawn", true); maskmanDelay = CommonConfig.createConfigInt(config, CATEGORY, "12.M01_maskmanDelay", "How many world ticks need to pass for a check to be performed", 60 * 60 * 60); diff --git a/src/main/java/com/hbm/config/PotionConfig.java b/src/main/java/com/hbm/config/PotionConfig.java index 415c77e3f..cf235cd68 100644 --- a/src/main/java/com/hbm/config/PotionConfig.java +++ b/src/main/java/com/hbm/config/PotionConfig.java @@ -20,7 +20,7 @@ public class PotionConfig { public static void loadFromConfig(Configuration config) { - final String CATEGORY_POTION = "08_potion_effects"; + final String CATEGORY_POTION = CommonConfig.CATEGORY_POTION; taintID = CommonConfig.createConfigInt(config, CATEGORY_POTION, "8.00_taintPotionID", "What potion ID the taint effect will have", 62); radiationID = CommonConfig.createConfigInt(config, CATEGORY_POTION, "8.01_radiationPotionID", "What potion ID the radiation effect will have", 63); bangID = CommonConfig.createConfigInt(config, CATEGORY_POTION, "8.02_bangPotionID", "What potion ID the B93 timebomb effect will have", 64); diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index 446497037..9723b9001 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -5,37 +5,31 @@ import net.minecraftforge.common.config.Property; public class RadiationConfig { - public static int rain = 0; - public static int cont = 0; public static int fogRad = 100; public static int fogCh = 20; - public static float hellRad = 0.1F; + public static double hellRad = 0.1; public static int worldRad = 10; public static int worldRadThreshold = 20; public static boolean worldRadEffects = true; + public static boolean cleanupDeadDirt = false; + + public static boolean enableContamination = true; + public static boolean enableChunkRads = true; public static void loadFromConfig(Configuration config) { - final String CATEGORY_NUKE = "06_explosions"; + final String CATEGORY_NUKE = CommonConfig.CATEGORY_RADIATION; - Property radRain = config.get(CATEGORY_NUKE, "6.05_falloutRainDuration", 0); - radRain.comment = "Duration of the thunderstorm after fallout in ticks (only large explosions)"; - rain = radRain.getInt(); - Property rainCont = config.get(CATEGORY_NUKE, "6.06_falloutRainRadiation", 0); - rainCont.comment = "Radiation in 100th RADs created by fallout rain"; - cont = rainCont.getInt(); - Property fogThresh = config.get(CATEGORY_NUKE, "6.07_fogThreshold", 100); - fogThresh.comment = "Radiation in RADs required for fog to spawn"; - fogRad = fogThresh.getInt(); - Property fogChance = config.get(CATEGORY_NUKE, "6.08_fogChance", 10); - fogChance.comment = "1:n chance of fog spawning every second"; - fogCh = fogChance.getInt(); - Property netherRad = config.get(CATEGORY_NUKE, "6.09_netherRad", 10); - netherRad.comment = "RAD/s in the nether in hundredths"; - hellRad = netherRad.getInt() * 0.01F; - worldRad = CommonConfig.createConfigInt(config, CATEGORY_NUKE, "6.10_worldRadCount", "How many block operations radiation can perform per tick", 10); - worldRadThreshold = CommonConfig.createConfigInt(config, CATEGORY_NUKE, "6.11_worldRadThreshold", "The least amount of RADs required for block modification to happen", 20); - worldRadEffects = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "6.12_worldRadEffects", "Whether high radiation levels should perform changes in the world", true); + fogRad = CommonConfig.createConfigInt(config, CATEGORY_NUKE, "FOG_00_threshold", "Radiation in RADs required for fog to spawn", 100); + fogCh = CommonConfig.createConfigInt(config, CATEGORY_NUKE, "FOG_01_threshold", "1:n chance of fog spawning every second", 20); + hellRad = CommonConfig.createConfigDouble(config, CATEGORY_NUKE, "AMBIENT_00_nether", "RAD/s in the nether", 0.1D); + worldRadEffects = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADWORLD_00_toggle", "Whether high radiation levels should perform changes in the world", true); + worldRad = CommonConfig.createConfigInt(config, CATEGORY_NUKE, "RADWORLD_01_amount", "How many block operations radiation can perform per tick", 10); + worldRadThreshold = CommonConfig.createConfigInt(config, CATEGORY_NUKE, "RADWORLD_02_minimum", "The least amount of RADs required for block modification to happen", 20); + cleanupDeadDirt = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADWORLD_03_regrow", "Whether dead grass and mycelium should decay into dirt", false); + + enableContamination = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_00_enableContamination", "Toggles player contamination (and negative effects from radiation poisoning)", true); + enableChunkRads = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_01_enableChunkRads", "Toggles the world radiation system (chunk radiation only, some blocks use an AoE!)", true); fogCh = CommonConfig.setDef(fogCh, 20); } diff --git a/src/main/java/com/hbm/config/ToolConfig.java b/src/main/java/com/hbm/config/ToolConfig.java index c20bb03d5..fd03a0fe7 100644 --- a/src/main/java/com/hbm/config/ToolConfig.java +++ b/src/main/java/com/hbm/config/ToolConfig.java @@ -21,7 +21,7 @@ public class ToolConfig { public static void loadFromConfig(Configuration config) { - final String CATEGORY_TOOLS = "11_tools"; + final String CATEGORY_TOOLS = CommonConfig.CATEGORY_TOOLS; recursionDepth = CommonConfig.createConfigInt(config, CATEGORY_TOOLS, "11.00_recursionDepth", "Limits veinminer's recursive function. Usually not an issue, unless you're using bukkit which is especially sensitive for some reason.", 1000); recursiveStone = CommonConfig.createConfigBool(config, CATEGORY_TOOLS, "11.01_recursionStone", "Determines whether veinminer can break stone", false); recursiveNetherrack = CommonConfig.createConfigBool(config, CATEGORY_TOOLS, "11.02_recursionNetherrack", "Determines whether veinminer can break netherrack", false); diff --git a/src/main/java/com/hbm/config/WeaponConfig.java b/src/main/java/com/hbm/config/WeaponConfig.java index c523cef48..88c3dbdae 100644 --- a/src/main/java/com/hbm/config/WeaponConfig.java +++ b/src/main/java/com/hbm/config/WeaponConfig.java @@ -18,7 +18,7 @@ public class WeaponConfig { public static void loadFromConfig(Configuration config) { - final String CATEGORY_MISSILE = "07_missile_machines"; + final String CATEGORY_MISSILE = CommonConfig.CATEGORY_MISSILE; Property propRadarRange = config.get(CATEGORY_MISSILE, "7.00_radarRange", 1000); propRadarRange.comment = "Range of the radar, 50 will result in 100x100 block area covered"; radarRange = propRadarRange.getInt(); @@ -32,7 +32,7 @@ public class WeaponConfig { propCiwsHitrate.comment = "Additional modifier for CIWS accuracy"; ciwsHitrate = propRadarAltitude.getInt(); - final String CATEGORY_DROPS = "10_dangerous_drops"; + final String CATEGORY_DROPS = CommonConfig.CATEGORY_DROPS; dropCell = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.00_dropCell", "Whether antimatter cells should explode when dropped", true); dropSing = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.01_dropBHole", "Whether singularities and black holes should spawn when dropped", true); dropStar = CommonConfig.createConfigBool(config, CATEGORY_DROPS, "10.02_dropStar", "Whether rigged star blaster cells should explode when dropped", true); diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 6d5d55fdb..5944049ed 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -1,7 +1,6 @@ package com.hbm.config; import net.minecraftforge.common.config.Configuration; -import net.minecraftforge.common.config.Property; public class WorldConfig { @@ -47,6 +46,9 @@ public class WorldConfig { public static int endTikiteSpawn = 8; + public static boolean enableRandom = false; + public static int randomSpawn = 0; + public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; @@ -74,13 +76,17 @@ public class WorldConfig { public static int radfreq = 5000; public static int vaultfreq = 2500; + public static boolean enableMeteorStrikes = true; + public static boolean enableMeteorShowers = true; + public static boolean enableMeteorTails = true; + public static boolean enableSpecialMeteors = true; public static int meteorStrikeChance = 20 * 60 * 180; public static int meteorShowerChance = 20 * 60 * 5; public static int meteorShowerDuration = 6000; public static void loadFromConfig(Configuration config) { - final String CATEGORY_OREGEN = "02_ores"; + final String CATEGORY_OREGEN = CommonConfig.CATEGORY_ORES; overworldOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D00_overworldOres", "General switch for whether overworld ores should be generated. Does not include special structures like oil.", true); netherOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D01_netherOres", "General switch for whether nether ores should be generated.", true); @@ -124,7 +130,10 @@ public class WorldConfig { endTikiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.E00_tikiteSpawnrate", "Amount of end trixite per chunk", 8); - final String CATEGORY_DUNGEON = "04_dungeons"; + enableRandom = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.R00_enableRandomOre", "Amount of random ore per chunk", false); + randomSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.R01_randomOreSpawnrate", "Amount of random ore per chunk", 0); + + final String CATEGORY_DUNGEON = CommonConfig.CATEGORY_DUNGEONS; radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500); antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250); atomStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.02_atomSpawn", "Spawn power plant on every nTH chunk", 500); @@ -151,16 +160,14 @@ public class WorldConfig { jungleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.23_jungleDungeonSpawn", "Spawn jungle dungeon on every nTH chunk", 2000); pyramidStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.24_pyramidSpawn", "Spawn pyramid on every nTH chunk", 4000); - final String CATEGORY_METEOR = "05_meteors"; - Property propMeteorStrikeChance = config.get(CATEGORY_METEOR, "5.00_meteorStrikeChance", 20 * 60 * 60 * 5); - propMeteorStrikeChance.comment = "The probability of a meteor spawning (an average of once every nTH ticks)"; - meteorStrikeChance = propMeteorStrikeChance.getInt(); - Property propMeteorShowerChance = config.get(CATEGORY_METEOR, "5.01_meteorShowerChance", 20 * 60 * 15); - propMeteorShowerChance.comment = "The probability of a meteor spawning during meteor shower (an average of once every nTH ticks)"; - meteorShowerChance = propMeteorShowerChance.getInt(); - Property propMeteorShowerDuration = config.get(CATEGORY_METEOR, "5.02_meteorShowerDuration", 20 * 60 * 30); - propMeteorShowerDuration.comment = "Max duration of meteor shower in ticks"; - meteorShowerDuration = propMeteorShowerDuration.getInt(); + final String CATEGORY_METEOR = CommonConfig.CATEGORY_METEORS; + enableMeteorStrikes = CommonConfig.createConfigBool(config, CATEGORY_METEOR, "5.00_enableMeteorStrikes", "Toggles the spawning of meteors", true); + enableMeteorShowers = CommonConfig.createConfigBool(config, CATEGORY_METEOR, "5.01_enableMeteorShowers", "Toggles meteor showers, which start with a 1% chance for every spawned meteor", true); + enableMeteorTails = CommonConfig.createConfigBool(config, CATEGORY_METEOR, "5.02_enableMeteorTails", "Toggles the particle effect created by falling meteors", true); + enableSpecialMeteors = CommonConfig.createConfigBool(config, CATEGORY_METEOR, "5.03_enableSpecialMeteors", "Toggles rare, special meteor types with different impact effects", true); + meteorStrikeChance = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.03_meteorStrikeChance", "The probability of a meteor spawning (an average of once every nTH ticks)", 20 * 60 * 60 * 5); + meteorShowerChance = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.04_meteorShowerChance", "The probability of a meteor spawning during meteor shower (an average of once every nTH ticks)", 20 * 60 * 15); + meteorShowerDuration = CommonConfig.createConfigInt(config, CATEGORY_METEOR, "5.05_meteorShowerDuration", "Max duration of meteor shower in ticks", 20 * 60 * 30); radioStructure = CommonConfig.setDefZero(radioStructure, 1000); antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000); diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index b37cb4b44..b5b4d4312 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -137,6 +137,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', ModItems.wire_red_copper, 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_su }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.kit_toolbox_empty), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() }); diff --git a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java index 67963d3ef..b875bcd87 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java +++ b/src/main/java/com/hbm/entity/effect/EntityFalloutRain.java @@ -65,12 +65,12 @@ public class EntityFalloutRain extends Entity { tickDelay--; if(this.isDead) { - if(RadiationConfig.rain > 0 && getScale() > 150) { + if(BombConfig.rain > 0 && getScale() > 150) { worldObj.getWorldInfo().setRaining(true); worldObj.getWorldInfo().setThundering(true); - worldObj.getWorldInfo().setRainTime(RadiationConfig.rain); - worldObj.getWorldInfo().setThunderTime(RadiationConfig.rain); - AuxSavedData.setThunder(worldObj, RadiationConfig.rain); + worldObj.getWorldInfo().setRainTime(BombConfig.rain); + worldObj.getWorldInfo().setThunderTime(BombConfig.rain); + AuxSavedData.setThunder(worldObj, BombConfig.rain); } } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java index 8090eae78..b350038be 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileAntiBallistic.java @@ -17,29 +17,29 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityMissileAntiBallistic extends Entity implements IRadarDetectable { - + int activationTimer; public EntityMissileAntiBallistic(World p_i1582_1_) { super(p_i1582_1_); } - + @Override - public void onUpdate() { - + public void onUpdate() { + if(activationTimer < 40) { activationTimer++; - + motionY = 1.5D; this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote) + this.rotation(); + + if(!this.worldObj.isRemote && this.posY < 400) this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); - + } else { - + if(activationTimer == 40) { ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, posZ, 15); activationTimer = 100; @@ -50,9 +50,9 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab targetMissile(); this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0); - this.rotation(); - - if(!this.worldObj.isRemote) + this.rotation(); + + if(!this.worldObj.isRemote && this.posY < 400) this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); @@ -66,70 +66,66 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab } } } + + if(this.posY > 2000) + this.setDead(); - if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && - this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - - if(!this.worldObj.isRemote) - { + if(this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.air && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.water && this.worldObj.getBlock((int) this.posX, (int) this.posY, (int) this.posZ) != Blocks.flowing_water) { + + if(!this.worldObj.isRemote) { ExplosionLarge.explode(worldObj, posX, posY, posZ, 10F, true, true, true); } this.setDead(); return; - } + } - } - - protected void rotation() { - float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - - for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while (this.rotationPitch - this.prevRotationPitch >= 180.0F) - { - this.prevRotationPitch += 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw < -180.0F) - { - this.prevRotationYaw -= 360.0F; - } - - while (this.rotationYaw - this.prevRotationYaw >= 180.0F) - { - this.prevRotationYaw += 360.0F; - } } - + + protected void rotation() { + float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + for(this.rotationPitch = (float) (Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) { + ; + } + + while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { + this.prevRotationPitch += 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw < -180.0F) { + this.prevRotationYaw -= 360.0F; + } + + while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { + this.prevRotationYaw += 360.0F; + } + } + private void targetMissile() { - + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(posX - 500, 0, posZ - 500, posX + 500, 5000, posZ + 500)); - + Entity target = null; double closest = 1000D; - + for(Entity e : list) { if(e instanceof EntityMissileBaseAdvanced || e instanceof EntityMissileCustom) { double dis = Math.sqrt(Math.pow(e.posX - posX, 2) + Math.pow(e.posY - posY, 2) + Math.pow(e.posZ - posZ, 2)); - + if(dis < closest) { closest = dis; target = e; } } } - + if(target != null) { - + Vec3 vec = Vec3.createVectorHelper(target.posX - posX, target.posY - posY, target.posZ - posZ); vec.normalize(); - + this.motionX = vec.xCoord * 0.065D; this.motionY = vec.yCoord * 0.065D; this.motionZ = vec.zCoord * 0.065D; @@ -138,25 +134,24 @@ public class EntityMissileAntiBallistic extends Entity implements IRadarDetectab @Override protected void entityInit() { - + } @Override protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { - + } @Override protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { - + } - - @Override + + @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } + public boolean isInRangeToRenderDist(double distance) { + return distance < 500000; + } @Override public RadarTargetType getTargetType() { diff --git a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java index f0dd248ff..9686b6d23 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java +++ b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java @@ -1,6 +1,6 @@ package com.hbm.entity.projectile; -import com.hbm.config.GeneralConfig; +import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionLarge; import com.hbm.main.MainRegistry; import com.hbm.world.feature.Meteorite; @@ -36,7 +36,7 @@ public class EntityMeteor extends Entity { if(!this.worldObj.isRemote && this.onGround && this.posY < 260) { worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 5 + rand.nextFloat(), true); - if(GeneralConfig.enableMeteorTails) { + if(WorldConfig.enableMeteorTails) { ExplosionLarge.spawnParticles(worldObj, posX, posY + 5, posZ, 75); ExplosionLarge.spawnParticles(worldObj, posX + 5, posY, posZ, 75); ExplosionLarge.spawnParticles(worldObj, posX - 5, posY, posZ, 75); @@ -49,7 +49,7 @@ public class EntityMeteor extends Entity { this.setDead(); } - if(GeneralConfig.enableMeteorTails && worldObj.isRemote) { + if(WorldConfig.enableMeteorTails && worldObj.isRemote) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "exhaust"); diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index 99add36c4..9b691a3cb 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import com.hbm.config.RadiationConfig; import com.hbm.entity.mob.EntityDuck; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; @@ -63,14 +64,22 @@ public class HbmLivingProps implements IExtendedEntityProperties { /// RADIATION /// public static float getRadiation(EntityLivingBase entity) { + if(!RadiationConfig.enableContamination) + return 0; + return getData(entity).radiation; } public static void setRadiation(EntityLivingBase entity, float rad) { - getData(entity).radiation = rad; + if(RadiationConfig.enableContamination) + getData(entity).radiation = rad; } public static void incrementRadiation(EntityLivingBase entity, float rad) { + + if(!RadiationConfig.enableContamination) + return; + HbmLivingProps data = getData(entity); float radiation = getData(entity).radiation + rad; diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index bcfe40033..65b042a1d 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -117,7 +117,7 @@ public class BossSpawnHandler { } } - if(GeneralConfig.enableMeteorStrikes && !world.isRemote) { + if(WorldConfig.enableMeteorStrikes && !world.isRemote) { meteorUpdate(world); } @@ -198,7 +198,7 @@ public class BossSpawnHandler { MainRegistry.logger.info("Ended meteor shower."); } - if(meteorRand.nextInt(WorldConfig.meteorStrikeChance * 100) == 0 && GeneralConfig.enableMeteorShowers) { + if(meteorRand.nextInt(WorldConfig.meteorStrikeChance * 100) == 0 && WorldConfig.enableMeteorShowers) { meteorShower = (int)(WorldConfig.meteorShowerDuration * 0.75 + WorldConfig.meteorShowerDuration * 0.25 * meteorRand.nextFloat()); if(GeneralConfig.enableDebugMode) diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 7354eeae9..49fa4f22d 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import com.hbm.config.BombConfig; import com.hbm.config.GeneralConfig; import com.hbm.config.RadiationConfig; import com.hbm.explosion.ExplosionNukeSmall; @@ -121,15 +122,14 @@ public class EntityEffectHandler { float rad = ChunkRadiationManager.proxy.getRadiation(world, ix, iy, iz); if(world.provider.isHellWorld && RadiationConfig.hellRad > 0 && rad < RadiationConfig.hellRad) - rad = RadiationConfig.hellRad; + rad = (float) RadiationConfig.hellRad; if(rad > 0) { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, rad / 20F); } - if(entity.worldObj.isRaining() && RadiationConfig.cont > 0 && AuxSavedData.getThunder(entity.worldObj) > 0 && entity.worldObj.canBlockSeeTheSky(ix, iy, iz)) { - - ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, RadiationConfig.cont * 0.0005F); + if(entity.worldObj.isRaining() && BombConfig.cont > 0 && AuxSavedData.getThunder(entity.worldObj) > 0 && entity.worldObj.canBlockSeeTheSky(ix, iy, iz)) { + ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, BombConfig.cont * 0.0005F); } if(entity instanceof EntityPlayer && ((EntityPlayer)entity).capabilities.isCreativeMode) @@ -441,7 +441,6 @@ public class EntityEffectHandler { ItemStack armorStack = player.inventory.armorInventory[armorSlot]; if(armorStack != null && armorStack.getItem() instanceof ItemArmor) { - ItemArmor armor = (ItemArmor)armorStack.getItem(); for(int modSlot = 0; modSlot < 8; modSlot++) { ItemStack mod = ArmorModHandler.pryMods(armorStack)[modSlot]; @@ -472,10 +471,18 @@ public class EntityEffectHandler { if(props.getDashCooldown() <= 0) { if(!player.capabilities.isFlying && player.isSneaking() && stamina >= perDash) { - - Vec3 lookingIn = player.getLookVec(); - player.addVelocity(lookingIn.xCoord, 0, lookingIn.zCoord); + Vec3 lookingIn = player.getLookVec(); + Vec3 strafeVec = player.getLookVec(); + strafeVec.rotateAroundY((float)Math.PI * 0.5F); + + int forward = (int) Math.signum(player.moveForward); + int strafe = (int) Math.signum(player.moveStrafing); + + if(forward == 0 && strafe == 0) + forward = 1; + + player.addVelocity(lookingIn.xCoord * forward + strafeVec.xCoord * strafe, 0, lookingIn.zCoord * forward + strafeVec.zCoord * strafe); player.playSound("hbm:player.dash", 1.0F, 1.0F); props.setDashCooldown(HbmPlayerProps.dashCooldownLength); diff --git a/src/main/java/com/hbm/handler/MultiblockHandlerXR.java b/src/main/java/com/hbm/handler/MultiblockHandlerXR.java index 95b599547..80ed65dc5 100644 --- a/src/main/java/com/hbm/handler/MultiblockHandlerXR.java +++ b/src/main/java/com/hbm/handler/MultiblockHandlerXR.java @@ -29,7 +29,7 @@ public class MultiblockHandlerXR { if(a == ox && b == oy && c == oz) continue; - if(!world.getBlock(a, b, c).canPlaceBlockAt(world, a, b, c)) { + if(!world.getBlock(a, b, c).isReplaceable(world, a, b, c)) { return false; } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index adb850968..1ab0b2d26 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -41,7 +41,7 @@ public class Gun12GaugeFactory { config.name = "Franchi SPAS-12"; config.manufacturer = "Black Mesa Armory"; - config.comment.add("\"Here, I have a more suitable gun for you. You'll need it — Catch!\""); + config.comment.add("\"Here, I have a more suitable gun for you. You'll need it - Catch!\""); config.comment.add("Alt-fire with Mouse 2 (Right-click) to fire 2 shells at once"); config.config = new ArrayList(); diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index d2482addc..d9c8407e3 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -10,6 +10,7 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -92,6 +93,7 @@ public class GunNPCFactory { bullet.explosive = 0.5F; bullet.setToBolt(BulletConfiguration.BOLT_LACUNAE); bullet.vPFX = "reddust"; + bullet.damageType = ModDamageSource.s_laser; return bullet; } @@ -124,6 +126,7 @@ public class GunNPCFactory { bullet.leadChance = 0; bullet.setToBolt(BulletConfiguration.BOLT_NIGHTMARE); bullet.vPFX = "reddust"; + bullet.damageType = ModDamageSource.s_laser; bullet.bImpact = new IBulletImpactBehavior() { @@ -210,6 +213,7 @@ public class GunNPCFactory { bullet.leadChance = 0; bullet.doesRicochet = false; bullet.setToBolt(BulletConfiguration.BOLT_WORM); + bullet.damageType = ModDamageSource.s_laser; return bullet; } @@ -226,6 +230,7 @@ public class GunNPCFactory { bullet.leadChance = 0; bullet.doesRicochet = false; bullet.setToBolt(BulletConfiguration.BOLT_LASER); + bullet.damageType = ModDamageSource.s_laser; return bullet; } diff --git a/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java b/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java index ed488b371..8f91f8d75 100644 --- a/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java @@ -1,7 +1,6 @@ package com.hbm.handler.nei; import java.awt.Rectangle; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/hbm/handler/nei/CrackingHandler.java b/src/main/java/com/hbm/handler/nei/CrackingHandler.java index b0ef1c4eb..15452f21c 100644 --- a/src/main/java/com/hbm/handler/nei/CrackingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrackingHandler.java @@ -6,6 +6,11 @@ import com.hbm.inventory.recipes.RefineryRecipes; public class CrackingHandler extends NEIUniversalHandler { public CrackingHandler() { - super("ntmCracking", "Cracking", ModBlocks.machine_catalytic_cracker, RefineryRecipes.getCrackingRecipesForNEI()); + super("Cracking", ModBlocks.machine_catalytic_cracker, RefineryRecipes.getCrackingRecipesForNEI()); + } + + @Override + public String getKey() { + return "ntmCracking"; } } diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index 358aac421..7785087e0 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -31,7 +31,7 @@ public class CrystallizerRecipeHandler extends TemplateRecipeHandler { public RecipeSet(Object input, ItemStack result) { this.input = new PositionedStack(input, 75, 24); - this.acid = new PositionedStack(ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.ordinal()), TileEntityMachineCrystallizer.acidRequired), 39, 24); + this.acid = new PositionedStack(ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired), 39, 24); this.result = new PositionedStack(result, 135, 24); } @@ -78,6 +78,10 @@ public class CrystallizerRecipeHandler extends TemplateRecipeHandler { Map recipes = CrystallizerRecipes.getRecipes(); for (Map.Entry recipe : recipes.entrySet()) { + + if(recipe.getKey() instanceof ItemStack && ((ItemStack)recipe.getKey()).getItem() == ModItems.scrap_plastic) + continue; + this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); } @@ -126,7 +130,7 @@ public class CrystallizerRecipeHandler extends TemplateRecipeHandler { for (Map.Entry recipe : recipes.entrySet()) { if(NEIServerUtils.areStacksSameTypeCrafting(ingredient, ItemFluidIcon.addQuantity( - new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.ordinal()), TileEntityMachineCrystallizer.acidRequired))) { + new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired))) { if(recipe.getKey() instanceof ItemStack) { this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); diff --git a/src/main/java/com/hbm/handler/nei/FractioningHandler.java b/src/main/java/com/hbm/handler/nei/FractioningHandler.java index 282e99ec0..b7a254cb8 100644 --- a/src/main/java/com/hbm/handler/nei/FractioningHandler.java +++ b/src/main/java/com/hbm/handler/nei/FractioningHandler.java @@ -6,6 +6,11 @@ import com.hbm.inventory.recipes.RefineryRecipes; public class FractioningHandler extends NEIUniversalHandler { public FractioningHandler() { - super("ntmFractioning", "Fractioning", ModBlocks.machine_fraction_tower, RefineryRecipes.getFractionRecipesForNEI()); + super("Fractioning", ModBlocks.machine_fraction_tower, RefineryRecipes.getFractionRecipesForNEI()); + } + + @Override + public String getKey() { + return "ntmFractioning"; } } diff --git a/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java b/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java index 076bdcf11..b3f31e9cb 100644 --- a/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java +++ b/src/main/java/com/hbm/handler/nei/LiquefactionHandler.java @@ -6,6 +6,11 @@ import com.hbm.inventory.recipes.LiquefactionRecipes; public class LiquefactionHandler extends NEIUniversalHandler { public LiquefactionHandler() { - super("ntmLiquefaction", "Liquefaction", ModBlocks.machine_liquefactor, LiquefactionRecipes.getRecipes()); + super("Liquefaction", ModBlocks.machine_liquefactor, LiquefactionRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmLiquefaction"; } } diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 7cba240f0..96a1c667e 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -2,11 +2,12 @@ package com.hbm.handler.nei; import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import com.hbm.lib.RefStrings; @@ -16,28 +17,32 @@ import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.block.Block; +import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public abstract class NEIUniversalHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + /// SETUP /// public final String display; - public final String key; public final ItemStack[] machine; public final HashMap recipes; /// SETUP /// - public NEIUniversalHandler(String key, String display, ItemStack machine[], HashMap recipes) { - this.key = key; + public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) { this.display = display; this.machine = machine; this.recipes = recipes; } - public NEIUniversalHandler(String key, String display, ItemStack machine, HashMap recipes) { this(key, display, new ItemStack[]{machine}, recipes); } - public NEIUniversalHandler(String key, String display, Item machine, HashMap recipes) { this(key, display, new ItemStack(machine), recipes); } - public NEIUniversalHandler(String key, String display, Block machine, HashMap recipes) { this(key, display, new ItemStack(machine), recipes); } + public NEIUniversalHandler(String display, ItemStack machine, HashMap recipes) { this(display, new ItemStack[]{machine}, recipes); } + public NEIUniversalHandler(String display, Item machine, HashMap recipes) { this(display, new ItemStack(machine), recipes); } + public NEIUniversalHandler(String display, Block machine, HashMap recipes) { this(display, new ItemStack(machine), recipes); } public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { @@ -109,7 +114,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { @Override public void loadCraftingRecipes(String outputId, Object... results) { - if(outputId.equals(key)) { + if(outputId.equals(getKey())) { for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); @@ -143,9 +148,8 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { @Override public void loadUsageRecipes(String inputId, Object... ingredients) { - - if(inputId.equals(key)) { - loadCraftingRecipes(key, new Object[0]); + if(inputId.equals(getKey())) { + loadCraftingRecipes(getKey(), new Object[0]); } else { super.loadUsageRecipes(inputId, ingredients); } @@ -169,4 +173,18 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { } } } + + @Override + public void loadTransferRects() { + transferRectsGui = new LinkedList(); + //guiGui = new LinkedList>(); + + transferRects.add(new RecipeTransferRect(new Rectangle(147, 1, 18, 18), getKey())); + //transferRectsGui.add(new RecipeTransferRect(new Rectangle(18 * 2 + 2, 89 - 7 - 11, 18 * 5 - 4, 18 + 16), key)); + //guiGui.add(GUIMachineAssembler.class); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + //RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } + + public abstract String getKey(); } diff --git a/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java index d11186c53..77ea8225c 100644 --- a/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RTGRecipeHandler.java @@ -8,11 +8,16 @@ import net.minecraft.item.ItemStack; public class RTGRecipeHandler extends NEIUniversalHandler { public RTGRecipeHandler() { - super("ntmRTG", "RTG", new ItemStack[] { + super("RTG", new ItemStack[] { new ItemStack(ModBlocks.machine_rtg_grey), new ItemStack(ModBlocks.machine_difurnace_rtg_off), new ItemStack(ModBlocks.machine_industrial_generator), new ItemStack(ModBlocks.machine_rtg_furnace_off) }, ItemRTGPellet.getRecipeMap()); } + + @Override + public String getKey() { + return "ntmRTG"; + } } diff --git a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java index edd81d147..9d5d619d4 100644 --- a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java @@ -8,7 +8,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; -import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUIRadiolysis; import com.hbm.inventory.recipes.RadiolysisRecipes; import com.hbm.lib.RefStrings; @@ -16,8 +15,6 @@ import com.hbm.lib.RefStrings; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; -import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect; -import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRectHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java b/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java index dd624fc18..ed1132d76 100644 --- a/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java @@ -10,12 +10,10 @@ import java.util.Map; import com.hbm.inventory.gui.GUISILEX; import com.hbm.inventory.recipes.SILEXRecipes; import com.hbm.inventory.recipes.SILEXRecipes.SILEXRecipe; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; import com.hbm.util.I18nUtil; import com.hbm.util.WeightedRandomObject; -import com.hbm.inventory.RecipesCommon.ComparableStack; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; @@ -23,7 +21,6 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; diff --git a/src/main/java/com/hbm/handler/nei/SolidificationHandler.java b/src/main/java/com/hbm/handler/nei/SolidificationHandler.java index 42750936c..96a066b03 100644 --- a/src/main/java/com/hbm/handler/nei/SolidificationHandler.java +++ b/src/main/java/com/hbm/handler/nei/SolidificationHandler.java @@ -3,9 +3,16 @@ package com.hbm.handler.nei; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.recipes.SolidificationRecipes; +import codechicken.nei.recipe.TemplateRecipeHandler; + public class SolidificationHandler extends NEIUniversalHandler { public SolidificationHandler() { - super("ntmSolidification", "Solidification", ModBlocks.machine_solidifier, SolidificationRecipes.getRecipes()); + super("Solidification", ModBlocks.machine_solidifier, SolidificationRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmSolidification"; } } diff --git a/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java b/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java index b3f0b072e..a39208d98 100644 --- a/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/ZirnoxRecipeHandler.java @@ -6,6 +6,11 @@ import com.hbm.tileentity.machine.TileEntityReactorZirnox; public class ZirnoxRecipeHandler extends NEIUniversalHandler { public ZirnoxRecipeHandler() { - super("ntmZirnox", "ZIRNOX", ModBlocks.reactor_zirnox, TileEntityReactorZirnox.fuelMap); + super("ZIRNOX", ModBlocks.reactor_zirnox, TileEntityReactorZirnox.fuelMap); + } + + @Override + public String getKey() { + return "ntmZirnox"; } } diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java index 2a327f1fe..4eea00856 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationManager.java @@ -16,27 +16,27 @@ public class ChunkRadiationManager { @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { - proxy.receiveWorldLoad(event); + if(RadiationConfig.enableChunkRads) proxy.receiveWorldLoad(event); } @SubscribeEvent public void onWorldUnload(WorldEvent.Unload event) { - proxy.receiveWorldUnload(event); + if(RadiationConfig.enableChunkRads) proxy.receiveWorldUnload(event); } @SubscribeEvent public void onChunkLoad(ChunkDataEvent.Load event) { - proxy.receiveChunkLoad(event); + if(RadiationConfig.enableChunkRads) proxy.receiveChunkLoad(event); } @SubscribeEvent public void onChunkSave(ChunkDataEvent.Save event) { - proxy.receiveChunkSave(event); + if(RadiationConfig.enableChunkRads) proxy.receiveChunkSave(event); } @SubscribeEvent public void onChunkUnload(ChunkEvent.Unload event) { - proxy.receiveChunkUnload(event); + if(RadiationConfig.enableChunkRads) proxy.receiveChunkUnload(event); } int eggTimer = 0; @@ -44,7 +44,7 @@ public class ChunkRadiationManager { @SubscribeEvent public void updateSystem(TickEvent.ServerTickEvent event) { - if(event.side == Side.SERVER && event.phase == Phase.END) { + if(RadiationConfig.enableChunkRads && event.side == Side.SERVER && event.phase == Phase.END) { eggTimer++; diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 86e1e392e..d13c83de2 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -6,7 +6,7 @@ import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.hazard.modifier.*; -import com.hbm.hazard.transformer.HazardTransformerRadiationNBT; +import com.hbm.hazard.transformer.*; import com.hbm.hazard.type.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; @@ -153,23 +153,18 @@ public class HazardRegistry { HazardSystem.register(Items.pumpkin_pie, makeData(EXPLOSIVE, 1F)); HazardSystem.register(ball_dynamite, makeData(EXPLOSIVE, 2F)); - HazardSystem.register(ball_tnt, makeData(EXPLOSIVE, 3F)); - HazardSystem.register(ingot_semtex, makeData(EXPLOSIVE, 5F)); - HazardSystem.register(ingot_c4, makeData(EXPLOSIVE, 5F)); HazardSystem.register(stick_dynamite, makeData(EXPLOSIVE, 1F)); HazardSystem.register(stick_tnt, makeData(EXPLOSIVE, 1.5F)); HazardSystem.register(stick_semtex, makeData(EXPLOSIVE, 2.5F)); HazardSystem.register(stick_c4, makeData(EXPLOSIVE, 2.5F)); + HazardSystem.register(cordite, makeData(EXPLOSIVE, 2F)); + HazardSystem.register(ballistite, makeData(EXPLOSIVE, 1F)); + HazardSystem.register("dustCoal", makeData(COAL, powder)); HazardSystem.register("dustTinyCoal", makeData(COAL, powder_tiny)); HazardSystem.register("dustLignite", makeData(COAL, powder)); HazardSystem.register("dustTinyLignite", makeData(COAL, powder_tiny)); - - HazardSystem.register(block_semtex, makeData(EXPLOSIVE, 25F)); - HazardSystem.register(block_c4, makeData(EXPLOSIVE, 25F)); - HazardSystem.register(cordite, makeData(EXPLOSIVE, 2F)); - HazardSystem.register(ballistite, makeData(EXPLOSIVE, 1F)); HazardSystem.register(insert_polonium, makeData(RADIATION, 100F)); @@ -474,6 +469,7 @@ public class HazardRegistry { public static void registerTrafos() { HazardSystem.trafos.add(new HazardTransformerRadiationNBT()); + HazardSystem.trafos.add(new HazardTransformerRadiationME()); } private static HazardData makeData() { return new HazardData(); } diff --git a/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationME.java b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationME.java new file mode 100644 index 000000000..df387ac6c --- /dev/null +++ b/src/main/java/com/hbm/hazard/transformer/HazardTransformerRadiationME.java @@ -0,0 +1,33 @@ +package com.hbm.hazard.transformer; + +import java.util.List; + +import com.hbm.hazard.HazardEntry; +import com.hbm.hazard.HazardRegistry; +import com.hbm.hazard.HazardSystem; +import com.hbm.util.Compat; + +import net.minecraft.item.ItemStack; + +public class HazardTransformerRadiationME extends HazardTransformerBase { + + @Override + public void transformPre(ItemStack stack, List entries) { } + + @Override + public void transformPost(ItemStack stack, List entries) { + + if(stack.getItem().getClass().getName().equals("appeng.items.storage.ItemBasicStorageCell")) { + List stacks = Compat.scrapeItemFromME(stack); + float radiation = 0; + + for(ItemStack held : stacks) { + radiation += HazardSystem.getHazardLevelFromStack(held, HazardRegistry.RADIATION); + } + + if(radiation > 0) { + entries.add(new HazardEntry(HazardRegistry.RADIATION, radiation)); + } + } + } +} diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeBlinding.java b/src/main/java/com/hbm/hazard/type/HazardTypeBlinding.java index 6a5f207db..126fb1eba 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeBlinding.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeBlinding.java @@ -21,7 +21,7 @@ public class HazardTypeBlinding extends HazardTypeBase { public void onUpdate(EntityLivingBase target, float level, ItemStack stack) { if(!ArmorRegistry.hasProtection(target, 3, HazardClass.LIGHT)) { - target.addPotionEffect(new PotionEffect(Potion.blindness.id, (int)level, 0)); + target.addPotionEffect(new PotionEffect(Potion.blindness.id, (int)Math.ceil(level), 0)); } } diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java index 622e6af7d..0a7c90389 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeRadiation.java @@ -55,6 +55,9 @@ public class HazardTypeRadiation extends HazardTypeBase { level = HazardModifier.evalAllModifiers(stack, player, level, modifiers); + if(level < 1e-5) + return; + list.add(EnumChatFormatting.GREEN + "[" + I18nUtil.resolveKey("trait.radioactive") + "]"); String rad = "" + (Math.floor(level* 1000) / 1000); list.add(EnumChatFormatting.YELLOW + (rad + "RAD/s")); diff --git a/src/main/java/com/hbm/inventory/FluidTank.java b/src/main/java/com/hbm/inventory/FluidTank.java index bb81f70c3..497d122b5 100644 --- a/src/main/java/com/hbm/inventory/FluidTank.java +++ b/src/main/java/com/hbm/inventory/FluidTank.java @@ -126,16 +126,19 @@ public class FluidTank { } if(slots[in] != null && inType.getName().equals(type.getName()) && fluid + FluidContainerRegistry.getFluidContent(slots[in], type) <= maxFluid) { + + ItemStack emptyContainer = FluidContainerRegistry.getEmptyContainer(slots[in]); + if(slots[out] == null) { fluid += FluidContainerRegistry.getFluidContent(slots[in], type); - slots[out] = FluidContainerRegistry.getEmptyContainer(slots[in]); + slots[out] = emptyContainer; slots[in].stackSize--; if(slots[in].stackSize <= 0) slots[in] = null; - } else if(slots[out] != null && (FluidContainerRegistry.getEmptyContainer(slots[in]) == null || slots[out].getItem() == FluidContainerRegistry.getEmptyContainer(slots[in]).getItem()) && slots[out].stackSize < slots[out].getMaxStackSize()) { + } else if(slots[out] != null && (emptyContainer == null || (slots[out].getItem() == emptyContainer.getItem() && slots[out].getItemDamage() == emptyContainer.getItemDamage() && slots[out].stackSize < slots[out].getMaxStackSize()))) { fluid += FluidContainerRegistry.getFluidContent(slots[in], type); - if(FluidContainerRegistry.getEmptyContainer(slots[in]) != null) + if(emptyContainer != null) slots[out].stackSize++; slots[in].stackSize--; @@ -213,13 +216,14 @@ public class FluidTank { return; if(slots[in] != null && fluid - FluidContainerRegistry.getFluidContent(full, type) >= 0) { + ItemStack fullContainer = FluidContainerRegistry.getFullContainer(slots[in], type); if(slots[out] == null) { fluid -= FluidContainerRegistry.getFluidContent(full, type); slots[out] = full.copy(); slots[in].stackSize--; if(slots[in].stackSize <= 0) slots[in] = null; - } else if(slots[out] != null && slots[out].getItem() == FluidContainerRegistry.getFullContainer(slots[in], type).getItem() && slots[out].stackSize < slots[out].getMaxStackSize()) { + } else if(slots[out] != null && slots[out].getItem() == fullContainer.getItem() && slots[out].getItemDamage() == fullContainer.getItemDamage() && slots[out].stackSize < slots[out].getMaxStackSize()) { fluid -= FluidContainerRegistry.getFluidContent(full, type); slots[in].stackSize--; if(slots[in].stackSize <= 0) diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index e70a3fe3f..ad0448d8f 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -10,6 +10,7 @@ import static com.hbm.items.ModItems.*; import static com.hbm.blocks.ModBlocks.*; import static com.hbm.inventory.OreDictManager.DictFrame.*; +import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.config.GeneralConfig; import com.hbm.hazard.HazardData; import com.hbm.hazard.HazardEntry; @@ -78,6 +79,8 @@ public class OreDictManager { public static final String KEY_TOOL_SCREWDRIVER = "ntmscrewdriver"; public static final String KEY_TOOL_HANDDRILL = "ntmhanddrill"; public static final String KEY_TOOL_CHEMISTRYSET = "ntmchemistryset"; + + public static final String KEY_CIRCUIT_BISMUTH = "circuitVersatile"; /* * PREFIXES @@ -304,11 +307,11 @@ public class OreDictManager { AC227 .rad(HazardRegistry.ac227) .nugget(nugget_actinium) .billet(billet_actinium) .ingot(ingot_actinium) .dust(powder_actinium) .block(block_actinium) .dustSmall(powder_actinium_tiny); CO60 .rad(HazardRegistry.co60) .hot(1) .nugget(nugget_co60) .billet(billet_co60) .ingot(ingot_co60) .dust(powder_co60); AU198 .rad(HazardRegistry.au198) .hot(5) .nugget(nugget_au198) .billet(billet_au198) .ingot(ingot_au198) .dust(powder_au198); - PB209 .rad(HazardRegistry.pb209) .blinding(3F) .hot(7) .nugget(nugget_pb209) .billet(billet_pb209) .ingot(ingot_pb209); - SA326 .rad(HazardRegistry.sa326) .blinding(3F) .nugget(nugget_schrabidium) .billet(billet_schrabidium) .ingot(ingot_schrabidium) .dust(powder_schrabidium) .plate(plate_schrabidium) .block(block_schrabidium) .ore(ore_schrabidium, ore_gneiss_schrabidium, ore_nether_schrabidium) .oreNether(ore_nether_schrabidium); - SA327 .rad(HazardRegistry.sa327) .blinding(3F) .nugget(nugget_solinium) .billet(billet_solinium) .ingot(ingot_solinium) .block(block_solinium); - SBD .rad(HazardRegistry.sb) .blinding(1F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate); - SRN .rad(HazardRegistry.sr) .blinding(1F) .ingot(ingot_schraranium) .block(block_schraranium); + PB209 .rad(HazardRegistry.pb209) .blinding(50F) .hot(7) .nugget(nugget_pb209) .billet(billet_pb209) .ingot(ingot_pb209); + SA326 .rad(HazardRegistry.sa326) .blinding(50F) .nugget(nugget_schrabidium) .billet(billet_schrabidium) .ingot(ingot_schrabidium) .dust(powder_schrabidium) .plate(plate_schrabidium) .block(block_schrabidium) .ore(ore_schrabidium, ore_gneiss_schrabidium, ore_nether_schrabidium) .oreNether(ore_nether_schrabidium); + SA327 .rad(HazardRegistry.sa327) .blinding(50F) .nugget(nugget_solinium) .billet(billet_solinium) .ingot(ingot_solinium) .block(block_solinium); + SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate); + SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium); GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336); /* @@ -343,13 +346,13 @@ public class OreDictManager { EUPH .nugget(nugget_euphemium) .ingot(ingot_euphemium) .dust(powder_euphemium) .block(block_euphemium); DNT .nugget(nugget_dineutronium) .ingot(ingot_dineutronium) .dust(powder_dineutronium) .block(block_dineutronium); FIBER .ingot(ingot_fiberglass) .block(block_fiberglass); - ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos); + ASBESTOS .asbestos(1F) .ingot(ingot_asbestos) .dust(powder_asbestos) .block(block_asbestos) .ore(ore_asbestos, ore_gneiss_asbestos, basalt_asbestos, DictFrame.fromOne(stone_resource, EnumStoneType.ASBESTOS)); OSMIRIDIUM .nugget(nugget_osmiridium) .ingot(ingot_osmiridium); /* * DUST AND GEM ORES */ - S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, ore_meteor_sulfur) .oreNether(ore_nether_sulfur); + S .dust(sulfur) .block(block_sulfur) .ore(ore_sulfur, ore_nether_sulfur, basalt_sulfur, ore_meteor_sulfur, DictFrame.fromOne(stone_resource, EnumStoneType.SULFUR)) .oreNether(ore_nether_sulfur); KNO .dust(niter) .block(block_niter) .ore(ore_niter); F .dust(fluorite) .block(block_fluorite) .ore(ore_fluorite, basalt_fluorite); LIGNITE .gem(lignite) .dust(powder_lignite) .ore(ore_lignite); @@ -432,6 +435,9 @@ public class OreDictManager { OreDictionary.registerOre(KEY_TOOL_HANDDRILL, new ItemStack(hand_drill_desh, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set_boron, 1, OreDictionary.WILDCARD_VALUE)); + + OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_bismuth); + OreDictionary.registerOre(KEY_CIRCUIT_BISMUTH, circuit_arsenic); OreDictionary.registerOre(getReflector(), neutron_reflector); OreDictionary.registerOre("oreRareEarth", ore_rare); @@ -572,9 +578,15 @@ public class OreDictManager { public static ItemStack fromOne(Item item, Enum en) { return new ItemStack(item, 1, en.ordinal()); } + public static ItemStack fromOne(Block block, Enum en) { + return new ItemStack(block, 1, en.ordinal()); + } public static ItemStack fromOne(Item item, Enum en, int stacksize) { return new ItemStack(item, stacksize, en.ordinal()); } + public static ItemStack fromOne(Block block, Enum en, int stacksize) { + return new ItemStack(block, stacksize, en.ordinal()); + } /** Same as fromOne but with an array of ItemStacks. The array type is Object[] so that the ODM methods work with it. Generates ItemStacks for the entire enum class. */ public static Object[] fromAll(Item item, Class en) { Enum[] vals = en.getEnumConstants(); diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index b95348530..abc94ef59 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -114,15 +114,15 @@ public class Fluids { ULTRAHOTSTEAM = new FluidType( "ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600); COOLANT = new FluidType( "COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE); LAVA = new FluidType( "LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200); - DEUTERIUM = new FluidTypeCombustible( "DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE); - TRITIUM = new FluidTypeCombustible( "TRITIUM", 0x000099, 3, 4, 0, EnumSymbol.RADIATION); + DEUTERIUM = new FluidTypeCombustible( "DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000); + TRITIUM = new FluidTypeCombustible( "TRITIUM", 0x000099, 3, 4, 0, EnumSymbol.RADIATION).setCombustionEnergy(FuelGrade.HIGH, 10_000).setHeatEnergy(5_000); OIL = new FluidTypeFlammable( "OIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(0x424242, ExtContainer.CANISTER); HOTOIL = new FluidTypeFlammable( "HOTOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350); HEAVYOIL = new FluidTypeFlammable( "HEAVYOIL", 0x141312, 2, 1, 0, EnumSymbol.NONE).addContainers(0x513F39, ExtContainer.CANISTER); BITUMEN = new FluidType( "BITUMEN", 0x1f2426, 2, 0, 0, EnumSymbol.NONE).addContainers(0x5A5877, ExtContainer.CANISTER); SMEAR = new FluidTypeFlammable( "SMEAR", 0x190f01, 2, 1, 0, EnumSymbol.NONE).setHeatEnergy(50_000).addContainers(0x624F3B, ExtContainer.CANISTER); - HEATINGOIL = new FluidTypeCombustible( "HEATINGOIL", 0x211806, 2, 2, 0, EnumSymbol.NONE).setHeatEnergy(75_000).addContainers(0x694235, ExtContainer.CANISTER); //TODO: and so forth - RECLAIMED = new FluidTypeCombustible( "RECLAIMED", 0x332b22, 2, 2, 0, EnumSymbol.NONE).setHeatEnergy(100_000).addContainers(0xF65723, ExtContainer.CANISTER); + HEATINGOIL = new FluidTypeCombustible( "HEATINGOIL", 0x211806, 2, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.LOW, 100_000).setHeatEnergy(150_000).addContainers(0x694235, ExtContainer.CANISTER); //TODO: and so forth + RECLAIMED = new FluidTypeCombustible( "RECLAIMED", 0x332b22, 2, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.LOW, 200_000).setHeatEnergy(100_000).addContainers(0xF65723, ExtContainer.CANISTER); PETROIL = new FluidTypeCombustible( "PETROIL", 0x44413d, 1, 3, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.MEDIUM, 300_000).setHeatEnergy(125_000).addContainers(0x2369F6, ExtContainer.CANISTER); LUBRICANT = new FluidType( "LUBRICANT", 0x606060, 2, 1, 0, EnumSymbol.NONE).addContainers(0xF1CC05, ExtContainer.CANISTER); NAPHTHA = new FluidTypeFlammable( "NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(0x5F6D44, ExtContainer.CANISTER); @@ -173,8 +173,8 @@ public class Fluids { NAPHTHA_CRACK = new FluidTypeFlammable( "NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE); LIGHTOIL_CRACK = new FluidTypeFlammable( "LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE); DIESEL_CRACK = new FluidTypeCombustible( "DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).setCombustionEnergy(FuelGrade.HIGH, 450_000).setHeatEnergy(200_000); - AROMATICS = new FluidTypeFlammable( "AROMATICS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE); - UNSATURATEDS = new FluidTypeFlammable( "UNSATURATEDS", 0xfffeed, 1, 4, 1, EnumSymbol.NONE); + AROMATICS = new FluidTypeFlammable( "AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE); + UNSATURATEDS = new FluidTypeFlammable( "UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE); SALIENT = new FluidType(69, "SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE); XPJUICE = new FluidType( "XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE); ENDERJUICE = new FluidType( "ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 7a27b4aca..c28691d1e 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -164,7 +164,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new OreDictStack(PB.plate(), 16), new OreDictStack(OreDictManager.getReflector(), 4), new ComparableStack(ModItems.singularity_counter_resonant, 1), new ComparableStack(ModItems.singularity_super_heated, 1), new ComparableStack(ModItems.powder_power, 4), },200); makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.hull_small_aluminium, 4), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.wire_aluminium, 6), new ComparableStack(ModItems.canister_full, 3, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.ordinal()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.plate_polymer, 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); + makeRecipe(new ComparableStack(ModItems.missile_carrier, 1), new AStack[] {new ComparableStack(ModItems.fluid_barrel_full, 16, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_medium, 4), new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.hull_big_titanium, 6), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.hull_small_aluminium, 12), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.plate_polymer, 128), new ComparableStack(ModBlocks.det_cord, 8), new ComparableStack(ModItems.circuit_targeting_tier3, 12), new ComparableStack(ModItems.circuit_targeting_tier4, 3), },4800); makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 2), },100); makeRecipe(new ComparableStack(ModItems.warhead_generic_medium, 1), new AStack[] {new OreDictStack(TI.plate(), 8), new OreDictStack(STEEL.plate(), 5), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_generic_large, 1), new AStack[] {new OreDictStack(TI.plate(), 15), new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), },200); @@ -178,6 +178,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150); makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200); makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), },300); + makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new OreDictStack(OreDictManager.getReflector(), 6), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), },500); makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 6), },300); @@ -188,15 +189,15 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.thruster_medium, 1), new AStack[] {new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(STEEL.plate(), 2), new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.wire_copper, 4), },150); makeRecipe(new ComparableStack(ModItems.thruster_large, 1), new AStack[] {new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.deco_pipe_quad, 3), new ComparableStack(ModItems.board_copper, 6), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModBlocks.reactor_research, 1), },600); - makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.ordinal()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); + makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new ComparableStack(ModItems.plate_polymer, 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.plate_polymer, 6), new ComparableStack(Items.diamond, 1), },400); makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.wire_red_copper, 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(Items.diamond, 1), },400); makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.board_copper, 24), new ComparableStack(ModItems.circuit_targeting_tier5, 2), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450); makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit_targeting_tier5, 6), new ComparableStack(ModItems.circuit_targeting_tier6, 2), },1000); - makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.ordinal()), new ComparableStack(ModItems.photo_panel, 16), new ComparableStack(ModItems.thruster_nuclear, 1), new ComparableStack(ModItems.ingot_uranium_fuel, 6), new ComparableStack(ModItems.circuit_targeting_tier5, 6), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },1200); - makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.ordinal()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.plate_polymer, 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); - makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.ordinal()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.plate_polymer, 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); + makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), new ComparableStack(ModItems.photo_panel, 16), new ComparableStack(ModItems.thruster_nuclear, 1), new ComparableStack(ModItems.ingot_uranium_fuel, 6), new ComparableStack(ModItems.circuit_targeting_tier5, 6), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },1200); + makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.centrifuge_element, 4), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.plate_polymer, 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); + makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.drill_titanium, 2), new ComparableStack(ModItems.circuit_targeting_tier4, 2), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.thruster_small, 1), new ComparableStack(ModItems.photo_panel, 12), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.plate_polymer, 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600); makeRecipe(new ComparableStack(ModItems.chopper_head, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_glass, 2), new ComparableStack(ModBlocks.fwatz_computer, 1), new OreDictStack(CMB.ingot(), 22), new ComparableStack(ModItems.wire_magnetized_tungsten, 4), },300); makeRecipe(new ComparableStack(ModItems.chopper_gun, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(CMB.ingot(), 2), new ComparableStack(ModItems.wire_tungsten, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 1), new ComparableStack(ModItems.motor, 1), },150); makeRecipe(new ComparableStack(ModItems.chopper_torso, 1), new AStack[] {new OreDictStack(CMB.ingot(), 26), new ComparableStack(ModBlocks.fwatz_computer, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.chopper_blades, 2), },350); @@ -240,7 +241,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.upgrade_health, 1), new AStack[] {new ComparableStack(ModItems.upgrade_template, 1), new ComparableStack(Items.glowstone_dust, 6), new OreDictStack(TI.dust(), 4), },500); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] {new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(DESH.ingot(), 8), new ComparableStack(ModItems.powder_power, 16), new ComparableStack(ModItems.crystal_lithium, 4), new ComparableStack(ModItems.circuit_schrabidium, 1), }, 200); makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new AStack[] {new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_afterburn_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new ComparableStack(ModItems.crystal_lithium, 8), new ComparableStack(ModItems.circuit_tantalium, 16), }, 300); - makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_afterburn_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new ComparableStack(ModItems.crystal_lithium, 16), new ComparableStack(ModItems.circuit_bismuth, 1), }, 500); + makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_3, 1), new AStack[] {new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_afterburn_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new ComparableStack(ModItems.crystal_lithium, 16), new OreDictStack(KEY_CIRCUIT_BISMUTH), }, 500); makeRecipe(new ComparableStack(ModItems.fuse, 1), new AStack[] {new OreDictStack(STEEL.plate(), 2), new ComparableStack(Blocks.glass_pane, 1), new ComparableStack(ModItems.wire_aluminium, 1), },100); makeRecipe(new ComparableStack(ModItems.redcoil_capacitor, 1), new AStack[] {new OreDictStack(GOLD.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), new ComparableStack(ModItems.coil_advanced_alloy, 6), new ComparableStack(Blocks.redstone_block, 2), },200); makeRecipe(new ComparableStack(ModItems.titanium_filter, 1), new AStack[] {new OreDictStack(PB.plate(), 3), new ComparableStack(ModItems.fuse, 1), new ComparableStack(ModItems.wire_tungsten, 4), new OreDictStack(TI.plate(), 6), new OreDictStack(U238.ingot(), 2), },200); @@ -302,7 +303,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300); - makeRecipe(new ComparableStack(ModBlocks.fwatz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 24), new OreDictStack(DIAMOND.dust(), 8), new OreDictStack(MAGTUNG.dust(), 12), new OreDictStack(DESH.dust(), 8), new ComparableStack(ModItems.upgrade_power_3, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.circuit_bismuth, 8)},450); + makeRecipe(new ComparableStack(ModBlocks.fwatz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 24), new OreDictStack(DIAMOND.dust(), 8), new OreDictStack(MAGTUNG.dust(), 12), new OreDictStack(DESH.dust(), 8), new ComparableStack(ModItems.upgrade_power_3, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new OreDictStack(KEY_CIRCUIT_BISMUTH, 8)},450); makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit_targeting_tier3, 1), new ComparableStack(ModItems.wire_gold, 6), new OreDictStack("dyeGray", 6), },300); makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit_targeting_tier2, 1), new ComparableStack(ModItems.wire_aluminium, 6), new OreDictStack("dyeBlue", 4), },300); makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.hull_big_steel, 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit_targeting_tier2, 2), new ComparableStack(ModItems.wire_copper, 6), new OreDictStack("dyeYellow", 6), },300); @@ -459,7 +460,7 @@ public class AssemblerRecipes { new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.circuit_red_copper, 8), - new ComparableStack(ModItems.circuit_bismuth, 1) + new OreDictStack(KEY_CIRCUIT_BISMUTH, 1) }, 600); makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { new ComparableStack(ModItems.hull_big_steel, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 43045d169..3a4a67f97 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -93,6 +93,12 @@ public class ChemplantRecipes { .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.AROMATICS, 500)) .outputItems(new ItemStack(ModItems.ball_tnt, 4))); + recipes.add(new ChemRecipe(89, "DYNAMITE", 50) + .inputItems( + new ComparableStack(Items.sugar), + new OreDictStack(KNO.dust()), + new OreDictStack("sand")) + .outputItems(new ItemStack(ModItems.ball_dynamite, 2))); recipes.add(new ChemRecipe(84, "C4", 150) .inputItems(new OreDictStack(KNO.dust())) .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500)) diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index 9076afe63..9983b8613 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -75,6 +75,7 @@ public class PressRecipes { makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_raw), ModItems.circuit_aluminium); makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_bismuth_raw), ModItems.circuit_bismuth); + makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_arsenic_raw), ModItems.circuit_arsenic); makeRecipe(StampType.CIRCUIT, new ComparableStack(ModItems.circuit_tantalium_raw), ModItems.circuit_tantalium); makeRecipe(StampType.C357, new ComparableStack(ModItems.assembly_iron), ModItems.gun_revolver_iron_ammo); diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 138069726..b066e168a 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -252,7 +252,7 @@ public class AnvilRecipes { }, new AnvilOutput(new ItemStack(ModItems.demon_core_open))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(POLYMER.dust(), 2), new OreDictStack(DURA.ingot(), 1)}, + new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(DURA.ingot(), 1)}, new AnvilOutput(new ItemStack(ModItems.plate_desh, 4))).setTier(3)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new ComparableStack(ModItems.nugget_bismuth, 2), new OreDictStack(U238.billet(), 2), new OreDictStack(NB.dust(), 1)}, diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 014ef133a..7a07a051d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -271,6 +271,8 @@ public class ModItems { public static Item nugget_lead; public static Item ingot_bismuth; public static Item nugget_bismuth; + public static Item ingot_arsenic; + public static Item nugget_arsenic; public static Item ingot_tantalium; public static Item nugget_tantalium; public static Item ingot_niobium; @@ -544,6 +546,8 @@ public class ModItems { public static Item circuit_schrabidium; public static Item circuit_bismuth_raw; public static Item circuit_bismuth; + public static Item circuit_arsenic_raw; + public static Item circuit_arsenic; public static Item circuit_tantalium_raw; public static Item circuit_tantalium; public static Item crt_display; @@ -938,6 +942,7 @@ public class ModItems { public static Item can_luna; public static Item can_bepis; public static Item can_breen; + public static Item can_mug; public static Item mucho_mango; public static Item bottle_empty; public static Item bottle_nuka; @@ -1208,6 +1213,7 @@ public class ModItems { public static Item mirror_tool; public static Item rbmk_tool; public static Item coltan_tool; + public static Item power_net_tool; public static Item template_folder; public static Item journal_pip; @@ -2387,6 +2393,7 @@ public class ModItems { public static Item bucket_acid; public static Item bucket_toxic; public static Item bucket_schrabidic_acid; + public static Item bucket_sulfuric_acid; public static Item door_metal; public static Item door_office; @@ -2811,6 +2818,8 @@ public class ModItems { nugget_lead = new Item().setUnlocalizedName("nugget_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_lead"); ingot_bismuth = new ItemCustomLore().setUnlocalizedName("ingot_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth"); nugget_bismuth = new Item().setUnlocalizedName("nugget_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_bismuth"); + ingot_arsenic = new ItemCustomLore().setUnlocalizedName("ingot_arsenic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_arsenic"); + nugget_arsenic = new Item().setUnlocalizedName("nugget_arsenic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_arsenic"); ingot_tantalium = new ItemCustomLore().setUnlocalizedName("ingot_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_tantalium"); nugget_tantalium = new ItemCustomLore().setUnlocalizedName("nugget_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_tantalium"); ingot_niobium = new Item().setUnlocalizedName("ingot_niobium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_niobium"); @@ -3098,6 +3107,8 @@ public class ModItems { circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_schrabidium"); circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw"); circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth"); + circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw"); + circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic"); circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw"); circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium"); crt_display = new Item().setUnlocalizedName("crt_display").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crt_display"); @@ -3458,8 +3469,9 @@ public class ModItems { can_mrsugar = new ItemEnergy().setUnlocalizedName("can_mrsugar").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_mrsugar"); can_overcharge = new ItemEnergy().setUnlocalizedName("can_overcharge").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_overcharge"); can_luna = new ItemEnergy().setUnlocalizedName("can_luna").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_luna"); - can_bepis = new ItemEnergy().setUnlocalizedName("can_bepis").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_bepis");; + can_bepis = new ItemEnergy().setUnlocalizedName("can_bepis").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_bepis"); can_breen = new ItemEnergy().setUnlocalizedName("can_breen").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_breen"); + can_mug = new ItemEnergy().setUnlocalizedName("can_mug").setContainerItem(ModItems.can_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_mug"); bottle_empty = new Item().setUnlocalizedName("bottle_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bottle_empty"); bottle_nuka = new ItemEnergy().setUnlocalizedName("bottle_nuka").setContainerItem(ModItems.bottle_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bottle_nuka"); bottle_cherry = new ItemEnergy().setUnlocalizedName("bottle_cherry").setContainerItem(ModItems.bottle_empty).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bottle_cherry"); @@ -4730,6 +4742,7 @@ public class ModItems { mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool"); rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool"); coltan_tool = new ItemColtanCompass().setUnlocalizedName("coltan_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coltass"); + power_net_tool = new ItemPowerNetTool().setUnlocalizedName("power_net_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":power_net_tool"); 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"); @@ -5470,6 +5483,7 @@ public class ModItems { bucket_acid = new ItemModBucket(ModBlocks.acid_block).setUnlocalizedName("bucket_acid").setContainerItem(Items.bucket).setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":bucket_acid"); bucket_toxic = new ItemModBucket(ModBlocks.toxic_block).setUnlocalizedName("bucket_toxic").setContainerItem(Items.bucket).setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":bucket_toxic"); bucket_schrabidic_acid = new ItemModBucket(ModBlocks.schrabidic_block).setUnlocalizedName("bucket_schrabidic_acid").setContainerItem(Items.bucket).setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":bucket_schrabidic_acid"); + bucket_sulfuric_acid = new ItemModBucket(ModBlocks.sulfuric_acid_block).setUnlocalizedName("bucket_sulfuric_acid").setContainerItem(Items.bucket).setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":bucket_sulfuric_acid"); door_metal = new ItemModDoor().setUnlocalizedName("door_metal").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_metal"); door_office = new ItemModDoor().setUnlocalizedName("door_office").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_office"); @@ -5619,6 +5633,7 @@ public class ModItems { BucketHandler.INSTANCE.buckets.put(ModBlocks.acid_block, ModItems.bucket_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.toxic_block, ModItems.bucket_toxic); BucketHandler.INSTANCE.buckets.put(ModBlocks.schrabidic_block, ModItems.bucket_schrabidic_acid); + BucketHandler.INSTANCE.buckets.put(ModBlocks.sulfuric_acid_block, ModItems.bucket_sulfuric_acid); MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE); } @@ -5678,6 +5693,7 @@ public class ModItems { GameRegistry.registerItem(ingot_tcalloy, ingot_tcalloy.getUnlocalizedName()); GameRegistry.registerItem(ingot_lead, ingot_lead.getUnlocalizedName()); GameRegistry.registerItem(ingot_bismuth, ingot_bismuth.getUnlocalizedName()); + GameRegistry.registerItem(ingot_arsenic, ingot_arsenic.getUnlocalizedName()); GameRegistry.registerItem(ingot_tantalium, ingot_tantalium.getUnlocalizedName()); GameRegistry.registerItem(ingot_niobium, ingot_niobium.getUnlocalizedName()); GameRegistry.registerItem(ingot_beryllium, ingot_beryllium.getUnlocalizedName()); @@ -5998,6 +6014,7 @@ public class ModItems { GameRegistry.registerItem(nugget_actinium, nugget_actinium.getUnlocalizedName()); GameRegistry.registerItem(nugget_lead, nugget_lead.getUnlocalizedName()); GameRegistry.registerItem(nugget_bismuth, nugget_bismuth.getUnlocalizedName()); + GameRegistry.registerItem(nugget_arsenic, nugget_arsenic.getUnlocalizedName()); GameRegistry.registerItem(nugget_tantalium, nugget_tantalium.getUnlocalizedName()); GameRegistry.registerItem(nugget_beryllium, nugget_beryllium.getUnlocalizedName()); GameRegistry.registerItem(nugget_schrabidium, nugget_schrabidium.getUnlocalizedName()); @@ -6210,6 +6227,8 @@ public class ModItems { GameRegistry.registerItem(circuit_schrabidium, circuit_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(circuit_bismuth_raw, circuit_bismuth_raw.getUnlocalizedName()); GameRegistry.registerItem(circuit_bismuth, circuit_bismuth.getUnlocalizedName()); + GameRegistry.registerItem(circuit_arsenic_raw, circuit_arsenic_raw.getUnlocalizedName()); + GameRegistry.registerItem(circuit_arsenic, circuit_arsenic.getUnlocalizedName()); GameRegistry.registerItem(circuit_tantalium_raw, circuit_tantalium_raw.getUnlocalizedName()); GameRegistry.registerItem(circuit_tantalium, circuit_tantalium.getUnlocalizedName()); GameRegistry.registerItem(crt_display, crt_display.getUnlocalizedName()); @@ -6836,6 +6855,7 @@ public class ModItems { GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName()); GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); GameRegistry.registerItem(coltan_tool, coltan_tool.getUnlocalizedName()); + GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); @@ -7602,6 +7622,7 @@ public class ModItems { GameRegistry.registerItem(can_luna, can_luna.getUnlocalizedName()); GameRegistry.registerItem(can_bepis, can_bepis.getUnlocalizedName()); GameRegistry.registerItem(can_breen, can_breen.getUnlocalizedName()); + GameRegistry.registerItem(can_mug, can_mug.getUnlocalizedName()); //Coffee GameRegistry.registerItem(coffee, coffee.getUnlocalizedName()); @@ -8000,6 +8021,7 @@ public class ModItems { GameRegistry.registerItem(bucket_acid, bucket_acid.getUnlocalizedName()); GameRegistry.registerItem(bucket_toxic, bucket_toxic.getUnlocalizedName()); GameRegistry.registerItem(bucket_schrabidic_acid, bucket_schrabidic_acid.getUnlocalizedName()); + GameRegistry.registerItem(bucket_sulfuric_acid, bucket_sulfuric_acid.getUnlocalizedName()); //Door Items GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorFSB.java b/src/main/java/com/hbm/items/armor/ArmorFSB.java index be08d063c..d86dd00bb 100644 --- a/src/main/java/com/hbm/items/armor/ArmorFSB.java +++ b/src/main/java/com/hbm/items/armor/ArmorFSB.java @@ -27,6 +27,7 @@ import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.resources.I18n; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; @@ -530,6 +531,9 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel { List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.expand(3, 0, 3)); for(Entity e : entities) { + + if(e instanceof EntityItem) + continue; Vec3 vec = Vec3.createVectorHelper(player.posX - e.posX, 0, player.posZ - e.posZ); diff --git a/src/main/java/com/hbm/items/block/ItemBlockBase.java b/src/main/java/com/hbm/items/block/ItemBlockBase.java index ee230584b..25d85b537 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBase.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBase.java @@ -2,7 +2,9 @@ package com.hbm.items.block; import java.util.List; +import com.hbm.blocks.BlockEnumMulti; import com.hbm.blocks.ITooltipProvider; +import com.hbm.util.EnumUtil; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; @@ -14,6 +16,31 @@ public class ItemBlockBase extends ItemBlock { public ItemBlockBase(Block block) { super(block); + + if(block instanceof BlockEnumMulti) { + this.setMaxDamage(0); + this.setHasSubtypes(true); + } + } + + @Override + public int getMetadata(int meta) { + if(field_150939_a instanceof BlockEnumMulti) + return meta; + else + return super.getMetadata(meta); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + + if(field_150939_a instanceof BlockEnumMulti && ((BlockEnumMulti)field_150939_a).multiName) { + + Enum num = EnumUtil.grabEnumSafely(((BlockEnumMulti)field_150939_a).theEnum, stack.getItemDamage()); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + } else { + return super.getUnlocalizedName(stack); + } } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java b/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java index 6e67efada..f3e190dc5 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryIcon.java @@ -13,7 +13,6 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; -import net.minecraft.util.MathHelper; import net.minecraft.util.StatCollector; public class ItemChemistryIcon extends Item { @@ -59,6 +58,12 @@ public class ItemChemistryIcon extends Item { @SideOnly(Side.CLIENT) public IIcon getIconFromDamage(int i) { - return this.icons[ChemplantRecipes.indexMapping.get(i).listing % this.icons.length]; + ChemRecipe rec = ChemplantRecipes.indexMapping.get(i); + + if(rec != null) { + return this.icons[rec.listing % this.icons.length]; + } else { + return ModItems.nothing.getIconFromDamage(i); + } } } diff --git a/src/main/java/com/hbm/items/machine/ItemStamp.java b/src/main/java/com/hbm/items/machine/ItemStamp.java index ea8c3b4c9..fe6986d90 100644 --- a/src/main/java/com/hbm/items/machine/ItemStamp.java +++ b/src/main/java/com/hbm/items/machine/ItemStamp.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -29,7 +28,7 @@ public class ItemStamp extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - if(this.type == StampType.PLATE || this.type == StampType.WIRE || this.type == StampType.CIRCUIT) + if((this.type == StampType.PLATE || this.type == StampType.WIRE || this.type == StampType.CIRCUIT) && this.getMaxDamage() > 0) list.add("[CREATED USING TEMPLATE FOLDER]"); } diff --git a/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java b/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java index 58099e460..53957b239 100644 --- a/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java +++ b/src/main/java/com/hbm/items/tool/ItemCraftingDegradation.java @@ -10,6 +10,7 @@ public class ItemCraftingDegradation extends Item { public ItemCraftingDegradation(int durability) { this.setMaxStackSize(1); this.setMaxDamage(durability); + this.setNoRepair(); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java new file mode 100644 index 000000000..d1e5eef45 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -0,0 +1,110 @@ +package com.hbm.items.tool; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ChatBuilder; + +import api.hbm.energy.IEnergyConductor; +import api.hbm.energy.IEnergyConnector; +import api.hbm.energy.IPowerNet; +import api.hbm.energy.PowerNet; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ItemPowerNetTool extends Item { + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fX, float fY, float fZ) { + + Block b = world.getBlock(x, y, z); + + if(b instanceof BlockDummyable) { + int[] pos = ((BlockDummyable) b).findCore(world, x, y, z); + + if(pos != null) { + x = pos[0]; + y = pos[1]; + z = pos[2]; + } + } + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof IEnergyConductor)) + return false; + + if(world.isRemote) + return true; + + IEnergyConductor con = (IEnergyConductor) te; + IPowerNet net = con.getPowerNet(); + + if(net == null) { + player.addChatComponentMessage(ChatBuilder.start("Error: No network found! This should be impossible!").color(EnumChatFormatting.RED).flush()); + return true; + } + + if(!(net instanceof PowerNet)) { + player.addChatComponentMessage(ChatBuilder.start("Error: Cannot print diagnostic for non-standard power net implementation!").color(EnumChatFormatting.RED).flush()); + } + + PowerNet network = (PowerNet) net; + String id = Integer.toHexString(net.hashCode()); + + player.addChatComponentMessage(ChatBuilder.start("Start of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); + player.addChatComponentMessage(ChatBuilder.start("Links: " + network.getLinks().size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("Proxies: " + network.getProxies().size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("Subscribers: " + network.getSubscribers().size()).color(EnumChatFormatting.YELLOW).flush()); + player.addChatComponentMessage(ChatBuilder.start("End of diagnostic for network " + id).color(EnumChatFormatting.GOLD).flush()); + + for(IEnergyConductor link : network.getLinks()) { + Vec3 pos = link.getDebugParticlePos(); + + boolean errored = link.getPowerNet() != net; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", errored ? 0xff0000 : 0xffff00); + data.setFloat("scale", 0.5F); + data.setString("text", id); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); + } + + for(IEnergyConnector subscriber : network.getSubscribers()) { + Vec3 pos = subscriber.getDebugParticlePos(); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", id); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, pos.xCoord, pos.yCoord, pos.zCoord), new TargetPoint(world.provider.dimensionId, pos.xCoord, pos.yCoord, pos.zCoord, radius)); + } + + return true; + } + + private static final int radius = 20; + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.RED + "Right-click cable to analyze the power net."); + list.add(EnumChatFormatting.RED + "Links (cables, poles, etc.) are YELLOW"); + list.add(EnumChatFormatting.RED + "Subscribers (any receiver) are BLUE"); + list.add(EnumChatFormatting.RED + "Links with mismatching network info (BUGGED!) are RED"); + list.add(EnumChatFormatting.RED + "Displays stats such as link and subscriber count"); + list.add(EnumChatFormatting.RED + "Proxies are connection points for multiblock links (e.g. 4 for substations)"); + list.add(EnumChatFormatting.RED + "Particles only spawn in a " + radius + " block radius!"); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemRBMKTool.java b/src/main/java/com/hbm/items/tool/ItemRBMKTool.java index e5f1da2c3..34f5ef405 100644 --- a/src/main/java/com/hbm/items/tool/ItemRBMKTool.java +++ b/src/main/java/com/hbm/items/tool/ItemRBMKTool.java @@ -17,7 +17,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index dd61128ba..3faa74be1 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -9,9 +9,11 @@ import com.hbm.lib.Library; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -27,10 +29,17 @@ public class ItemWandD extends Item { if(pos != null) { - EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world); + List zombies = world.getEntitiesWithinAABB(EntityZombie.class, AxisAlignedBB.getBoundingBox(pos.blockX - 2, pos.blockY - 2, pos.blockZ - 2, pos.blockX + 2, pos.blockY + 2, pos.blockZ + 2)); + + for(EntityZombie zombie : zombies) { + zombie.setChild(true); + zombie.setCurrentItemOrArmor(4, new ItemStack(ModItems.gas_mask_m65)); + } + + /*EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world); tunneler.setPosition(pos.blockX, pos.blockY + 1, pos.blockZ); tunneler.onSpawnWithEgg(null); - world.spawnEntityInWorld(tunneler); + world.spawnEntityInWorld(tunneler);*/ //CellularDungeonFactory.meteor.generate(world, x, y, z, world.rand); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index a5442ede4..691f6c114 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -3,6 +3,7 @@ package com.hbm.lib; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.config.GeneralConfig; import com.hbm.config.WorldConfig; import com.hbm.items.ModItems; @@ -116,6 +117,12 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 15, 30, ModBlocks.cluster_titanium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); + + for(int k = 0; k < WorldConfig.randomSpawn; k++) { + BlockMotherOfAllOres.shuffleOverride(rand); + DungeonToolbox.generateOre(world, rand, i, j, 1, 10, 4, 30, ModBlocks.ore_random); + } + BlockMotherOfAllOres.resetOverride(); if(GeneralConfig.enable528ColtanSpawn) { DungeonToolbox.generateOre(world, rand, i, j, GeneralConfig.coltanRate, 4, 15, 40, ModBlocks.ore_coltan); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 483b0368b..6d93c8f8b 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -74,6 +74,8 @@ public class Library { public static String SolsticeUnlimitd = "f5574fd2-ec28-4927-9d11-3c0c731771f4"; public static String FrizzleFrazzle = "fc4cc2ee-12e8-4097-b26a-1c6cb1b96531"; public static String the_NCR = "28ae585f-4431-4491-9ce8-3def6126e3c6"; + public static String Barnaby99_x = "711aaf78-a862-4b7e-921a-216349716e9a"; + public static String Ma118 = "1121cb7a-8773-491f-8e2b-221290c93d81"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 5de3b052f..5df6e4e57 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (4179)"; + public static final String VERSION = "1.0.27 BETA (4193)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index faa039536..ac1474ef8 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -678,7 +678,9 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBattery()); RenderingRegistry.registerBlockHandler(new RenderAnvil()); RenderingRegistry.registerBlockHandler(new RenderCrystal()); - RenderingRegistry.registerBlockHandler(new RenderTestCable()); + RenderingRegistry.registerBlockHandler(new RenderCable()); + RenderingRegistry.registerBlockHandler(new RenderCableClassic()); + RenderingRegistry.registerBlockHandler(new RenderTestPipe()); RenderingRegistry.registerBlockHandler(new RenderBlockCT()); RenderingRegistry.registerBlockHandler(new RenderDetCord()); RenderingRegistry.registerBlockHandler(new RenderBlockMultipass()); @@ -1161,17 +1163,20 @@ public class ClientProxy extends ServerProxy { } } } - - double motionX = BobMathUtil.safeClamp(p.motionX + moX, -5, 5); - double motionY = BobMathUtil.safeClamp(p.motionY + moY, -2, 2); - double motionZ = BobMathUtil.safeClamp(p.motionZ + moZ, -5, 5); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, motionX * 2, motionY * 2, motionZ * 2)); - Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, motionX * 2, motionY * 2, motionZ * 2)); + double mX2 = BobMathUtil.safeClamp(p.motionX + moX * 2, -5, 5); + double mY2 = BobMathUtil.safeClamp(p.motionY + moY * 2, -5, 5); + double mZ2 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -5, 5); + double mX3 = BobMathUtil.safeClamp(p.motionX + moX * 2, -10, 10); + double mY3 = BobMathUtil.safeClamp(p.motionY + moY * 2, -10, 10); + double mZ3 = BobMathUtil.safeClamp(p.motionZ + moZ * 2, -10, 10); + + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, mX2, mY2, mZ2)); + Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, mX2, mY2, mZ2)); if(particleSetting == 0) { - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, motionX * 3, motionY * 3, motionZ * 3)); - Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, motionX * 3, motionY * 3, motionZ * 3)); + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, mX3, mY3, mZ3)); + Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, mX3, mY3, mZ3)); } } } @@ -1566,6 +1571,15 @@ public class ClientProxy extends ServerProxy { if("amat".equals(type)) { Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale"))); } + + if("debug".equals(type)) { + String t = data.getString("text"); + int color = data.getInteger("color"); + float scale = data.getFloat("scale"); + ParticleText text = new ParticleText(world, x, y, z, color, t); + text.multipleParticleScaleBy(scale); + Minecraft.getMinecraft().effectRenderer.addEffect(text); + } } private HashMap vanished = new HashMap(); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index ab51cbad6..43ec20b93 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -242,7 +242,9 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', ModItems.wire_red_copper, 'T', ModItems.coil_tungsten }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); + addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', STEEL.ingot(), 'P', IRON.plate() }); @@ -727,7 +729,7 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.ams_catalyst_euphemium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_dagaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, EUPH.dust(), EUPH.dust(), EUPH.dust(), EUPH.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_schrabidium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, SA326.dust(), SA326.dust(), SA326.dust(), SA326.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', ModItems.circuit_bismuth }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', KEY_CIRCUIT_BISMUTH }); addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModBlocks.sellafield_core, 'L', ModItems.hull_small_steel }); addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 54d82a424..90313f632 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -5,7 +5,6 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.BehaviorProjectileDispense; import net.minecraft.dispenser.IPosition; import net.minecraft.entity.IProjectile; -import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.Item.ToolMaterial; @@ -39,6 +38,7 @@ import org.apache.logging.log4j.Logger; import com.google.common.collect.ImmutableList; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.config.*; import com.hbm.creativetabs.*; import com.hbm.entity.effect.*; @@ -72,7 +72,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.util.ArmorUtil; -import com.hbm.world.feature.OreLayer; +import com.hbm.world.feature.OreCave; import com.hbm.world.feature.SchistStratum; import com.hbm.world.generator.CellularDungeonFactory; @@ -973,8 +973,14 @@ public class MainRegistry { proxy.registerMissileItems(); + BlockMotherOfAllOres.init(); + //expand for the largest entity we have (currently Quackos who is 17.5m in diameter, that's one fat duck) World.MAX_ENTITY_RADIUS = Math.max(World.MAX_ENTITY_RADIUS, 8.75); + + new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur + new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos + //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); } @EventHandler @@ -991,8 +997,6 @@ public class MainRegistry { SchistStratum schist = new SchistStratum(); MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre - //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); - OreDictManager oreMan = new OreDictManager(); MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 10d4ea820..fb18842c8 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -384,10 +384,16 @@ public class ModEventHandler { return; if(entity instanceof EntityZombie) { - if(rand.nextInt(64) == 0) - entity.setCurrentItemOrArmor(4, new ItemStack(ModItems.gas_mask_m65, 1, world.rand.nextInt(100))); - if(rand.nextInt(128) == 0) - entity.setCurrentItemOrArmor(4, new ItemStack(ModItems.gas_mask_olde, 1, world.rand.nextInt(100))); + if(rand.nextInt(64) == 0) { + ItemStack mask = new ItemStack(ModItems.gas_mask_m65); + ArmorUtil.installGasMaskFilter(mask, new ItemStack(ModItems.gas_mask_filter)); + entity.setCurrentItemOrArmor(4, mask); + } + if(rand.nextInt(128) == 0) { + ItemStack mask = new ItemStack(ModItems.gas_mask_olde); + ArmorUtil.installGasMaskFilter(mask, new ItemStack(ModItems.gas_mask_filter)); + entity.setCurrentItemOrArmor(4, mask); + } if(rand.nextInt(256) == 0) entity.setCurrentItemOrArmor(4, new ItemStack(ModItems.mask_of_infamy, 1, world.rand.nextInt(100))); if(rand.nextInt(1024) == 0) @@ -413,8 +419,11 @@ public class ModEventHandler { entity.setCurrentItemOrArmor(0, new ItemStack(ModItems.chernobylsign)); } if(entity instanceof EntitySkeleton) { - if(rand.nextInt(16) == 0) - entity.setCurrentItemOrArmor(4, new ItemStack(ModItems.gas_mask_m65, 1, world.rand.nextInt(100))); + if(rand.nextInt(16) == 0) { + ItemStack mask = new ItemStack(ModItems.gas_mask_m65); + ArmorUtil.installGasMaskFilter(mask, new ItemStack(ModItems.gas_mask_filter)); + entity.setCurrentItemOrArmor(4, mask); + } if(rand.nextInt(64) == 0) entity.setCurrentItemOrArmor(3, new ItemStack(ModItems.steel_plate, 1, world.rand.nextInt(ModItems.steel_plate.getMaxDamage()))); } @@ -733,7 +742,7 @@ public class ModEventHandler { /// TOM IMPACT END/// /// RADIATION STUFF START /// - if(event.world != null && !event.world.isRemote && GeneralConfig.enableRads) { + if(event.world != null && !event.world.isRemote) { int thunder = AuxSavedData.getThunder(event.world); @@ -1160,6 +1169,17 @@ public class ModEventHandler { } /// PU RADIATION END /// + + /*if(player instanceof EntityPlayerMP) { + + int x = (int) Math.floor(player.posX); + int y = (int) Math.floor(player.posY - 0.01); + int z = (int) Math.floor(player.posZ); + + if(player.worldObj.getTileEntity(x, y, z) instanceof IEnergyConductor) { + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(((IEnergyConductor) player.worldObj.getTileEntity(x, y, z)).getPowerNet() + ""), (EntityPlayerMP) player); + } + }*/ /// NEW ITEM SYS START /// HazardSystem.updatePlayerInventory(player); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 4114ab191..bd4d894f2 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -59,6 +59,7 @@ import com.hbm.util.ArmorUtil; import com.hbm.util.ArmorRegistry.HazardClass; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; +import api.hbm.energy.IEnergyConductor; import api.hbm.item.IButtonReceiver; import api.hbm.item.IClickReceiver; @@ -245,13 +246,16 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_TEXTURE_2D); - } + } + + } + if(!event.isCanceled() && event.type == event.type.HOTBAR) { + HbmPlayerProps props = HbmPlayerProps.getData(player); if(props.getDashCount() > 0) { RenderScreenOverlay.renderDashBar(event.resolution, Minecraft.getMinecraft().ingameGUI, props); } - } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 1d57eeb24..0b79f4212 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -1,6 +1,9 @@ package com.hbm.main; +import java.util.List; + import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.config.VersatileConfig; import com.hbm.handler.nei.*; import com.hbm.items.ModItems; @@ -9,7 +12,14 @@ import com.hbm.lib.RefStrings; import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; +import codechicken.nei.api.IHighlightHandler; +import codechicken.nei.api.ItemInfo.Layout; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; public class NEIConfig implements IConfigureNEI { @@ -139,6 +149,31 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.pink_slab)); API.hideItem(new ItemStack(ModBlocks.pink_double_slab)); API.hideItem(new ItemStack(ModBlocks.pink_stairs)); + + API.registerHighlightIdentifier(ModBlocks.ore_random, new IHighlightHandler() { + + @Override + public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + return new ItemStack(ModBlocks.ore_random, 1, ore.getStackId()); + } + + return null; + } + + @Override + public List handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List currenttip, Layout layout) { + return currenttip; + } + + }); } @Override diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 4f67e998b..430a16e73 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -366,7 +366,7 @@ public class ResourceManager { //Tank public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png"); - public static final ResourceLocation tank_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank_NONE.png"); + public static final ResourceLocation tank_label_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank_label/tank_NONE.png"); public static final ResourceLocation bat9000_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/bat9000.png"); public static final ResourceLocation orbus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/orbus.png"); @@ -1179,6 +1179,7 @@ public class ResourceManager { public static final IModelCustom crystal_robust = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_robust.obj")); public static final IModelCustom crystal_trixite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_trixite.obj")); public static final IModelCustom cable_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/cable_neo.obj")); + public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj")); diff --git a/src/main/java/com/hbm/particle/ParticleAmatFlash.java b/src/main/java/com/hbm/particle/ParticleAmatFlash.java index f7432e305..e01a28dca 100644 --- a/src/main/java/com/hbm/particle/ParticleAmatFlash.java +++ b/src/main/java/com/hbm/particle/ParticleAmatFlash.java @@ -29,7 +29,9 @@ public class ParticleAmatFlash extends EntityFX { float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX)); float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY)); float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ)); - + + + GL11.glPushMatrix(); GL11.glTranslatef(pX, pY, pZ); GL11.glScalef(0.2F * particleScale, 0.2F * particleScale, 0.2F * particleScale); @@ -49,8 +51,6 @@ public class ParticleAmatFlash extends EntityFX { GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDepthMask(false); - GL11.glPushMatrix(); - float scale = 0.5F; for(int i = 0; i < 100; i++) { diff --git a/src/main/java/com/hbm/particle/ParticleText.java b/src/main/java/com/hbm/particle/ParticleText.java new file mode 100644 index 000000000..34ad3e928 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleText.java @@ -0,0 +1,65 @@ +package com.hbm.particle; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.world.World; + +public class ParticleText extends EntityFX { + + int color; + String text; + + public ParticleText(World world, double x, double y, double z, int color, String text) { + super(world, x, y, z); + this.particleMaxAge = 100; + this.color = color; + this.text = text; + + this.motionY = 0.01D; + this.noClip = true; + } + + public int getFXLayer() { + return 3; + } + + public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) { + + GL11.glPushMatrix(); + + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 0.0F); + RenderHelper.disableStandardItemLighting(); + + Minecraft mc = Minecraft.getMinecraft(); + FontRenderer font = mc.fontRenderer; + + this.rotationYaw = -mc.thePlayer.rotationYaw; + this.rotationPitch = mc.thePlayer.rotationPitch; + + float pX = (float) (this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX); + float pY = (float) (this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY); + float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); + + GL11.glTranslatef(pX, pY, pZ); + GL11.glRotatef(this.rotationYaw, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(this.rotationPitch, 1.0F, 0.0F, 0.0F); + GL11.glScalef(-1.0F, -1.0F, 1.0F); + + GL11.glScaled(particleScale * 0.01, particleScale * 0.01, particleScale * 0.01); + + font.drawStringWithShadow(text, -(int) (font.getStringWidth(text) * 0.5F), -(int) (font.FONT_HEIGHT * 0.5F), color); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + GL11.glPolygonOffset(0.0F, 0.0F); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index bd4090f1e..9932ae2a1 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -1,13 +1,21 @@ package com.hbm.render.block; +import java.awt.Color; + import org.lwjgl.opengl.GL11; import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.util.ColorUtil; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.ItemStack; import net.minecraft.world.IBlockAccess; public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { @@ -59,6 +67,60 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); tessellator.draw(); + /** terrible hack to make this shit work */ + if(block == ModBlocks.ore_random) { + + this.currentPass = 1; + renderer.setOverrideBlockTexture(block.getIcon(0, metadata)); + this.currentPass = 0; + ComparableStack stack = BlockMotherOfAllOres.itemMap.get(metadata); + int color = ColorUtil.getAverageColorFromStack(stack != null ? stack.toStack() : new ItemStack(ModItems.nothing)); + color = ColorUtil.amplifyColor(color); + + Color col = new Color(color); + int r = col.getRed(); + int g = col.getGreen(); + int b = col.getBlue(); + + float[] hsb = new Color(color).RGBtoHSB(r, g, b, new float[3]); + + if(hsb[1] > 0F && hsb[1] < 0.75F) + hsb[1] = 0.75F; + + color = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]); + col = new Color(color); + + GL11.glColor3f(col.getRed() / 255F, col.getGreen() / 255F, col.getBlue() / 255F); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + + renderer.clearOverrideBlockTexture(); + GL11.glColor3f(1F, 1F, 1F); + } + GL11.glTranslatef(0.5F, 0.5F, 0.5F); } @@ -66,7 +128,6 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { Tessellator tessellator = Tessellator.instance; - //int meta = world.getBlockMetadata(x, y, z); tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); @@ -82,8 +143,6 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { for(int i = 0; i < passes; i++) { currentPass = i; - //System.out.println(multi.getColorFromPass(world, x, y, z, false)); - //tessellator.setColorOpaque_I(multi.getColorFromPass(world, x, y, z, false)); renderer.renderStandardBlock(block, x, y, z); } diff --git a/src/main/java/com/hbm/render/block/RenderTestCable.java b/src/main/java/com/hbm/render/block/RenderCable.java similarity index 94% rename from src/main/java/com/hbm/render/block/RenderTestCable.java rename to src/main/java/com/hbm/render/block/RenderCable.java index ad4f013ec..5b3b823c9 100644 --- a/src/main/java/com/hbm/render/block/RenderTestCable.java +++ b/src/main/java/com/hbm/render/block/RenderCable.java @@ -7,19 +7,15 @@ import com.hbm.lib.Library; import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyConnectorBlock; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.client.model.obj.WavefrontObject; -import net.minecraftforge.common.util.ForgeDirection; -public class RenderTestCable implements ISimpleBlockRenderingHandler { +public class RenderCable implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { diff --git a/src/main/java/com/hbm/render/block/RenderCableClassic.java b/src/main/java/com/hbm/render/block/RenderCableClassic.java new file mode 100644 index 000000000..00c55223a --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderCableClassic.java @@ -0,0 +1,399 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.network.BlockCable; +import com.hbm.lib.Library; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class RenderCableClassic implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + GL11.glScaled(1.25D, 1.25D, 1.25D); + GL11.glTranslated(-0.5, -0.5, -0.5); + IIcon iicon = block.getIcon(0, 0); + + double uv_cL = iicon.getMinU(); + double uv_cR = iicon.getInterpolatedU(5); + double uv_cT = iicon.getMinV(); + double uv_cB = iicon.getInterpolatedV(5); + + double uv_sL = iicon.getInterpolatedU(5); + double uv_sR = iicon.getInterpolatedU(10); + double uv_sT = iicon.getMinV(); + double uv_sB = iicon.getInterpolatedV(5); + + double pos_nil = 0D; + double pos_one = 1D; + double pos_min = 0.34375D; + double pos_max = 0.65625D; + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(1F, 1F, 1F); + tessellator.setNormal(0F, 1F, 0F); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_nil, uv_sR, uv_sT); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, -1F, 0F); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_nil, uv_sR, uv_sT); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1F, 0F, 0F); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_nil, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_one, pos_max, pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_one, pos_max, pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_one, pos_min, pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_min, uv_cR, uv_cB); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1F, 0F, 0F); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_nil, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_min, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_max, uv_cR, uv_cB); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 0F, 1F); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_one, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_one, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_one, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_one, uv_cR, uv_cB); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 0F, -1F); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_nil, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_nil, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_nil, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_nil, uv_cR, uv_cB); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if(renderer.hasOverrideBlockTexture()) { + iicon = renderer.overrideBlockTexture; + } + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + boolean pX = Library.canConnect(world, x + 1, y, z, Library.NEG_X); + boolean nX = Library.canConnect(world, x - 1, y, z, Library.POS_X); + boolean pY = Library.canConnect(world, x, y + 1, z, Library.NEG_Y); + boolean nY = Library.canConnect(world, x, y - 1, z, Library.POS_Y); + boolean pZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z); + boolean nZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z); + + double uv_cL = iicon.getMinU(); + double uv_cR = iicon.getInterpolatedU(5); + double uv_cT = iicon.getMinV(); + double uv_cB = iicon.getInterpolatedV(5); + + double uv_sL = iicon.getInterpolatedU(5); + double uv_sR = iicon.getInterpolatedU(10); + double uv_sT = iicon.getMinV(); + double uv_sB = iicon.getInterpolatedV(5); + + double pos_nil = 0D; + double pos_one = 1D; + double pos_min = 0.34375D; + double pos_max = 0.65625D; + + float topColor = 1.0F; + float brightColor = 0.8F; + float darkColor = 0.6F; + float bottomColor = 0.5F; + + //this is a lot less tedious than it looks when you draw a 3D cube to take the vertex positions from + if(!pY) { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_min, uv_sR, uv_sT); + } + + if(!nY) { + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cL, uv_cB); + } else { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_max, uv_sR, uv_sT); + } + + if(!pX) { + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_max, uv_sR, uv_sT); + } + + if(!nX) { + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_max, uv_sR, uv_sT); + } + + if(!pZ) { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_one, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_one, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_one, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_one, uv_sR, uv_sT); + } + + if(!nZ) { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_nil, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_nil, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_nil, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_nil, uv_sR, uv_sT); + } + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return BlockCable.renderIDClassic; + } + +} diff --git a/src/main/java/com/hbm/render/block/RenderTestPipe.java b/src/main/java/com/hbm/render/block/RenderTestPipe.java new file mode 100644 index 000000000..849fcd0ba --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderTestPipe.java @@ -0,0 +1,130 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.test.TestPipe; +import com.hbm.lib.Library; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +import api.hbm.fluid.IFluidConductor; +import api.hbm.fluid.IFluidConnector; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderTestPipe implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if(renderer.hasOverrideBlockTexture()) { + iicon = renderer.overrideBlockTexture; + } + + GL11.glRotated(180, 0, 1, 0); + GL11.glScaled(1.25D, 1.25D, 1.25D); + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pX", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nX", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pZ", iicon, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nZ", iicon, tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + IIcon iicon = block.getIcon(0, 0); + IIcon overlay = block.getIcon(1, 0); + tessellator.setColorOpaque_F(1, 1, 1); + + if(renderer.hasOverrideBlockTexture()) { + iicon = renderer.overrideBlockTexture; + } + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + boolean pX = world.getTileEntity(x + 1, y, z) instanceof IFluidConductor; + boolean nX = world.getTileEntity(x - 1, y, z) instanceof IFluidConductor; + boolean pY = world.getTileEntity(x, y + 1, z) instanceof IFluidConductor; + boolean nY = world.getTileEntity(x, y - 1, z) instanceof IFluidConductor; + boolean pZ = world.getTileEntity(x, y, z + 1) instanceof IFluidConductor; + boolean nZ = world.getTileEntity(x, y, z - 1) instanceof IFluidConductor; + + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + + tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F); + + int color = 0xff0000; + + if(mask == 0) { + renderDuct(iicon, overlay, color, tessellator, "pX"); + renderDuct(iicon, overlay, color, tessellator, "nX"); + renderDuct(iicon, overlay, color, tessellator, "pY"); + renderDuct(iicon, overlay, color, tessellator, "nY"); + renderDuct(iicon, overlay, color, tessellator, "pZ"); + renderDuct(iicon, overlay, color, tessellator, "nZ"); + } else if(mask == 0b100000 || mask == 0b010000) { + renderDuct(iicon, overlay, color, tessellator, "pX"); + renderDuct(iicon, overlay, color, tessellator, "nX"); + } else if(mask == 0b001000 || mask == 0b000100) { + renderDuct(iicon, overlay, color, tessellator, "pY"); + renderDuct(iicon, overlay, color, tessellator, "nY"); + } else if(mask == 0b000010 || mask == 0b000001) { + renderDuct(iicon, overlay, color, tessellator, "pZ"); + renderDuct(iicon, overlay, color, tessellator, "nZ"); + } else { + + if(pX) renderDuct(iicon, overlay, color, tessellator, "pX"); + if(nX) renderDuct(iicon, overlay, color, tessellator, "nX"); + if(pY) renderDuct(iicon, overlay, color, tessellator, "pY"); + if(nY) renderDuct(iicon, overlay, color, tessellator, "nY"); + if(pZ) renderDuct(iicon, overlay, color, tessellator, "nZ"); + if(nZ) renderDuct(iicon, overlay, color, tessellator, "pZ"); + + if(!pX && !pY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "ppn", iicon, tessellator, 0, true); + if(!pX && !pY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "ppp", iicon, tessellator, 0, true); + if(!nX && !pY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "npn", iicon, tessellator, 0, true); + if(!nX && !pY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "npp", iicon, tessellator, 0, true); + if(!pX && !nY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pnn", iicon, tessellator, 0, true); + if(!pX && !nY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "pnp", iicon, tessellator, 0, true); + if(!nX && !nY && !pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nnn", iicon, tessellator, 0, true); + if(!nX && !nY && !nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, "nnp", iicon, tessellator, 0, true); + } + + tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F); + + return true; + } + + private void renderDuct(IIcon iicon, IIcon overlay, int color, Tessellator tessellator, String part) { + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, part, iicon, tessellator, 0, true); + ObjUtil.setColor(color); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.pipe_neo, part, overlay, tessellator, 0, true); + ObjUtil.clearColor(); + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return TestPipe.renderID; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTNTPrimedBase.java b/src/main/java/com/hbm/render/entity/item/RenderTNTPrimedBase.java index e2a3be62e..9776f4aef 100644 --- a/src/main/java/com/hbm/render/entity/item/RenderTNTPrimedBase.java +++ b/src/main/java/com/hbm/render/entity/item/RenderTNTPrimedBase.java @@ -23,6 +23,8 @@ public class RenderTNTPrimedBase extends Render { public void doRender(EntityTNTPrimedBase tnt, double x, double y, double z, float f0, float f1) { GL11.glPushMatrix(); GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(-90F, 0F, 1F, 0F); + float f2; if((float) tnt.fuse - f1 + 1.0F < 10.0F) { diff --git a/src/main/java/com/hbm/render/model/ModelGasMask.java b/src/main/java/com/hbm/render/model/ModelGasMask.java index 3fc9d8bd3..a32833c9b 100644 --- a/src/main/java/com/hbm/render/model/ModelGasMask.java +++ b/src/main/java/com/hbm/render/model/ModelGasMask.java @@ -100,10 +100,20 @@ public class ModelGasMask extends ModelBiped { @Override public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); - GL11.glPushMatrix(); - GL11.glScalef(1.15F, 1.15F, 1.15F); - this.mask.render(par7); - GL11.glPopMatrix(); + + if(this.isChild) { + float f6 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.5F / f6, 1.5F / f6, 1.5F / f6); + GL11.glTranslatef(0.0F, 16.0F * par7, 0.0F); + this.mask.render(par7); + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + GL11.glScalef(1.15F, 1.15F, 1.15F); + this.mask.render(par7); + GL11.glPopMatrix(); + } } protected void convertToChild(ModelRenderer parParent, ModelRenderer parChild) { diff --git a/src/main/java/com/hbm/render/model/ModelM65.java b/src/main/java/com/hbm/render/model/ModelM65.java index c1eaaab90..d61b13d43 100644 --- a/src/main/java/com/hbm/render/model/ModelM65.java +++ b/src/main/java/com/hbm/render/model/ModelM65.java @@ -126,17 +126,33 @@ public class ModelM65 extends ModelBiped { @Override public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) { setRotationAngles(par2, par3, par4, par5, par6, par7, entity); - GL11.glPushMatrix(); - double d = 1D / 16D * 18D; - //GL11.glTranslated(0, 1/16D, 0); - GL11.glScaled(d, d, d); - GL11.glScaled(1.01D, 1.01D, 1.01D); - this.mask.render(par7); - if(!(entity instanceof EntityLivingBase) || ArmorUtil.getGasMaskFilterRecursively(((EntityLivingBase)entity).getEquipmentInSlot(4), (EntityLivingBase)entity) != null) - this.filter.render(par7); - - GL11.glPopMatrix(); + if(this.isChild) { + float f6 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.5F / f6, 1.5F / f6, 1.5F / f6); + GL11.glTranslatef(0.0F, 16.0F * par7, 0.0F); + double d = 1D / 16D * 18D; + GL11.glScaled(d, d, d); + GL11.glScaled(1.01D, 1.01D, 1.01D); + this.mask.render(par7); + + if(!(entity instanceof EntityLivingBase) || ArmorUtil.getGasMaskFilterRecursively(((EntityLivingBase)entity).getEquipmentInSlot(4), (EntityLivingBase)entity) != null) + this.filter.render(par7); + + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + double d = 1D / 16D * 18D; + GL11.glScaled(d, d, d); + GL11.glScaled(1.01D, 1.01D, 1.01D); + this.mask.render(par7); + + if(!(entity instanceof EntityLivingBase) || ArmorUtil.getGasMaskFilterRecursively(((EntityLivingBase)entity).getEquipmentInSlot(4), (EntityLivingBase)entity) != null) + this.filter.render(par7); + + GL11.glPopMatrix(); + } } private void setRotation(ModelRenderer model, float x, float y, float z) { diff --git a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java index 165729f45..ab1f0e139 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java +++ b/src/main/java/com/hbm/render/tileentity/RenderFluidTank.java @@ -14,68 +14,52 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderFluidTank extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glShadeModel(GL11.GL_SMOOTH); GL11.glRotatef(180, 0F, 1F, 0F); GL11.glRotatef(90, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - bindTexture(ResourceManager.tank_tex); + bindTexture(ResourceManager.tank_tex); ResourceManager.fluidtank.renderPart("Tank"); GL11.glShadeModel(GL11.GL_FLAT); - GL11.glPopMatrix(); - - renderTileEntityAt2(tileEntity, x, y, z, f); - } - - public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + + renderTileEntityAt2(tileEntity, x, y, z, f); + } + + public void renderTileEntityAt2(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glRotatef(180, 0F, 1F, 0F); GL11.glRotatef(90, 0F, 1F, 0F); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; - //GL11.glTranslated(0.5D, 0.0D, 0.0D); + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } String s = "NONE"; if(tileEntity instanceof TileEntityMachineFluidTank) - s = ((TileEntityMachineFluidTank)tileEntity).tank.getTankType().name(); - - bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/tank_" + s + ".png")); - ResourceManager.fluidtank.renderPart("Label"); + s = ((TileEntityMachineFluidTank) tileEntity).tank.getTankType().name(); - GL11.glPopMatrix(); - } + bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/tank_label/tank_" + s + ".png")); + ResourceManager.fluidtank.renderPart("Label"); + + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/render/util/ObjUtil.java b/src/main/java/com/hbm/render/util/ObjUtil.java index 108b90308..b58628541 100644 --- a/src/main/java/com/hbm/render/util/ObjUtil.java +++ b/src/main/java/com/hbm/render/util/ObjUtil.java @@ -91,7 +91,11 @@ public class ObjUtil { if(brightness < 0.45F) brightness = 0.45F; - tes.setColorOpaque_F(brightness, brightness, brightness); + if(hasColor) { + tes.setColorOpaque((int)(red * brightness), (int)(green * brightness), (int)(blue * brightness)); + } else { + tes.setColorOpaque_F(brightness, brightness, brightness); + } } for(int i = 0; i < f.vertices.length; i++) { @@ -116,4 +120,27 @@ public class ObjUtil { } } } + + private static int red; + private static int green; + private static int blue; + private static boolean hasColor = false; + + public static void setColor(int color) { + red = (color & 0xff0000) >> 16; + green = (color & 0x00ff00) >> 8; + blue = color & 0x0000ff; + hasColor = true; + } + + public static void setColor(int r, int g, int b) { + red = r; + green = g; + blue = b; + hasColor = true; + } + + public static void clearColor() { + hasColor = false; + } } diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index 7103eebad..9b0278752 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -41,6 +41,8 @@ public class RenderAccessoryUtility { private static ResourceLocation rightnugget = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeRightNugget.png"); private static ResourceLocation tankish = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeTankish.png"); private static ResourceLocation frizzlefrazzle = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeFrizzleFrazzle.png"); + private static ResourceLocation pheo = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapePheo.png"); + private static ResourceLocation vaer = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeVaer.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -111,6 +113,12 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.FrizzleFrazzle)) { return frizzlefrazzle; } + if(uuid.equals(Library.Barnaby99_x)) { + return pheo; + } + if(uuid.equals(Library.Ma118)) { + return vaer; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java index f297b315e..99195b6d5 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java @@ -1,7 +1,3 @@ package com.hbm.saveddata.satellites; -import net.minecraft.nbt.NBTTagCompound; - -public class SatelliteLunarMiner extends SatelliteMiner { - -} \ No newline at end of file +public class SatelliteLunarMiner extends SatelliteMiner { } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java new file mode 100644 index 000000000..baec2d8d4 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -0,0 +1,20 @@ +package com.hbm.tileentity; + +import api.hbm.energy.ILoadedTile; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { + + public boolean isLoaded = true; + + @Override + public boolean isLoaded() { + return isLoaded; + } + + @Override + public void onChunkUnload() { + super.onChunkUnload(); + this.isLoaded = false; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index c9542a9dc..de2396047 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -5,6 +5,7 @@ import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import api.hbm.energy.ILoadedTile; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; @@ -15,7 +16,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityMachineBase extends TileEntity implements ISidedInventory, INBTPacketReceiver { +public abstract class TileEntityMachineBase extends TileEntityLoadedBase implements ISidedInventory, INBTPacketReceiver { public ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java index c1f3c07f7..0bcf59043 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java @@ -8,7 +8,7 @@ import com.hbm.tileentity.machine.TileEntityHadron; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityProxyBase extends TileEntity { +public class TileEntityProxyBase extends TileEntityLoadedBase { public boolean canUpdate() { return false; diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java b/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java index 1c458df9d..1bcbaa6cb 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyConductor.java @@ -1,5 +1,8 @@ package com.hbm.tileentity; +import java.util.ArrayList; +import java.util.List; + import api.hbm.energy.IEnergyConductor; import api.hbm.energy.IPowerNet; import net.minecraft.tileentity.TileEntity; @@ -68,4 +71,17 @@ public class TileEntityProxyConductor extends TileEntityProxyBase implements IEn ((IEnergyConductor)te).setPowerNet(network); } } + + @Override + public List getConnectionPoints() { + + /*TileEntity te = this.getTE(); + + if(te instanceof IEnergyConductor) { + return ((IEnergyConductor)te).getConnectionPoints(); + }*/ + + /* Proxy TE doesn't need to implement proxying here because the conductor main TE already has a network-specific proxying system */ + return new ArrayList(); + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java index 4d4bf2d13..cc82f97ee 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java @@ -8,7 +8,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidTank; -public abstract class TileEntityTickingBase extends TileEntity implements INBTPacketReceiver { +public abstract class TileEntityTickingBase extends TileEntityLoadedBase implements INBTPacketReceiver { public TileEntityTickingBase() { } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 873d7d66c..ca2701011 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -5,6 +5,7 @@ import java.util.HashMap; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.conductor.*; @@ -184,6 +185,7 @@ public class TileMappings { put(TileEntityDeaerator.class, "tileentity_deaerator"); put(TileEntityChungus.class, "tileentity_chungus"); put(TileEntityCableBaseNT.class, "tileentity_ohgod"); + put(TileEntityPipeBaseNT.class, "tileentity_pipe_base"); put(TileEntityWatz.class, "tileentity_watz"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); @@ -198,6 +200,8 @@ public class TileMappings { put(TileEntityProxyEnergy.class, "tileentity_proxy_power"); put(TileEntityProxyCombo.class, "tileentity_proxy_combo"); put(TileEntityProxyConductor.class, "tileentity_proxy_conductor"); + + put(TileEntityRandomOre.class, "tileentity_mother_of_all_ores"); putNetwork(); putBombs(); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index d974caa5c..cbe1fac9c 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -21,6 +21,7 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; @@ -39,7 +40,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCompactLauncher extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser { +public class TileEntityCompactLauncher extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 1182aa426..c17fe69f8 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -4,6 +4,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissilePacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -18,7 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchPad extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { public ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 12c4130e4..a001e3748 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -21,6 +21,7 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.item.IDesignatorItem; @@ -36,7 +37,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchTable extends TileEntity implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index ed3ab7486..eb7c80bb8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -15,6 +15,7 @@ import com.hbm.lib.Library; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -25,7 +26,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityChungus extends TileEntity implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver { +public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcceptor, IFluidSource, IEnergyGenerator, INBTPacketReceiver { public long power; public static final long maxPower = 100000000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java index e6605700f..a945201d1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreAdvanced.java @@ -4,6 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFactory; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -17,7 +18,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCoreAdvanced extends TileEntity implements ISidedInventory, IFactory, IEnergyUser { +public class TileEntityCoreAdvanced extends TileEntityLoadedBase implements ISidedInventory, IFactory, IEnergyUser { public int progress = 0; public long power = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java index 0c5ec6e28..21c51712d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreTitanium.java @@ -5,6 +5,7 @@ import com.hbm.interfaces.IFactory; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -18,7 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCoreTitanium extends TileEntity implements ISidedInventory, IFactory, IEnergyUser { +public class TileEntityCoreTitanium extends TileEntityLoadedBase implements ISidedInventory, IFactory, IEnergyUser { public int progress = 0; public long power = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java index f20c67ce3..e5f462543 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFWatzCore.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import com.hbm.interfaces.IFluidAcceptor; @@ -14,6 +12,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.world.machine.FWatz; import api.hbm.energy.IEnergyGenerator; @@ -24,10 +23,9 @@ 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.world.World; -public class TileEntityFWatzCore extends TileEntity implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityFWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidAcceptor { public long power; public final static long maxPower = 10000000000L; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java index e62b9862f..1208805c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java @@ -7,6 +7,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEFFPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -24,7 +25,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityForceField extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityForceField extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java index 4c8dff60c..fdab6bcb5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFusionMultiblock.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index 1ea71a9ea..e9b9e17db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.handler.radiation.ChunkRadiationManager; import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.chunk.Chunk; public class TileEntityGeiger extends TileEntity { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index 348e78347..1b5e9ecd1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,14 +1,14 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHadronPower extends TileEntity implements IEnergyUser { +public class TileEntityHadronPower extends TileEntityLoadedBase implements IEnergyUser { public long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java index c3326f584..a88a7db69 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAmgen.java @@ -1,20 +1,15 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAmgen extends TileEntity implements IEnergyGenerator { +public class TileEntityMachineAmgen extends TileEntityLoadedBase implements IEnergyGenerator { public long power; public long maxPower = 500; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index a2916c09b..9e34acd3f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -7,6 +7,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -19,7 +20,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; -public class TileEntityMachineArcFurnace extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineArcFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index cb959e033..10a765f0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -16,6 +16,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -29,7 +30,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineBoilerElectric extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser { +public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java index 780276af0..819467f45 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCMBFactory.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.FluidTank; @@ -12,6 +9,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -22,10 +20,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCMBFactory extends TileEntity implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineCMBFactory extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 1a3aeeb53..3ad9b2723 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -18,7 +18,6 @@ import com.hbm.util.InventoryUtil; import api.hbm.energy.IEnergyUser; import net.minecraft.inventory.IInventory; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index d4503636a..ac6e0f679 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -6,13 +6,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.util.ForgeDirection; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.machine.MachineCoal; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -25,12 +21,14 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; +import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -public class TileEntityMachineCoal extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver { private ItemStack slots[]; @@ -227,6 +225,8 @@ public class TileEntityMachineCoal extends TileEntity implements ISidedInventory for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + + this.updateStandardPipes(Fluids.WATER, worldObj, xCoord, yCoord, zCoord); //Water tank.loadTank(0, 3, slots); @@ -338,4 +338,9 @@ public class TileEntityMachineCoal extends TileEntity implements ISidedInventory public void setTypeForSync(FluidType type, int index) { tank.setTankType(type); } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tank}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java index eea44c005..e71df5eab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDetector.java @@ -1,10 +1,11 @@ package com.hbm.tileentity.machine; +import com.hbm.tileentity.TileEntityLoadedBase; + import api.hbm.energy.IEnergyUser; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDetector extends TileEntity implements IEnergyUser { +public class TileEntityMachineDetector extends TileEntityLoadedBase implements IEnergyUser { long power; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index 013b5f70f..feea1ffaf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -1,12 +1,12 @@ package com.hbm.tileentity.machine; -import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.inventory.recipes.PressRecipes; import com.hbm.items.machine.ItemStamp; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEPressPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -22,7 +22,7 @@ import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineEPress extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineEPress extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 75a49e388..92fe3a0d0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -5,6 +5,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -15,10 +16,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineElectricFurnace extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineElectricFurnace extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java index 6a2224074..a013fbc17 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiniRTG.java @@ -5,12 +5,13 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineMiniRTG extends TileEntity implements IEnergyGenerator { +public class TileEntityMachineMiniRTG extends TileEntityLoadedBase implements IEnergyGenerator { public long power; boolean tact = false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java index ccd1a6d5c..e7a56664b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningDrill.java @@ -291,7 +291,7 @@ public class TileEntityMachineMiningDrill extends TileEntityMachineBase implemen Block b = worldObj.getBlock(x, y, z); float hardness = b.getBlockHardness(worldObj, x, y, z); - return hardness < 70 && hardness >= 0; + return (hardness < 70 && hardness >= 0) || b instanceof IDrillInteraction; } /** diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 027653669..cbfe5b0a4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -4,6 +4,7 @@ import com.hbm.config.VersatileConfig; import com.hbm.items.machine.ItemRTGPellet; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.RTGUtil; import api.hbm.energy.IEnergyGenerator; @@ -13,10 +14,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRTG extends TileEntity implements ISidedInventory, IEnergyGenerator { +public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 4bcbed6c4..02a497dc7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -33,7 +33,6 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineRadiolysis extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, IFluidSource, IFluidContainer { - //TODO: Render file + resource locations + itemrenderlibrary + clientproxy, gui texture, further recipes public long power; public static final int maxPower = 1000000; @@ -127,8 +126,10 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement tanks[0].setType(10, 11, slots); setupTanks(); - if(heat > 0) { - if(heat >= 100 && worldObj.getTotalWorldTime() % 30 == 0) + if(heat > 100) { + int crackTime = (int) Math.min(-0.1 * (heat - 100) + 30, 5); + + if(worldObj.getTotalWorldTime() % crackTime == 0) crack(); if(heat >= 200 && worldObj.getTotalWorldTime() % 100 == 0) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java index 127ba36c5..ad3adb63d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSPP.java @@ -1,16 +1,13 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.ModBlocks; import com.hbm.lib.Library; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; -public class TileEntityMachineSPP extends TileEntity implements IEnergyGenerator { +public class TileEntityMachineSPP extends TileEntityLoadedBase implements IEnergyGenerator { public long power; public static final long maxPower = 100000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java index d19fe1d12..5060a0753 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSeleniumEngine.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -17,6 +15,7 @@ import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; @@ -26,10 +25,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineSeleniumEngine extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineSeleniumEngine extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index 63a11d0ef..d4367bf41 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -1,11 +1,11 @@ package com.hbm.tileentity.machine; -import com.hbm.interfaces.Untested; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.machine.ItemBlades; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyUser; @@ -15,10 +15,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineShredder extends TileEntity implements ISidedInventory, IEnergyUser { +public class TileEntityMachineShredder extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java index 82928346b..ed2457752 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTeleporter.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.lib.ModDamageSource; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -14,7 +15,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineTeleporter extends TileEntity implements IEnergyUser { +public class TileEntityMachineTeleporter extends TileEntityLoadedBase implements IEnergyUser { public long power = 0; public int targetX = 0; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index fe29fa2d5..4acfb031a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -13,6 +13,7 @@ import com.hbm.inventory.recipes.MachineRecipes; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; @@ -22,10 +23,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbine extends TileEntity implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator { +public class TileEntityMachineTurbine extends TileEntityLoadedBase implements ISidedInventory, IFluidContainer, IFluidAcceptor, IFluidSource, IEnergyGenerator { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 44a4c684d..df88f1c23 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -1,6 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -19,6 +18,7 @@ import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TETurbofanPacket; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -34,7 +34,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; @Spaghetti("a") -public class TileEntityMachineTurbofan extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineTurbofan extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java index 0038e9a1a..6db0cc2fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java @@ -3,19 +3,18 @@ package com.hbm.tileentity.machine; import java.util.List; import com.hbm.lib.ModDamageSource; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; -import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.monster.IMob; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityRadiobox extends TileEntity implements IEnergyUser { +public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyUser { long power; public static long maxPower = 500000; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index b26d62d7e..1351f0f38 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -21,6 +21,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -30,12 +31,11 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityWatzCore extends TileEntity implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidSource { +public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedInventory, IReactor, IEnergyGenerator, IFluidContainer, IFluidSource { public long power; public final static long maxPower = 100000000; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java index 1d9159be3..bb4eeb3c8 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java @@ -78,12 +78,14 @@ public class TileEntityMachineCatalyticCracker extends TileEntity implements IFl int left = quart.getKey().fill; int right = quart.getValue().fill; - if(tanks[0].getFill() >= 100 && tanks[1].getFill() >= 100 && hasSpace(left, right)) { - tanks[0].setFill(tanks[0].getFill() - 100); - tanks[1].setFill(tanks[1].getFill() - 200); - tanks[2].setFill(tanks[2].getFill() + left); - tanks[3].setFill(tanks[3].getFill() + right); - tanks[4].setFill(tanks[4].getFill() + 2); //LPS has the density of WATER not STEAM (1%!) + for(int i = 0; i < 2; i++) { + if(tanks[0].getFill() >= 100 && tanks[1].getFill() >= 100 && hasSpace(left, right)) { + tanks[0].setFill(tanks[0].getFill() - 100); + tanks[1].setFill(tanks[1].getFill() - 200); + tanks[2].setFill(tanks[2].getFill() + left); + tanks[3].setFill(tanks[3].getFill() + right); + tanks[4].setFill(tanks[4].getFill() + 2); //LPS has the density of WATER not STEAM (1%!) + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index 0699d4b30..56c4bbf22 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.oil; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import com.hbm.entity.particle.EntityGasFlameFX; @@ -14,6 +12,7 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; @@ -28,7 +27,7 @@ import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -public class TileEntityMachineGasFlare extends TileEntity implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { +public class TileEntityMachineGasFlare extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor { private ItemStack slots[]; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index c3249d10b..4549d5d23 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import api.hbm.block.IPileNeutronReceiver; -import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutronReceiver { @@ -65,11 +64,15 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.heat = nbt.getInteger("heat"); + this.progress = nbt.getInteger("progress"); + this.neutrons = nbt.getInteger("neutrons"); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setInteger("heat", this.heat); + nbt.setInteger("progress", this.progress); + nbt.setInteger("neutrons", this.neutrons); } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 8449ef2c6..780abe209 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -83,6 +83,9 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement recipes.put("ingotGold", new ItemStack(ModItems.ingot_au198)); recipes.put("nuggetGold", new ItemStack(ModItems.nugget_au198)); recipes.put("dustGold", new ItemStack(ModItems.powder_au198)); + recipes.put("ingotThorium", new ItemStack(ModItems.ingot_thorium_fuel)); + recipes.put("nuggetThorium", new ItemStack(ModItems.nugget_thorium_fuel)); + recipes.put("billetThorium", new ItemStack(ModItems.billet_thorium_fuel)); recipes.put(new ComparableStack(Blocks.brown_mushroom), new ItemStack(ModBlocks.mush)); recipes.put(new ComparableStack(Blocks.red_mushroom), new ItemStack(ModBlocks.mush)); recipes.put(new ComparableStack(Items.mushroom_stew), new ItemStack(ModItems.glowing_stew)); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 22d291929..3759d41db 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -14,12 +14,14 @@ import com.hbm.lib.Library; import com.hbm.main.ModEventHandler; import com.hbm.tileentity.TileEntityMachineBase; +import api.hbm.fluid.IFluidStandardSender; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.EnumSkyBlock; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource { +public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidStandardSender { public FluidTank tank; public short mode = 0; @@ -52,6 +54,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc tank.unloadTank(4, 5, slots); tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, ForgeDirection.DOWN); + age++; if(age >= 20) age = 0; @@ -200,4 +204,9 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc nbt.setShort("mode", mode); tank.writeToNBT(nbt, "tank"); } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tank}; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java index a1095eaa9..63216f451 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableBaseNT.java @@ -56,7 +56,8 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto if(!worldObj.isRemote) { if(this.network != null) { - this.network.destroy(); + this.network.reevaluate(); + this.network = null; } } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java b/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java index b9e16c84d..e8a80f871 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCableSwitch.java @@ -14,7 +14,7 @@ public class TileEntityCableSwitch extends TileEntityCableBaseNT { //if the meta is 0 (OFF) and there is a net present, destroy and de-reference it. //that should be all, since the state being 0 also prevents the TE from updating and joining the new net. if(this.getBlockMetadata() == 0 && this.network != null) { - this.network.destroy(); + this.network.reevaluate(); this.network = null; } @@ -26,4 +26,8 @@ public class TileEntityCableSwitch extends TileEntityCableBaseNT { } } } + + public boolean canReevaluate() { + return super.canReevaluate() && this.getBlockMetadata() == 1; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java b/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java index a98ccec0a..18908ba92 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConnector.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.network; -import api.hbm.energy.IEnergyConductor; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -22,31 +22,15 @@ public class TileEntityConnector extends TileEntityPylonBase { public double getMaxWireLength() { return 10; } - + @Override - protected void connect() { + public List getConnectionPoints() { + List pos = new ArrayList(connected); - super.connect(); - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - if(te instanceof IEnergyConductor) { - - IEnergyConductor conductor = (IEnergyConductor) te; - - if(!conductor.canConnect(dir.getOpposite())) - return; - - if(this.getPowerNet() == null && conductor.getPowerNet() != null) { - conductor.getPowerNet().joinLink(this); - } - - if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { - conductor.getPowerNet().joinNetworks(this.getPowerNet()); - } + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + pos.add(new int[] {xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ}); } + return pos; } @Override diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java index 4d267f71f..941f83c1c 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.network; import com.hbm.calc.Location; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyConnector; import cofh.api.energy.IEnergyHandler; @@ -8,7 +9,7 @@ import cofh.api.energy.IEnergyReceiver; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterHeRf extends TileEntity implements IEnergyConnector, IEnergyHandler { +public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEnergyConnector, IEnergyHandler { //Thanks to the great people of Fusion Warfare for helping me with the original implementation of the RF energy API diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index f17de5f83..4308103a6 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -1,13 +1,13 @@ package com.hbm.tileentity.network; import com.hbm.interfaces.Untested; +import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyGenerator; import cofh.api.energy.IEnergyHandler; -import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityConverterRfHe extends TileEntity implements IEnergyGenerator, IEnergyHandler { +public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEnergyGenerator, IEnergyHandler { @Override public void setPower(long power) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java new file mode 100644 index 000000000..0f43b2c2e --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java @@ -0,0 +1,99 @@ +package com.hbm.tileentity.network; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; + +import api.hbm.fluid.IFluidConductor; +import api.hbm.fluid.IPipeNet; +import api.hbm.fluid.PipeNet; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor { + + private IPipeNet network; + protected FluidType type = Fluids.WATER; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && canUpdate()) { + + //we got here either because the net doesn't exist or because it's not valid, so that's safe to assume + this.setPipeNet(type, null); + + this.connect(); + + if(this.getPipeNet(type) == null) { + this.setPipeNet(type, new PipeNet(type).joinLink(this)); + } + } + } + + protected void connect() { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + if(te instanceof IFluidConductor) { + + IFluidConductor conductor = (IFluidConductor) te; + + if(!conductor.canConnect(type, dir.getOpposite())) + continue; + + if(this.getPipeNet(type) == null && conductor.getPipeNet(type) != null) { + conductor.getPipeNet(type).joinLink(this); + } + + if(this.getPipeNet(type) != null && conductor.getPipeNet(type) != null && this.getPipeNet(type) != conductor.getPipeNet(type)) { + conductor.getPipeNet(type).joinNetworks(this.getPipeNet(type)); + } + } + } + } + + @Override + public void invalidate() { + super.invalidate(); + + if(!worldObj.isRemote) { + if(this.network != null) { + this.network.destroy(); + } + } + } + + /** + * Only update until a power net is formed, in >99% of the cases it should be the first tick. Everything else is handled by neighbors and the net itself. + */ + @Override + public boolean canUpdate() { + return (this.network == null || !this.network.isValid()) && !this.isInvalid(); + } + + @Override + public long transferFluid(FluidType type, long fluid) { + + if(this.network == null) + return fluid; + + return this.network.transferFluid(fluid); + } + + @Override + public long getDemand(FluidType type) { + return 0; + } + + @Override + public IPipeNet getPipeNet(FluidType type) { + return type == this.type ? this.network : null; + } + + @Override + public void setPipeNet(FluidType type, IPipeNet network) { + this.network = network; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java index 6a63f4003..3dde2245e 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylon.java @@ -1,7 +1,8 @@ package com.hbm.tileentity.network; -import api.hbm.energy.IEnergyConductor; -import net.minecraft.tileentity.TileEntity; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -23,31 +24,12 @@ public class TileEntityPylon extends TileEntityPylonBase { } @Override - protected void connect() { - - /* - * Apparently super.super does not exist, and the mentally damaged folk from heckoverflow pretend like that's a good thing. - * Look at this shit, you think that's good? "Write Everything Twice"? You like that, huh? - */ + public List getConnectionPoints() { + List pos = new ArrayList(connected); for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - - TileEntity te = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - - if(te instanceof IEnergyConductor) { - - IEnergyConductor conductor = (IEnergyConductor) te; - - if(this.getPowerNet() == null && conductor.getPowerNet() != null) { - conductor.getPowerNet().joinLink(this); - } - - if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { - conductor.getPowerNet().joinNetworks(this.getPowerNet()); - } - } + pos.add(new int[] {xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ}); } - - super.connect(); + return pos; } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java index bee551249..c55fe51d7 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java @@ -46,8 +46,8 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { connected.add(new int[] {x, y, z}); if(this.getPowerNet() != null) { - this.getPowerNet().destroy(); - this.setPowerNet(null); + this.getPowerNet().reevaluate(); + this.network = null; } this.markDirty(); @@ -92,7 +92,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { @Override protected void connect() { - for(int[] pos : connected) { + for(int[] pos : getConnectionPoints()) { TileEntity te = worldObj.getTileEntity(pos[0], pos[1], pos[2]); @@ -111,6 +111,11 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { } } + @Override + public List getConnectionPoints() { + return new ArrayList(connected); + } + public abstract ConnectionType getConnectionType(); public abstract Vec3[] getMountPos(); public abstract double getMaxWireLength(); diff --git a/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java b/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java index b40a7179e..6f4235e38 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntitySubstation.java @@ -1,9 +1,11 @@ package com.hbm.tileentity.network; +import java.util.ArrayList; +import java.util.List; + import com.hbm.blocks.BlockDummyable; import api.hbm.energy.IEnergyConductor; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; public class TileEntitySubstation extends TileEntityPylonBase { @@ -45,33 +47,31 @@ public class TileEntitySubstation extends TileEntityPylonBase { } @Override - protected void connect() { - - manageNets(worldObj.getTileEntity(xCoord + 2, yCoord, zCoord - 1)); - manageNets(worldObj.getTileEntity(xCoord + 2, yCoord, zCoord + 1)); - manageNets(worldObj.getTileEntity(xCoord - 2, yCoord, zCoord - 1)); - manageNets(worldObj.getTileEntity(xCoord - 2, yCoord, zCoord + 1)); - manageNets(worldObj.getTileEntity(xCoord - 1, yCoord, zCoord + 2)); - manageNets(worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 2)); - manageNets(worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 2)); - manageNets(worldObj.getTileEntity(xCoord + 1, yCoord, zCoord - 2)); - - super.connect(); + public List getConnectionPoints() { + List pos = new ArrayList(connected); + pos.add(new int[] {xCoord + 2, yCoord, zCoord - 1}); + pos.add(new int[] {xCoord + 2, yCoord, zCoord + 1}); + pos.add(new int[] {xCoord - 2, yCoord, zCoord - 1}); + pos.add(new int[] {xCoord - 2, yCoord, zCoord + 1}); + pos.add(new int[] {xCoord - 1, yCoord, zCoord + 2}); + pos.add(new int[] {xCoord + 1, yCoord, zCoord + 2}); + pos.add(new int[] {xCoord - 1, yCoord, zCoord - 2}); + pos.add(new int[] {xCoord + 1, yCoord, zCoord - 2}); + return pos; } - - private void manageNets(TileEntity te) { - - if(te instanceof IEnergyConductor) { - - IEnergyConductor conductor = (IEnergyConductor) te; - - if(this.getPowerNet() == null && conductor.getPowerNet() != null) { - conductor.getPowerNet().joinLink(this); - } - - if(this.getPowerNet() != null && conductor.getPowerNet() != null && this.getPowerNet() != conductor.getPowerNet()) { - conductor.getPowerNet().joinNetworks(this.getPowerNet()); - } - } + + @Override + public boolean hasProxies() { + return true; + } + + @Override + public List getProxies() { + List proxies = new ArrayList(); + proxies.add(IEnergyConductor.getIdentityFromPos(xCoord + 1, yCoord, zCoord + 1)); + proxies.add(IEnergyConductor.getIdentityFromPos(xCoord + 1, yCoord, zCoord - 1)); + proxies.add(IEnergyConductor.getIdentityFromPos(xCoord - 1, yCoord, zCoord + 1)); + proxies.add(IEnergyConductor.getIdentityFromPos(xCoord - 1, yCoord, zCoord - 1)); + return proxies; } } diff --git a/src/main/java/com/hbm/util/ChatBuilder.java b/src/main/java/com/hbm/util/ChatBuilder.java index 6ed56f8ee..0140af364 100644 --- a/src/main/java/com/hbm/util/ChatBuilder.java +++ b/src/main/java/com/hbm/util/ChatBuilder.java @@ -21,6 +21,11 @@ public class ChatBuilder { return builder; } + public static ChatBuilder startTranslation(String text) { + ChatBuilder builder = new ChatBuilder("").nextTranslation(text); + return builder; + } + public ChatBuilder next(String text) { ChatComponentText append = new ChatComponentText(text); this.last.appendSibling(append); diff --git a/src/main/java/com/hbm/util/ColorUtil.java b/src/main/java/com/hbm/util/ColorUtil.java new file mode 100644 index 000000000..1cfcfe039 --- /dev/null +++ b/src/main/java/com/hbm/util/ColorUtil.java @@ -0,0 +1,159 @@ +package com.hbm.util; + +import java.awt.Color; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import javax.imageio.ImageIO; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class ColorUtil { + + @SideOnly(Side.CLIENT) + public static BufferedImage getImageFromStack(ItemStack stack) throws IOException { + String iconName = stack.getItem().getIconFromDamage(stack.getItemDamage()).getIconName(); + String domain = "minecraft"; + + if(iconName.contains(":")) { + String[] parts = iconName.split(":"); + domain = parts[0]; + iconName = parts[1]; + } + + ResourceLocation loc = new ResourceLocation(domain, "textures/items/" + iconName + ".png"); + + return ImageIO.read(Minecraft.getMinecraft().getResourceManager().getResource(loc).getInputStream()); + } + + @SideOnly(Side.CLIENT) + public static int getAverageColorFromStack(ItemStack stack) { + + try { + BufferedImage tex = getImageFromStack(stack); + + int r = 0; + int g = 0; + int b = 0; + int pixels = 0; + + for(int i = 0; i < tex.getWidth(); i++) { + for(int j = 0; j < tex.getHeight(); j++) { + + Color pixel = new Color(tex.getRGB(i, j)); + + if(pixel.getAlpha() == 255) { + r += pixel.getRed(); + g += pixel.getGreen(); + b += pixel.getBlue(); + pixels++; + } + } + } + + int avgR = r / pixels; + int avgG = g / pixels; + int avgB = b / pixels; + + return (avgR << 16) | (avgG << 8) | avgB; + + } catch(Exception ex) { + return 0xFFFFFF; + } + } + + @SideOnly(Side.CLIENT) + public static int getMedianBrightnessColorFromStack(ItemStack stack) { + + try { + BufferedImage tex = getImageFromStack(stack); + + HashMap brightMap = new HashMap(); + List brightnesses = new ArrayList(); + + for(int i = 0; i < tex.getWidth(); i++) { + for(int j = 0; j < tex.getHeight(); j++) { + + Color pixel = new Color(tex.getRGB(i, j)); + int brightness = pixel.getRed() * pixel.getRed() + pixel.getGreen() * pixel.getGreen() + pixel.getBlue() * pixel.getBlue(); + brightnesses.add(brightness); + brightMap.put(brightness, pixel); //overlap possible, but we don't differentiate between colors anyway. + } + } + + Collections.sort(brightnesses); + int median = brightnesses.get(brightnesses.size() / 2); + Color medianColor = brightMap.get(median); + + return medianColor.getRGB(); + + } catch(Exception ex) { + return 0xFFFFFF; + } + } + + /** + * Decides whether a color is considered "colorful", i.e. weeds out colors that are too dark or too close to gray. + * @param hex + * @return + */ + public static boolean isColorColorful(int hex) { + Color color = new Color(hex); + + /*double r = color.getRed(); + double g = color.getBlue(); + double b = color.getGreen(); + + if(r < 50 && g < 50 && b < 50) + return false; + + if(r / g > 1.5) return true; + if(r / b > 1.5) return true; + if(g / r > 1.5) return true; + if(g / b > 1.5) return true; + if(b / r > 1.5) return true; + if(b / g > 1.5) return true;*/ + + float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[3]); + + // saturation brightness + return hsb[1] > 0.25 && hsb[2] > 0.25; + } + + /** + * Raises the highest RGB component to the specified limit, scaling the other components with it. + * @param hex + * @param limit + * @return + */ + public static int amplifyColor(int hex, int limit) { + Color color = new Color(hex); + int r = color.getRed(); + int g = color.getGreen(); + int b = color.getBlue(); + int max = Math.max(Math.max(1, r), Math.max(g, b)); + + r = r * limit / max; + g = g * limit / max; + b = b * limit / max; + + return new Color(r, g, b).getRGB(); + } + + /** + * Same as the regular amplifyColor but it uses 255 as the limit. + * @param hex + * @return + */ + public static int amplifyColor(int hex) { + return amplifyColor(hex, 255); + } +} diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index 643ef1f91..ed5eb304d 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -1,8 +1,14 @@ package com.hbm.util; +import java.util.ArrayList; +import java.util.List; + import com.hbm.hazard.HazardRegistry; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; public class Compat { @@ -62,4 +68,29 @@ public class Compat { return this.rads; } } + + public static List scrapeItemFromME(ItemStack meDrive) { + List stacks = new ArrayList(); + + if(meDrive != null && meDrive.hasTagCompound()) { + NBTTagCompound nbt = meDrive.getTagCompound(); + int types = nbt.getShort("it"); //ITEM_TYPE_TAG + + for(int i = 0; i < types; i++) { + NBTBase stackTag = nbt.getTag("#" + i); + + if(stackTag instanceof NBTTagCompound) { + NBTTagCompound compound = (NBTTagCompound) stackTag; + ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + + int count = nbt.getInteger("@" + i); + stack.stackSize = count; + + stacks.add(stack); + } + } + } + + return stacks; + } } diff --git a/src/main/java/com/hbm/util/ContaminationUtil.java b/src/main/java/com/hbm/util/ContaminationUtil.java index 6e8705b86..1710ff5cf 100644 --- a/src/main/java/com/hbm/util/ContaminationUtil.java +++ b/src/main/java/com/hbm/util/ContaminationUtil.java @@ -1,6 +1,5 @@ package com.hbm.util; -import com.hbm.config.GeneralConfig; import com.hbm.entity.mob.EntityDuck; import com.hbm.entity.mob.EntityNuclearCreeper; import com.hbm.entity.mob.EntityQuackos; @@ -274,7 +273,7 @@ public class ContaminationUtil { return false; } - if(hazard == HazardType.RADIATION && (isRadImmune(entity) || !GeneralConfig.enableRads)) + if(hazard == HazardType.RADIATION && isRadImmune(entity)) return false; switch(hazard) { diff --git a/src/main/java/com/hbm/world/feature/Meteorite.java b/src/main/java/com/hbm/world/feature/Meteorite.java index 17a09054e..3bbd1612a 100644 --- a/src/main/java/com/hbm/world/feature/Meteorite.java +++ b/src/main/java/com/hbm/world/feature/Meteorite.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; +import com.hbm.config.WorldConfig; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNukeGeneric; @@ -37,7 +38,7 @@ public class Meteorite { e.attackEntityFrom(ModDamageSource.meteorite, 1000); } - if(GeneralConfig.enableSpecialMeteors) + if(WorldConfig.enableSpecialMeteors) switch(rand.nextInt(300)) { case 0: // Meteor-only tiny meteorite diff --git a/src/main/java/com/hbm/world/feature/OilSpot.java b/src/main/java/com/hbm/world/feature/OilSpot.java index 8b6d0d52b..35fc16e2d 100644 --- a/src/main/java/com/hbm/world/feature/OilSpot.java +++ b/src/main/java/com/hbm/world/feature/OilSpot.java @@ -14,22 +14,32 @@ public class OilSpot { for(int i = 0; i < count; i++) { int rX = x + (int)(world.rand.nextGaussian() * width); int rZ = z + (int)(world.rand.nextGaussian() * width); - int rY = world.getHeightValue(rX, rZ) - 1; + int rY = world.getHeightValue(rX, rZ); - Block ground = world.getBlock(rX, rY, rZ); - - if(ground == Blocks.grass || ground == Blocks.dirt) { - world.setBlock(rX, rY, rZ, world.rand.nextInt(10) == 0 ? ModBlocks.dirt_oily : ModBlocks.dirt_dead); + for(int y = rY; y > rY - 4; y--) { - } else if(ground == Blocks.sand || ground == ModBlocks.ore_oil_sand) { + Block ground = world.getBlock(rX, y, rZ); - if(world.getBlockMetadata(rX, rY, rZ) == 1) - world.setBlock(rX, rY, rZ, ModBlocks.sand_dirty_red); - else - world.setBlock(rX, rY, rZ, ModBlocks.sand_dirty); - - } else if(ground.getMaterial() == Material.leaves) { - world.setBlockToAir(rX, rY, rZ); + if(ground == Blocks.grass || ground == Blocks.dirt) { + world.setBlock(rX, y, rZ, world.rand.nextInt(10) == 0 ? ModBlocks.dirt_oily : ModBlocks.dirt_dead); + break; + + } else if(ground == Blocks.sand || ground == ModBlocks.ore_oil_sand) { + + if(world.getBlockMetadata(rX, y, rZ) == 1) + world.setBlock(rX, y, rZ, ModBlocks.sand_dirty_red); + else + world.setBlock(rX, y, rZ, ModBlocks.sand_dirty); + break; + + } else if(ground == Blocks.stone) { + world.setBlock(rX, y, rZ, ModBlocks.stone_cracked); + break; + + } else if(ground.getMaterial() == Material.leaves) { + world.setBlockToAir(rX, y, rZ); + break; + } } } } diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java new file mode 100644 index 000000000..0dba4397b --- /dev/null +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -0,0 +1,165 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockStalagmite; +import com.hbm.inventory.RecipesCommon.MetaBlock; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraft.world.gen.NoiseGeneratorPerlin; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; + +public class OreCave { + + private NoiseGeneratorPerlin noise; + private MetaBlock ore; + /** The number that is being deducted flat from the result of the perlin noise before all other processing. Increase this to make strata rarer. */ + private double threshold = 2D; + /** The mulitplier for the remaining bit after the threshold has been deducted. Increase to make strata wavier. */ + private int rangeMult = 3; + /** The maximum range after multiplying - anything above this will be subtracted from (maxRange * 2) to yield the proper range. Increase this to make strata thicker. */ + private int maxRange = 4; + /** The y-level around which the stratum is centered. */ + private int yLevel = 30; + private Block fluid; + + public OreCave(Block ore) { + this(ore, 0); + } + + public OreCave(Block ore, int meta) { + this.ore = new MetaBlock(ore, meta); + MinecraftForge.EVENT_BUS.register(this); + } + + public OreCave setThreshold(double threshold) { + this.threshold = threshold; + return this; + } + + public OreCave setRangeMult(int rangeMult) { + this.rangeMult = rangeMult; + return this; + } + + public OreCave setMaxRange(int maxRange) { + this.maxRange = maxRange; + return this; + } + + public OreCave setYLevel(int yLevel) { + this.yLevel = yLevel; + return this; + } + + public OreCave withFluid(Block fluid) { + this.fluid = fluid; + return this; + } + + @SuppressWarnings("incomplete-switch") + @SubscribeEvent + public void onDecorate(DecorateBiomeEvent.Pre event) { + + if(this.noise == null) { + this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 2); + } + + World world = event.world; + + if(world.provider.dimensionId != 0) + return; + + int cX = event.chunkX; + int cZ = event.chunkZ; + + double scale = 0.01D; + + for(int x = cX; x < cX + 16; x++) { + for(int z = cZ; z < cZ + 16; z++) { + + double n = noise.func_151601_a(x * scale, z * scale); + + if(n > threshold) { + int range = (int)((n - threshold) * rangeMult); + + if(range > maxRange) + range = (maxRange * 2) - range; + + if(range < 0) + continue; + + for(int y = yLevel - range; y <= yLevel + range; y++) { + Block genTarget = world.getBlock(x, y, z); + + if(genTarget.isNormalCube() && (genTarget.getMaterial() == Material.rock || genTarget.getMaterial() == Material.ground)) { + + boolean shouldGen = false; + boolean canGenFluid = event.rand.nextBoolean(); + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + Block neighbor = world.getBlock(MathHelper.clamp_int(x + dir.offsetX, cX, cX + 16), y + dir.offsetY, MathHelper.clamp_int(z + dir.offsetZ, cZ, cZ + 16)); + if(neighbor.getMaterial() == Material.air || neighbor instanceof BlockStalagmite) { + shouldGen = true; + } + + if(shouldGen && (fluid == null || !canGenFluid)) + break; + + if(fluid != null) { + switch(dir) { + case UP: if(neighbor.getMaterial() != Material.air && !(neighbor instanceof BlockStalagmite)) canGenFluid = false; break; + case DOWN: if(!neighbor.isNormalCube()) canGenFluid = false; break; + case NORTH: + case SOUTH: + case EAST: + case WEST: + if(!neighbor.isNormalCube() && neighbor != fluid) canGenFluid = false; break; + } + } + } + + if(fluid != null && canGenFluid) { + world.setBlock(x, y, z, fluid, 0, 2); + world.setBlock(x, y - 1, z, ore.block, ore.meta, 2); + + for(int i = 2; i < 6; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + int clX = MathHelper.clamp_int(x + dir.offsetX, cX, cX + 16); + int clZ = MathHelper.clamp_int(z + dir.offsetZ, cZ, cZ + 16); + Block neighbor = world.getBlock(clX, y, clZ); + + if(neighbor.isNormalCube()) + world.setBlock(clX, y, clZ, ore.block, ore.meta, 2); + } + + } else if(shouldGen) { + world.setBlock(x, y, z, ore.block, ore.meta, 2); + } + + } else { + + if((genTarget.getMaterial() == Material.air || !genTarget.isNormalCube()) && event.rand.nextInt(5) == 0) { + + if(ModBlocks.stalactite.canPlaceBlockAt(world, x, y, z)) { + world.setBlock(x, y, z, ModBlocks.stalactite, ore.meta, 2); + } else { + if(ModBlocks.stalagmite.canPlaceBlockAt(world, x, y, z)) { + world.setBlock(x, y, z, ModBlocks.stalagmite, ore.meta, 2); + } + } + } + } + } + } + } + } + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index e9c2e7d07..b28998d0a 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -137,6 +137,7 @@ chem.DEUTERIUM=Deuteriumextrahierung chem.DYN_DNT=Dineutronium-Dynosynthese chem.DYN_EUPH=Euphemium-Dynosynthese chem.DYN_SCHRAB=Schrabidium-Dynosynthese +chem.DYNAMITE=Dynamitherstellung chem.ELECTROLYSIS=Kryo-Elektrolyse chem.EPEARL=Enderperlen-Synthese chem.ETHANOL=Ethanolherstellung @@ -946,6 +947,7 @@ item.can_empty.name=Leere Dose item.can_key.name=Dosenschlüssel item.can_luna.name=Black Mesa Luna - Dark Cola item.can_mrsugar.name='Dr. Sugar' Softdrink +item.can_mug.name=MUG Root Beer item.can_overcharge.name=Overcharge Delirium XT item.can_redbomb.name='Red Bomb' Energy-Drink item.can_smart.name='Smart' Energy-Drink @@ -1059,6 +1061,8 @@ item.chopper_wing.name=Jagdschrauber Seitentragfläche item.cigarette.name=FFI-Markenzigarette item.cinnebar.name=Zinnober item.circuit_aluminium.name=Einfacher Schaltkreis +item.circuit_arsenic.name=Adaptives Chipset +item.circuit_arsenic_raw.name=Arsen-Schaltkreisrohling item.circuit_bismuth.name=Vielfältiges Chipset item.circuit_bismuth_raw.name=Bismuth-Schaltkreisrohling item.circuit_copper.name=Erweiterter Schaltkreis @@ -1606,6 +1610,7 @@ item.ingot_am_mix.name=Reaktorfähiger Americiumbarren item.ingot_am241.name=Americium-241-Barren item.ingot_am242.name=Americium-242-Barren item.ingot_americium_fuel.name=Americiumkernbrennstoffbarren +item.ingot_arsenic.name=Arsenbarren item.ingot_asbestos.name=Asbestplatte item.ingot_au198.name=Gold-198-Barren item.ingot_australium.name=Australiumbarren @@ -1994,6 +1999,7 @@ item.nugget.name=Chicken Nugget item.nugget_am_mix.name=Reaktorfähiges Americiumnugget item.nugget_am241.name=Americium-241-Nugget item.nugget_am242.name=Americium-242-Nugget +item.nugget_arsenic.name=Arsennugget item.nugget_au198.name=Gold-198-Nugget item.nugget_americium_fuel.name=Americiumkernbrennstoffnugget item.nugget_australium.name=Australiumnugget @@ -2260,6 +2266,7 @@ item.powder_xe135.name=Xenon-135-Staub item.powder_xe135_tiny.name=Kleiner Haufen Xenon-135-Staub item.powder_yellowcake.name=Yellowcake item.powder_zirconium.name=Zirkoniumstaub +item.power_net_tool.name=Stromnetz-Analysewerkzeug item.primer_357.name=.357 Magnum-Zündhütchen (x24) item.primer_44.name=.44 Magnum-Zündhütchen (x24) item.primer_50.name=Großkaliber-Zündhütchen (x12) @@ -3445,6 +3452,7 @@ tile.ore_niter.name=Salpetererz tile.ore_oil.name=Ölvorkommen tile.ore_oil_empty.name=Leeres Ölvorkommen tile.ore_oil_sand.name=Teersand +tile.ore_random.name=%s-Erz tile.ore_rare.name=Seltenerden-Erz tile.ore_reiium.name=Reiit tile.ore_schrabidium.name=Schrabidiumerz @@ -3505,6 +3513,7 @@ tile.reactor_hatch.name=Kraftwerkszugriffsluke tile.reactor_inserter.name=Reaktor-Brennstoffeinlass tile.red_barrel.name=Explosives Fass tile.red_cable.name=Rotes Kupferkabel +tile.red_cable_classic.name=Rotes Kupferkabel (Klassisch) tile.red_connector.name=Stromverbindungsstück tile.red_pylon.name=Strommasten tile.red_pylon_large.name=Hochspannungsmasten @@ -3553,6 +3562,10 @@ tile.solar_mirror.name=Heliostatspiegel tile.soyuz_capsule.name=Landekapsel tile.soyuz_launcher.name=Soyuz-Startplatform tile.spikes.name=Stacheln +tile.stalactite.asbestos.name=Asbest-Stalaktit +tile.stalactite.sulfur.name=Schwefelhaltiger Stalaktit +tile.stalagmite.asbestos.name=Asbest-Stalagmit +tile.stalagmite.sulfur.name=Schwefelhaltiger Stalagmit tile.steel_beam.name=Stahlträger tile.steel_corner.name=Stahlwand (Ecke) tile.steel_grate.name=Stahlgitter @@ -3564,6 +3577,8 @@ tile.stone_depth.name=Tiefenfels tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_gneiss.name=Graphitschiefer tile.stone_porous.name=Poröser Stein +tile.stone_resource.asbestos.name=Chrysotil +tile.stone_resource.sulfur.name=Schwefelhaltiger Stein tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente tile.struct_launcher.name=Startrampe-Komponentenblock tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6e2a95097..6b6e3ff7a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -306,6 +306,7 @@ chem.DUCRETE=Ducrete Production chem.DYN_DNT=Dineutronium Dynosynthesis chem.DYN_EUPH=Euphemium Dynosynthesis chem.DYN_SCHRAB=Schrabidium Dynosynthesis +chem.DYNAMITE=Dynamite Synthesis chem.ELECTROLYSIS=Cryo-Electrolysis chem.EPEARL=Ender Pearl Synthesis chem.ETHANOL=Ethanol Production @@ -1156,6 +1157,7 @@ item.can_empty.name=Empty Can item.can_key.name=Winding Key item.can_luna.name=Black Mesa Luna - Dark Cola item.can_mrsugar.name='Dr. Sugar' Soft Drink +item.can_mug.name=MUG Root Beer item.can_overcharge.name=Overcharge Delirium XT item.can_redbomb.name='Red Bomb' Energy Drink item.can_smart.name='Smart' Energy Drink @@ -1270,6 +1272,8 @@ item.chopper_wing.name=Hunter Chopper Wing item.cigarette.name=FFI-Brand Cigarette item.cinnebar.name=Cinnabar item.circuit_aluminium.name=Basic Circuit +item.circuit_arsenic.name=Adaptable Circuit +item.circuit_arsenic_raw.name=Adaptable Circuit Assembly item.circuit_bismuth.name=Versatile Chipset item.circuit_bismuth_raw.name=Versatile Chipset Assembly item.circuit_copper.name=Enhanced Circuit @@ -1837,8 +1841,9 @@ item.ingot_am_mix.name=Reactor Grade Americium Ingot item.ingot_am241.name=Americium-241 Ingot item.ingot_am242.name=Americium-242 Ingot item.ingot_americium_fuel.name=Ingot of Americium Fuel +item.ingot_arsenic.name=Arsenic Ingot item.ingot_asbestos.name=Asbestos Sheet -item.ingot_asbestos.desc=§o\"Filled with life, self-doubt and asbestos. That comes with the air.\"§r +item.ingot_asbestos.desc=§o"Filled with life, self-doubt and asbestos. That comes with the air."§r item.ingot_au198.name=Gold-198 Ingot item.ingot_australium.name=Australium Ingot item.ingot_bakelite.name=Bakelite Bar @@ -2254,6 +2259,7 @@ item.nugget_am_mix.name=Reactor Grade Americium Nugget item.nugget_am241.name=Americium-241 Nugget item.nugget_am242.name=Americium-242 Nugget item.nugget_americium_fuel.name=Americium Fuel Nugget +item.nugget_arsenic.name=Arsenic Nugget item.nugget_au198.name=Gold-198 Nugget item.nugget_australium.name=Australium Nugget item.nugget_australium_greater.name=Greater Australium Nugget @@ -2568,6 +2574,7 @@ item.powder_xe135.name=Xenon-135 Powder item.powder_xe135_tiny.name=Tiny Pile of Xenon-135 Powder item.powder_yellowcake.name=Yellowcake item.powder_zirconium.name=Zirconium Powder +item.power_net_tool.name=Cable Network Analysis Tool item.primer_357.name=.357 Magnum Primer (x24) item.primer_44.name=.44 Magnum Primer (x24) item.primer_50.name=Large Caliber Primer (x12) @@ -3818,6 +3825,7 @@ tile.ore_niter.name=Niter Ore tile.ore_oil.name=Oil Deposit tile.ore_oil_empty.name=Empty Oil Deposit tile.ore_oil_sand.name=Tar Sand +tile.ore_random.name=%s Ore tile.ore_rare.name=Rare Earth Ore tile.ore_reiium.name=Reiite tile.ore_schrabidium.name=Schrabidium Ore @@ -3878,6 +3886,7 @@ tile.reactor_hatch.name=Reactor Access Hatch tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable +tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole tile.red_pylon_large.name=Large Electricity Pylon @@ -3926,6 +3935,10 @@ tile.solar_mirror.name=Heliostat Mirror tile.soyuz_capsule.name=Cargo Landing Capsule tile.soyuz_launcher.name=Soyuz Launch Platform tile.spikes.name=Spikes +tile.stalactite.asbestos.name=Asbestos Stalactite +tile.stalactite.sulfur.name=Sulfurous Stalactite +tile.stalagmite.asbestos.name=Asbestos Stalagmite +tile.stalagmite.sulfur.name=Sulfurous Stalagmite tile.steel_beam.name=Steel Beam tile.steel_corner.name=Steel Wall Corner tile.steel_grate.name=Steel Grate @@ -3937,6 +3950,8 @@ tile.stone_depth.name=Depth Rock tile.stone_depth_nether.name=Nether Depth Rock tile.stone_gneiss.name=Graphitic Schist tile.stone_porous.name=Porous Stone +tile.stone_resource.asbestos.name=Chrysotile +tile.stone_resource.sulfur.name=Sulfurous Stone tile.struct_iter_core.name=Fusion Reactor Core Component tile.struct_launcher.name=Launch Pad Component Block tile.struct_launcher_core.name=Compact Launcher Core Component diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 2148361ee..82e173fce 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -206,6 +206,7 @@ armor.ignoreLimit=Сопротивление не завиÑит от преде armor.rocketBoots=Ракетные ботинки armor.sprintBoost=УÑкоренный бег armor.projectileProtection=Модификатор урона %s от ÑнарÑдов +armor.dash=Даёт %s дешей hazard.prot=Защищает от: hazard.noprot=ÐЕ защищает от: @@ -1033,6 +1034,7 @@ chem.LUBRICANT=Смешивание машинной Ñмазки chem.PETROIL_LEADED=Смешивание Ñтилированного бензина chem.RUBBER=ПроизводÑтво резины chem.TNT=Синтез ТÐТ +chem.DYNAMITE=Синтез динамита item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core item.record.ss.desc=Valve - Sector Sweep @@ -1894,7 +1896,7 @@ item.ingot_electronium.name=Электрониевый Ñлиток item.ingot_fiberglass.name=Стекловолокно item.ingot_fiberglass.desc=С выÑоким Ñодержанием волокна, Ñ Ð²Ñ‹Ñоким Ñодержанием Ñтекла. Ð’Ñе, что нужно организму. item.ingot_asbestos.name=ÐÑбеÑтовый лиÑÑ‚ -item.ingot_asbestos.desc=§o\"Ðаполненный жизнью, неуверенноÑтью в Ñебе и аÑбеÑтом. Это приходит вмеÑте Ñ Ð²Ð¾Ð·Ð´ÑƒÑ…Ð¾Ð¼.\"§r +item.ingot_asbestos.desc=§o"Ðаполненный жизнью, неуверенноÑтью в Ñебе и аÑбеÑтом. Это приходит вмеÑте Ñ Ð²Ð¾Ð·Ð´ÑƒÑ…Ð¾Ð¼."§r item.solid_fuel.name=Твердое топливо item.solid_fuel_presto.name=Топливное полено @@ -2236,6 +2238,7 @@ tile.ore_bedrock_coltan.name=Ð‘ÐµÐ´Ñ€Ð¾ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð»Ñ‚Ð°Ð½Ð¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð° tile.ore_bedrock_oil.name=Бедроковый нефтÑной плаÑÑ‚ tile.ore_cobalt.name=ÐšÐ¾Ð±Ð°Ð»ÑŒÑ‚Ð¾Ð²Ð°Ñ Ñ€ÑƒÐ´Ð° tile.stone_porous.name=ПориÑтый камень +tile.ore_random.name=%s руды tile.bobblehead.name=Болванчик tile.deco_titanium.name=Титановый декоративный блок @@ -2365,6 +2368,12 @@ tile.tile_lab.name=Ð›Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ð»Ð¸Ñ‚ÐºÐ° tile.tile_lab_broken.name=Ð Ð°Ð·Ð±Ð¸Ñ‚Ð°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ð»Ð¸Ñ‚ÐºÐ° tile.tile_lab_cracked.name=ТреÑÐ½ÑƒÐ²ÑˆÐ°Ñ Ð»Ð°Ð±Ð¾Ñ€Ð°Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ð»Ð¸Ñ‚ÐºÐ° tile.spikes.name=Шипы +tile.stalactite.sulfur.name=СерниÑтый Ñталактит +tile.stalagmite.sulfur.name=СерниÑтый Ñталагмит +tile.stalactite.asbestos.name=ÐÑбеÑтовый Ñталактит +tile.stalagmite.asbestos.name=ÐÑбеÑтовый Ñталагмит +tile.stone_resource.asbestos.name=Хризотил +tile.stone_resource.sulfur.name=СерниÑтый камень tile.gas_asbestos.name=ЧаÑтицы аÑбеÑта в воздухе tile.gas_flammable.name=Горючий газ tile.gas_monoxide.name=Угарный газ @@ -3656,6 +3665,8 @@ item.rod_quad_euphemium.name=Выгоревший Ñчетверённый шр item.plate_euphemium.name=СоÑÑ‚Ð°Ð²Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина из ÑÐ²Ñ„ÐµÐ¼Ð¸Ñ item.plate_dineutronium.name=СоÑÑ‚Ð°Ð²Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина из Ð´Ð¸Ð½ÐµÐ¹Ñ‚Ñ€Ð¾Ð½Ð¸Ñ item.plate_desh.name=СоÑÑ‚Ð°Ð²Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина из деш +item.plate_bismuth.name=СоÑÑ‚Ð°Ð²Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина из виÑмута +item.plate_bismuth.desc=РебÑта, клÑнуÑÑŒ, Ñто алхимичеÑкий Ñимвол ВиÑмута. item.plate_fuel_mox.name=МОКС-Ñ‚Ð¾Ð¿Ð»Ð¸Ð²Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина item.plate_fuel_pu238be.name=Плутоний-238-Ð‘ÐµÑ€Ð¸Ð»Ð»ÐµÐ²Ð°Ñ Ñ‚Ð¾Ð¿Ð»Ð¸Ð²Ð½Ð°Ñ Ð¿Ð»Ð°Ñтина @@ -4002,6 +4013,10 @@ item.hev_helmet.name=Шлем H.E.V Модели IV item.hev_legs.name=Поножи H.E.V Модели IV item.hev_battery.name=Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐºÐ¾Ñтюма tile.hev_battery.name=Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÐºÐ¾Ñтюма +item.bismuth_boots.name=Сандали из виÑмута +item.bismuth_helmet.name=Головной убор из виÑмута +item.bismuth_legs.name=Ðаколенники из виÑмута +item.bismuth_plate.name=Ðаплечники, ожерелье и Ð½Ð°Ð±ÐµÐ´Ñ€ÐµÐ½Ð½Ð°Ñ Ð¿Ð¾Ð²Ñзка из виÑмута tile.mush.name=СветÑщийÑÑ Ð³Ñ€Ð¸Ð± tile.waste_mycelium.name=СветÑщийÑÑ Ð¼Ð¸Ñ†ÐµÐ»Ð¸Ð¹ @@ -4161,6 +4176,7 @@ item.crucible.name="Горнило Палача" item.bismuth_pickaxe.name=ВиÑÐ¼ÑƒÑ‚Ð¾Ð²Ð°Ñ ÐºÐ¸Ñ€ÐºÐ° tile.red_cable.name=Провод из краÑной меди +tile.red_cable_classic.name=Провод из краÑной меди (Старый) tile.red_connector.name=ЭлектричеÑкий коннектор tile.block_meteor.name=Блок метеорита @@ -4346,6 +4362,7 @@ item.canned_kerosene.name=КонÑервированный кероÑин item.canned_recursion.name=КонÑÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ñ€ÐµÐºÑƒÑ€ÑÐ¸Ñ item.canned_bark.name=КонÑервы вÑленой ÑоÑновой коры item.spongebob_macaroni.name=Сырные макаронны "Губка Боб" +item.can_mug.name=MUG Root Beer item.can_key.name=Винтовой ключ item.nugget.name=Куриный Ð½Ð°Ð³Ð³ÐµÑ‚Ñ item.marshmallow.name=Зефир на палочке diff --git a/src/main/resources/assets/hbm/models/armor/bismuth.obj b/src/main/resources/assets/hbm/models/armor/bismuth.obj index d07f664f0..f81faca67 100644 --- a/src/main/resources/assets/hbm/models/armor/bismuth.obj +++ b/src/main/resources/assets/hbm/models/armor/bismuth.obj @@ -1,218 +1,408 @@ -# Blender v2.79 (sub 0) OBJ File: 'bismuth_armor.blend' +# Blender v2.79 (sub 0) OBJ File: '' # www.blender.org -mtllib bismuth.mtl -o RightFoot -v -4.141729 24.067028 2.136320 -v 0.124961 24.067026 2.136320 -v -4.141729 24.067028 -2.130370 -v -4.141729 22.765120 -2.130370 -v 0.124961 24.067026 -2.130370 -v 0.124961 22.765116 -2.130370 -v -2.008385 21.575682 -3.487657 -v -2.008384 24.067026 -3.487657 -vt 0.144578 0.823529 -vt 0.180723 0.941176 -vt 0.144578 0.941176 -vt 0.048193 0.941176 -vt 0.144578 0.941176 -vt 0.096386 0.970588 -vt 0.048193 0.941176 -vt 0.012048 0.941176 -vt 0.048193 0.823529 -vt 0.144578 1.000000 -vt 0.048193 1.000000 -vt 0.000000 1.000000 -vt 0.096386 0.970588 -vt 0.192771 1.000000 -vn 1.0000 -0.0000 0.0000 -vn -0.0000 -0.7521 0.6591 -vn -1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.5368 -0.0000 -0.8437 -vn -0.5368 0.0000 -0.8437 -usemtl None -s off -f 2/1/1 6/2/1 5/3/1 -f 6/4/2 4/5/2 7/6/2 -f 3/7/3 4/8/3 1/9/3 -f 5/3/4 1/9/4 2/1/4 -f 6/2/5 8/10/5 5/3/5 -f 4/8/6 8/11/6 7/12/6 -f 3/7/4 5/3/4 8/13/4 -f 5/3/4 3/7/4 1/9/4 -f 6/2/5 7/14/5 8/10/5 -f 4/8/6 3/7/6 8/11/6 -o RightArm -v -3.868196 -1.385486 2.089541 -v -3.868194 2.482796 2.089541 -v -6.727931 -1.385484 2.089541 -v -6.727929 2.482797 2.089541 -v -3.868196 -1.385486 -2.083592 -v -3.868194 2.482796 -2.083592 -v -6.727931 -1.385484 -2.083592 -v -6.727929 2.482797 -2.083592 -v -5.583236 4.039337 2.089541 -v -8.419424 4.039339 2.089541 -v -8.419426 0.171058 2.089541 -v -8.419426 0.171058 -2.083591 -v -8.419424 4.039339 -2.083591 -v -5.583236 4.039337 -2.083592 -v -5.721349 -2.606914 1.081455 -v -4.874778 -2.606915 1.081455 -v -4.874778 -2.606915 -1.075505 -v -5.721349 -2.606914 -1.075505 -v -9.559078 0.957293 1.081455 -v -9.559078 0.957293 -1.075505 -v -9.559076 3.253101 -1.075505 -v -9.559076 3.253101 1.081455 -v -8.000977 -1.823888 -1.075505 -v -8.631191 -1.243954 -1.075505 -v -8.631191 -1.243954 1.081455 -v -8.000977 -1.823888 1.081455 -v -4.496462 -2.606915 1.567900 -v -6.099665 -2.606914 1.567900 -v -4.496462 -2.606915 -1.561950 -v -6.099665 -2.606914 -1.561950 -v -9.559078 0.439535 -1.561950 -v -9.559078 0.439535 1.567900 -v -9.559076 3.770859 -1.561950 -v -9.559076 3.770859 1.567900 -v -8.950394 -0.950218 -1.561950 -v -7.681774 -2.117624 -1.561950 -v -8.950394 -0.950218 1.567900 -v -7.681774 -2.117624 1.567900 -v -5.721350 -4.274494 1.081455 -v -4.874779 -4.274494 1.081455 -v -4.874779 -4.274494 -1.075505 -v -5.721350 -4.274494 -1.075505 -v -11.115009 0.957294 1.081455 -v -11.115009 0.957294 -1.075505 -v -11.115007 3.253102 -1.075505 -v -11.115007 3.253102 1.081455 -v -9.014559 -3.089092 -1.075505 -v -9.644773 -2.509160 -1.075505 -v -9.644773 -2.509159 1.081455 -v -9.014559 -3.089093 1.081455 -v -6.110137 7.776291 1.993027 -v -6.110137 7.592242 2.319573 -v -6.110137 7.399228 1.993027 -v -5.221390 7.408160 1.993027 -v -5.351533 7.278018 2.319573 -v -5.488015 7.141536 1.993027 -v -4.853261 6.519414 1.993027 -v -5.037309 6.519414 2.319573 -v -5.230323 6.519414 1.993027 -v -5.221392 5.630669 1.993027 -v -5.351534 5.760811 2.319573 -v -5.488016 5.897292 1.993027 -v -6.110137 5.262538 1.993027 -v -6.110137 5.446588 2.319573 -v -6.110137 5.639601 1.993027 -v -6.998883 5.630669 1.993027 -v -6.868741 5.760811 2.319573 -v -6.732259 5.897293 1.993027 -v -7.367013 6.519414 1.993027 -v -7.182964 6.519414 2.319573 -v -6.989950 6.519414 1.993027 -v -6.998883 7.408160 1.993027 -v -6.868741 7.278018 2.319573 -v -6.732259 7.141537 1.993027 -v -8.033747 6.630578 -2.020720 -v -8.033749 6.394355 -2.020720 -v -3.986356 6.630577 -2.020720 -v -3.986357 6.394354 -2.020720 -v -8.033747 6.917206 2.026670 -v -8.033749 6.107728 2.026670 -v -3.986357 6.917205 2.026670 -v -3.986358 6.107727 2.026670 -v -7.099485 6.917206 2.026670 -v -5.142802 6.107728 2.026670 -v -7.099486 6.107728 2.026670 -v -5.142801 6.917206 2.026670 -vt 0.058610 0.440457 +o Body +v -0.010055 8.739575 -1.996005 +v 0.755152 6.975003 -1.996005 +v -0.010056 6.975003 -2.761213 +v -0.775265 6.975004 -1.996004 +v -0.010057 5.273831 -1.996004 +v 2.354269 3.663156 -2.018208 +v 1.989216 4.604462 -2.018208 +v 2.600215 4.054568 -2.018208 +v -4.533662 -0.309302 -2.018208 +v -4.982747 -0.020212 -2.018208 +v -4.488976 -0.014130 -2.018208 +v 4.770588 -0.229360 -2.018208 +v 5.125850 0.166797 -2.018208 +v 5.277726 -0.258708 -2.018208 +v -2.749345 3.180070 -2.018208 +v -2.520314 4.106030 -2.018208 +v -2.266752 3.709597 -2.018208 +v 1.222840 4.547728 -2.018208 +v 1.802872 4.159407 -2.018208 +v 4.633528 0.154637 -2.018208 +v 4.882992 0.713097 -2.018208 +v -3.186286 2.606869 -2.018208 +v -3.055072 3.519263 -2.018208 +v 0.621810 4.797125 -2.018208 +v 1.346485 5.034757 -2.018208 +v 4.414360 0.647646 -2.018208 +v 4.557615 1.345852 -2.018208 +v -3.571939 2.015710 -2.018208 +v -3.539243 2.884101 -2.018208 +v 0.007423 4.876606 -2.018208 +v 0.680488 5.311113 -2.018208 +v 4.120724 1.218675 -2.018208 +v 4.158184 2.030718 -2.018208 +v -3.900671 1.432314 -2.018208 +v -3.966585 2.229043 -2.018208 +v -0.674968 5.290979 -2.018208 +v -0.000312 5.399186 -2.018208 +v 3.760257 1.836732 -2.018208 +v 3.693165 2.733354 -2.018209 +v -4.166844 0.882396 -2.018208 +v -4.330851 1.582583 -2.018208 +v -0.601421 4.778955 -2.018208 +v -1.324017 5.020385 -2.018208 +v 3.340600 2.470827 -2.018208 +v 3.171020 3.419418 -2.018208 +v -4.364824 0.391676 -2.018208 +v -4.625796 0.973223 -2.018208 +v -1.744144 4.169732 -2.018208 +v -1.187155 4.534758 -2.018208 +v 2.869391 3.089965 -2.018208 +v -4.845176 0.429459 -2.018208 +v 4.817903 -0.473352 -2.018208 +v 5.330154 -0.529075 -2.018208 +v -1.941214 4.615903 -2.018208 +v -5.032264 -0.347291 -2.018208 +v -0.010054 11.098518 2.124614 +v 4.198537 14.357351 2.124615 +v -0.010052 14.471598 2.124615 +v 4.198535 11.132282 2.124614 +v 4.198536 12.932452 -2.118665 +v -0.010054 11.832909 -2.118665 +v -4.218642 12.932457 -2.118665 +v -0.010053 13.633080 -2.118665 +v -4.218643 11.132286 2.124614 +v -4.218641 14.357357 2.124615 +v 4.198535 11.132282 -2.118665 +v -4.218643 11.132286 -2.118664 +v -2.084779 16.857933 -2.060404 +v 1.337637 12.947863 -2.060404 +v -1.357744 12.947865 -2.060404 +v 2.064677 16.857931 -2.060404 +vt 0.144578 0.617647 +vt 0.096386 0.558824 +vt 0.144578 0.529412 +vt 0.192771 0.558824 +vt 0.192771 0.558824 +vt 0.144578 0.617647 +vt 0.096386 0.558824 +vt 0.325301 0.617647 +vt 0.303449 0.588235 +vt 0.325301 0.588235 +vt 0.626506 0.588235 +vt 0.590361 0.617647 +vt 0.590361 0.588235 +vt 0.590361 0.617647 +vt 0.554217 0.588235 +vt 0.590361 0.588235 +vt 0.373494 0.588235 +vt 0.337349 0.617647 +vt 0.337349 0.588235 +vt 0.265680 0.617647 +vt 0.303449 0.617647 +vt 0.554217 0.617647 +vt 0.518072 0.588235 +vt 0.409639 0.588235 +vt 0.373494 0.617647 +vt 0.228916 0.617647 +vt 0.265680 0.588235 +vt 0.518072 0.617647 +vt 0.481928 0.588235 +vt 0.445783 0.588235 +vt 0.409639 0.617647 +vt 0.192771 0.617647 +vt 0.228916 0.588235 +vt 0.481928 0.617647 +vt 0.445783 0.588235 +vt 0.481928 0.588235 +vt 0.445783 0.617647 +vt 0.192771 0.588235 +vt 0.228916 0.617647 +vt 0.192771 0.617647 +vt 0.445783 0.617647 +vt 0.409639 0.588235 +vt 0.518072 0.588235 +vt 0.481928 0.617647 +vt 0.228916 0.588235 +vt 0.265060 0.617647 +vt 0.409639 0.617647 +vt 0.373494 0.588235 +vt 0.554217 0.588235 +vt 0.518072 0.617647 +vt 0.301205 0.588235 +vt 0.265060 0.588235 +vt 0.373494 0.617647 +vt 0.554217 0.617647 +vt 0.626506 0.617647 +vt 0.626506 0.588235 +vt 0.301205 0.617647 +vt 0.626506 0.617647 +vt 0.192771 0.588235 +vt 0.289157 0.735294 +vt 0.192771 0.632353 +vt 0.289157 0.632353 +vt 0.192771 0.735294 +vt 0.096386 0.676471 +vt 0.578313 0.735294 +vt 0.481928 0.676471 +vt 0.578313 0.676471 +vt 0.385542 0.735294 +vt 0.385542 0.632353 +vt 0.000000 0.735294 +vt 0.000000 0.676471 +vt 0.096386 0.735294 +vt 0.481928 0.735294 vt 0.000000 0.441176 +vt 0.080123 0.556041 +vt 0.016262 0.556041 +vt 0.096386 0.441176 +vn 0.6760 0.2932 -0.6760 +vn -0.6760 0.2932 -0.6760 +vn 0.6738 -0.3031 -0.6738 +vn -0.6738 -0.3031 -0.6738 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn 0.6152 -0.0000 0.7884 +vn 0.7053 -0.0000 0.7089 +vn 0.7374 -0.0000 -0.6755 +vn -0.7374 0.0000 -0.6755 +vn -0.7053 0.0000 0.7089 +vn -0.6152 0.0000 0.7884 +vn 0.7452 -0.0000 -0.6669 +vn -0.7452 0.0000 -0.6669 +s off +f 1/1/1 2/2/1 3/3/1 +f 1/1/2 3/3/2 4/4/2 +f 3/3/3 2/5/3 5/6/3 +f 4/7/4 3/3/4 5/6/4 +f 6/8/5 7/9/5 8/10/5 +f 9/11/5 10/12/5 11/13/5 +f 12/14/5 13/15/5 14/16/5 +f 15/17/5 16/18/5 17/19/5 +f 18/20/5 7/9/5 19/21/5 +f 20/22/5 21/23/5 13/15/5 +f 22/24/5 23/25/5 15/17/5 +f 24/26/5 25/27/5 18/20/5 +f 26/28/5 27/29/5 21/23/5 +f 28/30/5 29/31/5 22/24/5 +f 30/32/5 31/33/5 24/26/5 +f 32/34/5 33/35/5 27/29/5 +f 34/36/5 35/37/5 28/30/5 +f 30/38/5 36/39/5 37/40/5 +f 38/41/5 39/42/5 33/35/5 +f 40/43/5 41/44/5 34/36/5 +f 42/45/5 43/46/5 36/39/5 +f 44/47/5 45/48/5 39/42/5 +f 46/49/5 47/50/5 40/43/5 +f 48/51/5 43/46/5 49/52/5 +f 50/53/5 8/10/5 45/48/5 +f 11/13/5 51/54/5 46/49/5 +f 52/55/5 14/16/5 53/56/5 +f 17/19/5 54/57/5 48/51/5 +f 6/8/5 19/21/5 7/9/5 +f 9/11/5 55/58/5 10/12/5 +f 12/14/5 20/22/5 13/15/5 +f 15/17/5 23/25/5 16/18/5 +f 18/20/5 25/27/5 7/9/5 +f 20/22/5 26/28/5 21/23/5 +f 22/24/5 29/31/5 23/25/5 +f 24/26/5 31/33/5 25/27/5 +f 26/28/5 32/34/5 27/29/5 +f 28/30/5 35/37/5 29/31/5 +f 30/32/5 37/59/5 31/33/5 +f 32/34/5 38/41/5 33/35/5 +f 34/36/5 41/44/5 35/37/5 +f 30/38/5 42/45/5 36/39/5 +f 38/41/5 44/47/5 39/42/5 +f 40/43/5 47/50/5 41/44/5 +f 42/45/5 49/52/5 43/46/5 +f 44/47/5 50/53/5 45/48/5 +f 46/49/5 51/54/5 47/50/5 +f 48/51/5 54/57/5 43/46/5 +f 50/53/5 6/8/5 8/10/5 +f 11/13/5 10/12/5 51/54/5 +f 52/55/5 12/14/5 14/16/5 +f 17/19/5 16/18/5 54/57/5 +s 1 +f 56/60/6 57/61/7 58/62/6 +f 59/63/8 60/64/9 57/61/7 +f 61/65/5 62/66/10 63/67/5 +f 62/66/10 64/68/11 65/69/12 +f 60/64/9 61/70/5 63/71/5 +f 65/69/12 56/60/6 58/62/6 +f 56/60/6 59/63/8 57/61/7 +f 59/63/8 66/72/13 60/64/9 +f 61/65/5 67/73/14 62/66/10 +f 62/66/10 67/73/14 64/68/11 +f 60/64/9 66/72/13 61/70/5 +f 65/69/12 64/68/11 56/60/6 +s off +f 68/74/5 69/75/5 70/76/5 +f 68/74/5 71/77/5 69/75/5 +o LeftArm +v 6.707815 -1.385498 2.089541 +v 3.848082 2.482785 2.089541 +v 3.848080 -1.385496 2.089541 +v 3.848080 -1.385496 -2.083592 +v 6.707817 2.482783 -2.083592 +v 6.707815 -1.385498 -2.083592 +v 6.707817 2.482783 2.089541 +v 5.563126 4.039324 2.089541 +v 8.399311 0.171042 2.089541 +v 5.563126 4.039324 -2.083592 +v 3.848082 2.482785 -2.083592 +v 8.399311 0.171042 -2.083592 +v 4.854660 -4.274506 1.081455 +v 5.701231 -4.274506 -1.075505 +v 5.701231 -4.274506 1.081455 +v 5.701231 -2.606927 1.081455 +v 4.854661 -2.606926 1.081455 +v 4.854660 -4.274506 -1.075505 +v 4.854661 -2.606926 -1.075505 +v 5.701231 -2.606927 -1.075505 +v 11.094896 0.957275 -1.075506 +v 11.094898 3.253083 1.081455 +v 11.094896 0.957275 1.081455 +v 9.538965 0.957276 1.081455 +v 9.538965 0.957276 -1.075506 +v 11.094898 3.253083 -1.075506 +v 9.538967 3.253084 -1.075506 +v 9.538967 3.253084 1.081455 +v 9.624655 -2.509177 -1.075506 +v 8.994442 -3.089109 1.081455 +v 8.994442 -3.089109 -1.075506 +v 8.611074 -1.243971 -1.075506 +v 7.980860 -1.823903 -1.075506 +v 9.624655 -2.509176 1.081455 +v 8.611074 -1.243970 1.081455 +v 7.980860 -1.823903 1.081455 +v 8.399313 4.039323 2.089541 +v 8.399313 4.039323 -2.083592 +v 4.476345 -2.606926 1.567900 +v 4.476345 -2.606926 -1.561950 +v 6.079547 -2.606927 -1.561950 +v 6.079547 -2.606927 1.567900 +v 9.538965 0.439518 -1.561950 +v 9.538967 3.770842 -1.561950 +v 9.538967 3.770842 1.567899 +v 7.661656 -2.117639 -1.561950 +v 8.930279 -0.950234 1.567900 +v 7.661656 -2.117639 1.567900 +v 9.538965 0.439518 1.567899 +v 8.930279 -0.950234 -1.561950 +v 5.889863 7.776278 1.993027 +v 6.648466 7.278004 2.319573 +v 6.778609 7.408146 1.993027 +v 5.889863 7.592228 2.319573 +v 6.511984 7.141523 1.993027 +v 6.962690 6.519400 2.319573 +v 7.146739 6.519400 1.993027 +v 6.769676 6.519400 1.993027 +v 6.778607 5.630654 1.993027 +v 6.648465 5.760797 2.319573 +v 5.889862 5.262525 1.993027 +v 6.511983 5.897279 1.993027 +v 5.889862 5.446574 2.319573 +v 5.131258 5.760798 2.319573 +v 5.001116 5.630656 1.993027 +v 5.267740 5.897280 1.993027 +v 4.817035 6.519403 2.319573 +v 4.632987 6.519403 1.993027 +v 5.010049 6.519402 1.993027 +v 5.001116 7.408147 1.993027 +v 5.131258 7.278005 2.319573 +v 5.267740 7.141523 1.993027 +v 8.013643 6.630563 -2.020720 +v 3.966251 6.394344 -2.020720 +v 3.966252 6.630567 -2.020720 +v 8.013641 6.107713 2.026670 +v 8.013641 6.394340 -2.020720 +v 4.900514 6.917193 2.026670 +v 3.966251 6.107717 2.026670 +v 4.900513 6.107715 2.026670 +v 3.966252 6.917194 2.026670 +v 8.013641 6.917191 2.026670 +v 6.857197 6.107714 2.026670 +v 5.889863 7.399215 1.993027 +v 5.889862 5.639588 1.993027 +v 6.857198 6.917192 2.026670 +vt 0.058610 0.440457 vt 0.000000 0.338235 vt 0.000000 0.441176 +vt 0.000000 0.441176 +vt 0.060241 0.335919 vt 0.058533 0.440018 -vt 0.060241 0.337540 -vt 0.060241 0.337540 +vt 0.060241 0.335919 vt 0.035980 0.295068 vt 0.096386 0.397059 vt 0.035955 0.295044 vt 0.000000 0.338235 vt 0.096386 0.397059 vt 0.132530 0.455882 -vt 0.132530 0.485294 vt 0.180723 0.485294 -vt 0.096386 0.455882 +vt 0.132530 0.485294 vt 0.096386 0.485294 +vt 0.096386 0.455882 vt 0.180723 0.455882 -vt 0.180723 0.411765 vt 0.132530 0.411765 -vt 0.216867 0.485294 +vt 0.180723 0.411765 vt 0.216867 0.455882 -vt 0.132530 0.529412 +vt 0.216867 0.485294 vt 0.180723 0.529412 +vt 0.132530 0.529412 vt 0.180723 0.308824 -vt 0.132530 0.308824 vt 0.132530 0.367647 -vt 0.180723 0.264706 +vt 0.132530 0.308824 vt 0.132530 0.264706 +vt 0.180723 0.264706 vt 0.180723 0.367647 -vt 0.216867 0.367647 vt 0.216867 0.308824 -vt 0.132530 0.411765 +vt 0.216867 0.367647 vt 0.180723 0.411765 -vt 0.096386 0.308824 +vt 0.132530 0.411765 vt 0.096386 0.367647 +vt 0.096386 0.308824 vt 0.253012 0.455882 -vt 0.253012 0.485294 vt 0.301205 0.485294 +vt 0.253012 0.485294 vt 0.216867 0.455882 vt 0.216867 0.485294 vt 0.301205 0.455882 -vt 0.301205 0.411765 vt 0.253012 0.411765 +vt 0.301205 0.411765 vt 0.337349 0.485294 vt 0.337349 0.455882 -vt 0.253012 0.529412 vt 0.301205 0.529412 +vt 0.253012 0.529412 vt 0.096386 0.294118 vt 0.096386 0.294118 vt 0.084337 0.132353 -vt 0.108434 0.132353 vt 0.108434 0.088235 +vt 0.108434 0.132353 vt 0.024096 0.132353 -vt 0.024096 0.161765 vt 0.084337 0.161765 +vt 0.024096 0.161765 vt 0.024096 0.088235 -vt 0.000000 0.088235 vt 0.000000 0.132353 +vt 0.000000 0.088235 vt 0.084337 0.088235 -vt 0.084337 0.058824 vt 0.024096 0.058824 +vt 0.084337 0.058824 vt 0.084337 0.191176 -vt 0.084337 0.161765 vt 0.024096 0.161765 +vt 0.084337 0.161765 vt 0.084337 0.264706 -vt 0.108434 0.264706 vt 0.108434 0.191176 +vt 0.108434 0.264706 vt 0.024096 0.264706 -vt 0.024096 0.294118 vt 0.084337 0.294118 +vt 0.024096 0.294118 vt -0.000000 0.191176 vt 0.000000 0.264706 vt 0.000000 0.088235 -vt 0.000000 0.132353 vt 0.024096 0.132353 +vt 0.000000 0.132353 vt 0.084337 0.088235 -vt 0.084337 0.058824 vt 0.024096 0.058824 +vt 0.084337 0.058824 vt 0.084337 0.132353 -vt 0.108434 0.132353 vt 0.108434 0.088235 -vt 0.024096 0.161765 +vt 0.108434 0.132353 vt 0.084337 0.161765 +vt 0.024096 0.161765 vt 0.072289 0.102941 vt 0.072289 0.117647 vt 0.036145 0.117647 @@ -223,297 +413,296 @@ vt 0.072289 0.250000 vt 0.036145 0.250000 vt 0.024096 0.191176 vt 0.036145 0.117647 -vt 0.036145 0.102941 vt 0.024096 0.088235 +vt 0.036145 0.102941 vt 0.072289 0.102941 vt 0.072289 0.117647 vt 0.192771 0.794118 -vt 0.192771 0.764706 vt 0.144578 0.764706 -vt 0.180723 0.735294 -vt 0.156627 0.735294 vt 0.144578 0.794118 +vt 0.192771 0.764706 +vt 0.156627 0.735294 vt 0.096386 0.764706 -vt 0.132530 0.735294 +vt 0.096386 0.794118 vt 0.108434 0.735294 vt 0.048193 0.794118 -vt 0.096386 0.794118 -vt 0.048193 0.764706 vt 0.084337 0.735294 +vt 0.048193 0.764706 vt 0.000000 0.794118 -vt 0.000000 0.764706 vt 0.036145 0.735294 +vt 0.000000 0.764706 vt 0.385542 0.794118 -vt 0.385542 0.764706 vt 0.337349 0.764706 -vt 0.373494 0.735294 -vt 0.349398 0.735294 vt 0.337349 0.794118 +vt 0.385542 0.764706 +vt 0.349398 0.735294 vt 0.289157 0.764706 -vt 0.325301 0.735294 +vt 0.289157 0.794118 vt 0.301205 0.735294 vt 0.240964 0.794118 -vt 0.289157 0.794118 -vt 0.240964 0.764706 vt 0.277108 0.735294 +vt 0.240964 0.764706 vt 0.228916 0.735294 +vt 0.120482 0.823529 vt 0.072289 0.794118 vt 0.072289 0.823529 -vt 0.120482 0.823529 -vt 0.120482 0.794118 -vt 0.168675 0.823529 -vt 0.000000 0.794118 -vt 0.000000 0.823529 -vt 0.024096 0.823529 -vt 0.024096 0.794118 vt 0.168675 0.794118 -vt 0.192771 0.823529 +vt 0.120482 0.794118 +vt 0.000000 0.823529 +vt 0.024096 0.794118 +vt 0.000000 0.794118 +vt 0.024096 0.823529 +vt 0.168675 0.823529 +vt 0.192771 0.794118 +vt 0.180723 0.735294 +vt 0.132530 0.735294 vt 0.060241 0.735294 vt 0.012048 0.735294 +vt 0.373494 0.735294 +vt 0.325301 0.735294 vt 0.253012 0.735294 vt 0.204819 0.735294 -vt 0.192771 0.794118 -vn 0.0000 0.0000 1.0000 +vt 0.192771 0.823529 +vn -0.0000 0.0000 1.0000 vn 0.0000 0.0000 -1.0000 -vn -0.0000 -1.0000 0.0000 -vn 1.0000 -0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 vn 0.0000 1.0000 0.0000 -vn -0.6771 -0.7359 -0.0000 -vn -0.7804 0.6252 0.0000 -vn 0.7804 -0.6252 0.0000 -vn 0.4181 -0.7891 0.4500 -vn 0.3590 -0.3328 0.8720 -vn -0.1412 -0.4385 0.8876 -vn 0.4181 -0.7891 -0.4500 -vn 0.3590 -0.3328 -0.8720 -vn -0.4181 -0.7891 -0.4500 -vn -0.1412 -0.4385 -0.8876 +vn 0.6771 -0.7359 0.0000 +vn 0.7804 0.6252 -0.0000 +vn -0.7804 -0.6252 0.0000 vn -0.4181 -0.7891 0.4500 -vn -0.7388 -0.5169 -0.4324 -vn -0.4205 -0.1879 -0.8876 -vn -0.4205 -0.1879 0.8876 -vn -0.7388 0.5169 -0.4324 -vn -0.2648 0.3576 -0.8955 -vn -0.7388 0.5169 0.4324 -vn -0.2648 0.3576 0.8955 -vn -0.0911 -0.8948 -0.4370 -vn -0.8699 -0.2238 0.4395 -vn -0.0911 -0.8948 0.4370 -vn -0.3015 -0.9045 0.3015 +vn 0.1412 -0.4385 0.8876 +vn -0.3589 -0.3328 0.8720 +vn -0.4181 -0.7891 -0.4500 +vn -0.3590 -0.3328 -0.8720 +vn 0.4181 -0.7891 -0.4500 +vn 0.1412 -0.4385 -0.8876 +vn 0.4181 -0.7891 0.4500 +vn 0.7388 -0.5169 -0.4324 +vn 0.4205 -0.1879 0.8876 +vn 0.4205 -0.1879 -0.8876 +vn 0.7389 0.5169 -0.4324 +vn 0.2649 0.3576 -0.8955 +vn 0.7388 0.5169 0.4324 +vn 0.2648 0.3576 0.8955 +vn 0.0911 -0.8948 -0.4370 +vn 0.8699 -0.2238 0.4396 +vn 0.0911 -0.8948 0.4370 vn 0.3015 -0.9045 0.3015 -vn 0.3015 -0.9045 -0.3015 +vn -0.3015 -0.9045 0.3015 vn -0.3015 -0.9045 -0.3015 -vn -0.9045 -0.3015 0.3015 -vn -0.9045 -0.3015 -0.3015 -vn -0.9045 0.3015 -0.3015 -vn -0.9045 0.3015 0.3015 -vn -0.7388 -0.5169 0.4324 -vn -0.3828 -0.8668 -0.3193 -vn -0.8355 -0.4702 -0.2842 -vn -0.8699 -0.2238 -0.4395 -vn -0.8355 -0.4702 0.2842 -vn -0.3828 -0.8668 0.3193 +vn 0.3015 -0.9045 -0.3015 +vn 0.9045 -0.3015 0.3015 +vn 0.9045 -0.3015 -0.3015 +vn 0.9045 0.3015 -0.3015 +vn 0.9045 0.3015 0.3015 +vn 0.7388 -0.5169 0.4324 +vn 0.3828 -0.8669 -0.3193 +vn 0.8699 -0.2238 -0.4396 +vn 0.8355 -0.4702 -0.2842 +vn 0.8355 -0.4702 0.2842 +vn 0.3828 -0.8669 0.3193 vn 0.0000 0.8712 0.4910 -vn 0.0000 0.2171 0.9761 -vn 0.1535 0.1535 0.9761 -vn 0.0000 -0.8608 0.5088 -vn -0.6087 -0.6087 0.5088 +vn 0.1535 0.1535 0.9762 vn 0.6160 0.6160 0.4910 -vn 0.2171 0.0000 0.9761 -vn -0.8608 0.0000 0.5088 +vn -0.0000 0.2171 0.9762 +vn -0.6087 -0.6087 0.5088 +vn 0.2171 -0.0000 0.9762 +vn 0.8712 -0.0000 0.4910 +vn -0.8609 0.0000 0.5088 vn 0.6160 -0.6160 0.4910 -vn 0.8712 0.0000 0.4910 -vn 0.1535 -0.1535 0.9761 +vn 0.1535 -0.1535 0.9762 vn 0.0000 -0.8712 0.4910 -vn 0.0000 -0.2171 0.9761 vn -0.6087 0.6087 0.5088 -vn -0.1535 -0.1535 0.9761 -vn 0.0000 0.8608 0.5088 -vn 0.6087 0.6087 0.5088 +vn 0.0000 -0.2171 0.9762 +vn -0.1535 -0.1535 0.9762 vn -0.6160 -0.6160 0.4910 -vn -0.2171 0.0000 0.9761 -vn 0.8608 0.0000 0.5088 -vn -0.6160 0.6160 0.4910 +vn 0.6087 0.6087 0.5088 +vn -0.2171 -0.0000 0.9762 vn -0.8712 0.0000 0.4910 -vn -0.1535 0.1535 0.9761 +vn 0.8609 0.0000 0.5088 +vn -0.6160 0.6160 0.4910 +vn -0.1535 0.1535 0.9762 vn 0.6087 -0.6087 0.5088 +vn 0.7225 -0.0000 -0.6914 vn -0.7225 0.0000 -0.6914 -vn 0.7225 0.0000 -0.6914 -vn 0.6906 0.0000 0.7232 +vn 0.6906 -0.0000 0.7232 vn -0.6906 0.0000 0.7232 -usemtl None +vn -0.0000 -0.8609 0.5088 +vn 0.0000 0.8609 0.5088 s off -f 11/15/7 9/16/7 10/17/7 -f 13/18/8 15/19/8 16/20/8 -f 12/21/7 10/17/7 17/22/7 -f 19/23/7 11/15/7 12/21/7 -f 22/24/8 14/25/8 16/20/8 -f 16/20/8 15/19/8 20/26/8 -f 48/27/9 47/28/9 50/29/9 -f 48/27/7 24/30/7 23/31/7 -f 49/32/10 25/33/10 24/34/10 -f 50/29/8 26/35/8 25/36/8 -f 47/28/11 23/37/11 26/38/11 -f 52/39/11 51/40/11 54/41/11 -f 52/39/9 28/42/9 27/43/9 -f 53/44/8 29/45/8 28/46/8 -f 54/41/12 30/47/12 29/48/12 -f 51/40/7 27/49/7 30/50/7 -f 56/51/13 55/52/13 58/53/13 -f 32/54/8 31/55/8 55/52/8 -f 57/56/14 33/57/14 32/58/14 -f 34/59/7 33/60/7 57/56/7 -f 55/52/15 31/61/15 34/62/15 -f 11/15/7 10/17/7 12/21/7 -f 13/18/8 16/20/8 14/25/8 -f 12/21/7 17/22/7 18/63/7 -f 19/23/7 12/21/7 18/63/7 -f 22/24/8 16/20/8 21/64/8 -f 16/20/8 20/26/8 21/64/8 -f 48/27/9 50/29/9 49/32/9 -f 48/27/7 23/31/7 47/28/7 -f 49/32/10 24/34/10 48/27/10 -f 50/29/8 25/36/8 49/32/8 -f 47/28/11 26/38/11 50/29/11 -f 52/39/11 54/41/11 53/44/11 -f 52/39/9 27/43/9 51/40/9 -f 53/44/8 28/46/8 52/39/8 -f 54/41/12 29/48/12 53/44/12 -f 51/40/7 30/50/7 54/41/7 -f 56/51/13 58/53/13 57/56/13 -f 32/54/8 55/52/8 56/51/8 -f 57/56/14 32/58/14 56/51/14 -f 34/59/7 57/56/7 58/53/7 -f 55/52/15 34/62/15 58/53/15 +f 72/78/15 73/79/15 74/80/15 +f 75/81/16 76/82/16 77/83/16 +f 78/84/15 79/85/15 73/79/15 +f 80/86/15 78/84/15 72/78/15 +f 81/87/16 76/82/16 82/88/16 +f 76/82/16 83/89/16 77/83/16 +f 84/90/17 85/91/17 86/92/17 +f 84/90/15 87/93/15 88/94/15 +f 89/95/18 88/96/18 90/97/18 +f 85/91/16 90/98/16 91/99/16 +f 86/92/19 91/100/19 87/101/19 +f 92/102/19 93/103/19 94/104/19 +f 92/102/17 95/105/17 96/106/17 +f 97/107/16 96/108/16 98/109/16 +f 93/103/20 98/110/20 99/111/20 +f 94/104/15 99/112/15 95/113/15 +f 100/114/21 101/115/21 102/116/21 +f 103/117/16 102/116/16 104/118/16 +f 105/119/22 103/120/22 106/121/22 +f 107/122/15 105/119/15 106/123/15 +f 102/116/23 107/124/23 104/125/23 +f 72/78/15 78/84/15 73/79/15 +f 75/81/16 82/88/16 76/82/16 +f 78/84/15 108/126/15 79/85/15 +f 80/86/15 108/126/15 78/84/15 +f 81/87/16 109/127/16 76/82/16 +f 76/82/16 109/127/16 83/89/16 +f 84/90/17 89/95/17 85/91/17 +f 84/90/15 86/92/15 87/93/15 +f 89/95/18 84/90/18 88/96/18 +f 85/91/16 89/95/16 90/98/16 +f 86/92/19 85/91/19 91/100/19 +f 92/102/19 97/107/19 93/103/19 +f 92/102/17 94/104/17 95/105/17 +f 97/107/16 92/102/16 96/108/16 +f 93/103/20 97/107/20 98/110/20 +f 94/104/15 93/103/15 99/112/15 +f 100/114/21 105/119/21 101/115/21 +f 103/117/16 100/114/16 102/116/16 +f 105/119/22 100/114/22 103/120/22 +f 107/122/15 101/115/15 105/119/15 +f 102/116/23 101/115/23 107/124/23 s 1 -f 35/65/16 9/66/17 11/67/18 -f 37/68/19 13/69/20 9/70/17 -f 38/71/21 15/72/22 13/73/20 -f 36/74/23 11/75/18 15/76/22 -f 39/77/24 20/78/25 19/79/26 -f 41/80/27 21/81/28 20/82/25 -f 42/83/29 18/84/30 21/85/28 -f 19/86/26 18/87/30 42/83/29 -f 20/88/25 15/89/22 44/90/31 -f 45/91/32 19/92/26 20/93/25 -f 46/94/33 11/95/18 19/96/26 -f 44/90/31 15/97/22 11/98/18 -f 23/99/34 24/100/35 35/65/16 -f 24/100/35 25/101/36 37/68/19 -f 26/102/37 38/71/21 37/68/19 -f 26/102/37 23/99/34 36/74/23 -f 27/103/38 28/104/39 39/77/24 -f 28/104/39 29/105/40 41/80/27 -f 29/105/40 30/106/41 42/83/29 -f 30/106/41 27/103/38 40/107/42 -f 31/108/43 32/109/44 43/110/45 -f 32/109/44 33/111/46 45/91/32 -f 34/112/47 46/94/33 45/91/32 -f 31/108/43 44/90/31 46/94/33 -f 59/113/48 60/114/49 63/115/50 -f 60/114/49 61/116/51 64/117/52 -f 62/118/53 63/115/50 66/119/54 -f 63/115/50 64/120/52 67/121/55 -f 68/122/56 65/123/57 66/119/54 -f 69/124/58 66/119/54 67/125/55 -f 71/126/59 68/122/56 69/124/58 -f 72/127/60 69/124/58 70/128/61 -f 71/129/59 72/130/60 75/131/62 -f 72/130/60 73/132/63 76/133/64 -f 74/134/65 75/131/62 78/135/66 -f 75/131/62 76/136/64 79/137/67 -f 80/138/68 77/139/69 78/135/66 -f 81/140/70 78/135/66 79/141/67 -f 59/113/48 80/138/68 81/140/70 -f 60/114/49 81/140/70 82/142/71 -f 84/143/72 83/144/72 85/145/73 -f 86/146/73 85/145/73 89/147/74 -f 93/148/7 91/149/7 87/150/75 -f 88/151/75 87/150/75 83/144/72 -f 90/152/74 89/147/74 94/153/7 -f 35/65/16 11/67/18 36/74/23 -f 37/68/19 9/70/17 35/65/16 -f 38/71/21 13/73/20 37/68/19 -f 36/74/23 15/76/22 38/71/21 -f 39/77/24 19/79/26 40/107/42 -f 41/80/27 20/82/25 39/77/24 -f 42/83/29 21/85/28 41/80/27 -f 19/86/26 42/83/29 40/107/42 -f 20/88/25 44/90/31 43/110/45 -f 45/91/32 20/93/25 43/110/45 -f 46/94/33 19/96/26 45/91/32 -f 44/90/31 11/98/18 46/94/33 -f 23/99/34 35/65/16 36/74/23 -f 24/100/35 37/68/19 35/65/16 -f 26/102/37 37/68/19 25/101/36 -f 26/102/37 36/74/23 38/71/21 -f 27/103/38 39/77/24 40/107/42 -f 28/104/39 41/80/27 39/77/24 -f 29/105/40 42/83/29 41/80/27 -f 30/106/41 40/107/42 42/83/29 -f 31/108/43 43/110/45 44/90/31 -f 32/109/44 45/91/32 43/110/45 -f 34/112/47 45/91/32 33/111/46 -f 31/108/43 46/94/33 34/112/47 -f 59/113/48 63/115/50 62/118/53 -f 60/114/49 64/117/52 63/115/50 -f 62/118/53 66/119/54 65/123/57 -f 63/115/50 67/121/55 66/119/54 -f 68/122/56 66/119/54 69/124/58 -f 69/124/58 67/125/55 70/154/61 -f 71/126/59 69/124/58 72/127/60 -f 72/127/60 70/128/61 73/155/63 -f 71/129/59 75/131/62 74/134/65 -f 72/130/60 76/133/64 75/131/62 -f 74/134/65 78/135/66 77/139/69 -f 75/131/62 79/137/67 78/135/66 -f 80/138/68 78/135/66 81/140/70 -f 81/140/70 79/141/67 82/156/71 -f 59/113/48 81/140/70 60/114/49 -f 60/114/49 82/142/71 61/157/51 -f 84/143/72 85/145/73 86/146/73 -f 86/146/73 89/147/74 90/152/74 -f 93/148/7 87/150/75 88/151/75 -f 88/151/75 83/144/72 84/143/72 -f 90/152/74 94/153/7 92/158/7 -o RightLeg -v -2.110140 19.857271 -1.987077 -v -2.110140 19.673222 -2.313623 -v -2.110140 19.480209 -1.987077 -v -1.221394 19.489141 -1.987077 -v -1.351537 19.358999 -2.313623 -v -1.488018 19.222517 -1.987077 -v -0.853264 18.600395 -1.987077 -v -1.037313 18.600395 -2.313623 -v -1.230327 18.600395 -1.987077 -v -1.221395 17.711649 -1.987077 -v -1.351537 17.841791 -2.313623 -v -1.488018 17.978273 -1.987077 -v -2.110140 17.343519 -1.987077 -v -2.110140 17.527569 -2.313623 -v -2.110140 17.720581 -1.987077 -v -2.998886 17.711649 -1.987077 -v -2.868743 17.841791 -2.313623 -v -2.732262 17.978273 -1.987077 -v -3.367016 18.600395 -1.987077 -v -3.182967 18.600395 -2.313623 -v -2.989954 18.600395 -1.987077 -v -2.998886 19.489140 -1.987077 -v -2.868744 19.358997 -2.313623 -v -2.732262 19.222517 -1.987077 -v -4.033751 18.711559 2.026670 -v -4.033751 18.475336 2.026670 -v 0.013640 18.711559 2.026670 -v 0.013640 18.475336 2.026670 -v -4.033751 18.998186 -2.020720 -v -4.033751 18.188709 -2.020720 -v 0.013639 18.998186 -2.020720 -v 0.013639 18.188707 -2.020720 -v -3.099488 18.998186 -2.020720 -v -1.142804 18.188707 -2.020720 -v -3.099488 18.188709 -2.020720 -v -1.142804 18.998186 -2.020720 +f 110/128/24 72/129/25 74/130/26 +f 111/131/27 74/132/26 75/133/28 +f 112/134/29 75/135/28 77/136/30 +f 113/137/31 77/138/30 72/139/25 +f 114/140/32 80/141/33 83/142/34 +f 115/143/35 83/144/34 109/145/36 +f 116/146/37 109/147/36 108/148/38 +f 80/149/33 116/146/37 108/150/38 +f 83/151/34 117/152/39 77/153/30 +f 118/154/40 83/155/34 80/156/33 +f 119/157/41 80/158/33 72/159/25 +f 117/152/39 72/160/25 77/161/30 +f 87/162/42 110/128/24 88/163/43 +f 88/163/43 111/131/27 90/164/44 +f 91/165/45 111/131/27 112/134/29 +f 91/165/45 113/137/31 87/162/42 +f 95/166/46 114/140/32 96/167/47 +f 96/167/47 115/143/35 98/168/48 +f 98/168/48 116/146/37 99/169/49 +f 99/169/49 120/170/50 95/166/46 +f 104/171/51 121/172/52 103/173/53 +f 103/173/53 118/154/40 106/174/54 +f 107/175/55 118/154/40 119/157/41 +f 104/171/51 119/157/41 117/152/39 +f 122/176/56 123/177/57 124/178/58 +f 125/179/59 126/180/60 123/177/57 +f 124/178/58 127/181/61 128/182/62 +f 123/177/57 129/183/63 127/181/61 +f 127/181/61 130/184/64 128/182/62 +f 129/185/63 131/186/65 127/181/61 +f 131/186/65 132/187/66 130/184/64 +f 133/188/67 134/189/68 131/186/65 +f 132/190/66 135/191/69 136/192/70 +f 134/193/68 137/194/71 135/191/69 +f 136/192/70 138/195/72 139/196/73 +f 135/191/69 140/197/74 138/195/72 +f 138/195/72 141/198/75 139/196/73 +f 140/199/74 142/200/76 138/195/72 +f 142/200/76 122/176/56 141/198/75 +f 143/201/77 125/179/59 142/200/76 +f 144/202/78 145/203/79 146/204/79 +f 144/202/78 147/205/80 148/206/78 +f 149/207/15 150/208/81 151/209/15 +f 146/204/79 150/208/81 152/210/81 +f 153/211/80 154/212/15 147/205/80 +f 110/128/24 113/137/31 72/129/25 +f 111/131/27 110/128/24 74/132/26 +f 112/134/29 111/131/27 75/135/28 +f 113/137/31 112/134/29 77/138/30 +f 114/140/32 120/170/50 80/141/33 +f 115/143/35 114/140/32 83/144/34 +f 116/146/37 115/143/35 109/147/36 +f 80/149/33 120/170/50 116/146/37 +f 83/151/34 121/172/52 117/152/39 +f 118/154/40 121/172/52 83/155/34 +f 119/157/41 118/154/40 80/158/33 +f 117/152/39 119/157/41 72/160/25 +f 87/162/42 113/137/31 110/128/24 +f 88/163/43 110/128/24 111/131/27 +f 91/165/45 90/164/44 111/131/27 +f 91/165/45 112/134/29 113/137/31 +f 95/166/46 120/170/50 114/140/32 +f 96/167/47 114/140/32 115/143/35 +f 98/168/48 115/143/35 116/146/37 +f 99/169/49 116/146/37 120/170/50 +f 104/171/51 117/152/39 121/172/52 +f 103/173/53 121/172/52 118/154/40 +f 107/175/55 106/174/54 118/154/40 +f 104/171/51 107/175/55 119/157/41 +f 122/176/56 125/179/59 123/177/57 +f 125/179/59 155/213/82 126/180/60 +f 124/178/58 123/177/57 127/181/61 +f 123/177/57 126/214/60 129/183/63 +f 127/181/61 131/186/65 130/184/64 +f 129/185/63 133/215/67 131/186/65 +f 131/186/65 134/189/68 132/187/66 +f 133/188/67 156/216/83 134/189/68 +f 132/190/66 134/193/68 135/191/69 +f 134/193/68 156/217/83 137/194/71 +f 136/192/70 135/191/69 138/195/72 +f 135/191/69 137/218/71 140/197/74 +f 138/195/72 142/200/76 141/198/75 +f 140/199/74 143/219/77 142/200/76 +f 142/200/76 125/179/59 122/176/56 +f 143/201/77 155/220/82 125/179/59 +f 144/202/78 148/206/78 145/203/79 +f 144/202/78 153/211/80 147/205/80 +f 149/207/15 152/210/81 150/208/81 +f 146/204/79 145/203/79 150/208/81 +f 153/211/80 157/221/15 154/212/15 +o LeftLeg +v 2.778606 19.489141 -1.987076 +v 1.889860 19.673222 -2.313623 +v 1.889860 19.857271 -1.987076 +v 2.648463 19.358999 -2.313623 +v 1.889860 19.480209 -1.987077 +v 3.146736 18.600395 -1.987077 +v 2.962687 18.600395 -2.313623 +v 2.511982 19.222517 -1.987076 +v 2.778605 17.711649 -1.987077 +v 2.648463 17.841791 -2.313623 +v 2.769673 18.600395 -1.987077 +v 1.889860 17.527569 -2.313623 +v 2.511982 17.978273 -1.987077 +v 1.001114 17.711649 -1.987077 +v 1.889860 17.343519 -1.987077 +v 1.131257 17.841791 -2.313623 +v 1.889860 17.720581 -1.987077 +v 0.632984 18.600395 -1.987077 +v 0.817033 18.600395 -2.313623 +v 1.267738 17.978273 -1.987077 +v 1.131256 19.358997 -2.313623 +v 1.010046 18.600395 -1.987077 +v 1.001114 19.489140 -1.987077 +v 1.267738 19.222517 -1.987077 +v -0.033751 18.475336 2.026671 +v 4.013639 18.711559 2.026671 +v -0.033751 18.711559 2.026671 +v 4.013639 18.475336 2.026671 +v 4.013639 18.998186 -2.020719 +v 0.900512 18.188709 -2.020719 +v -0.033751 18.998186 -2.020719 +v 0.900512 18.998186 -2.020719 +v -0.033751 18.188709 -2.020719 +v 4.013639 18.188707 -2.020719 +v 2.857196 18.998186 -2.020719 +v 2.857196 18.188707 -2.020719 vt 0.144578 0.794118 vt 0.192771 0.764706 vt 0.192771 0.794118 @@ -561,27 +750,27 @@ vt 0.253012 0.735294 vt 0.204819 0.735294 vt 0.192771 0.794118 vn 0.6160 0.6160 -0.4910 -vn 0.0000 0.2170 -0.9761 -vn 0.0000 0.8712 -0.4910 -vn 0.1535 0.1535 -0.9761 +vn -0.0000 0.2171 -0.9762 +vn -0.0000 0.8712 -0.4910 +vn 0.1535 0.1535 -0.9762 vn 0.0000 -0.8609 -0.5088 vn 0.8712 0.0000 -0.4910 -vn 0.2171 0.0000 -0.9761 +vn 0.2171 -0.0000 -0.9762 vn -0.6087 -0.6087 -0.5088 vn 0.6160 -0.6160 -0.4910 -vn 0.1535 -0.1535 -0.9761 -vn -0.8608 0.0000 -0.5088 -vn 0.0000 -0.2170 -0.9761 +vn 0.1535 -0.1535 -0.9762 +vn -0.8609 0.0000 -0.5088 +vn -0.0000 -0.2171 -0.9762 vn -0.6087 0.6087 -0.5088 vn -0.6160 -0.6160 -0.4910 vn 0.0000 -0.8712 -0.4910 -vn -0.1535 -0.1535 -0.9761 -vn 0.0000 0.8609 -0.5088 +vn -0.1535 -0.1535 -0.9762 +vn -0.0000 0.8609 -0.5088 vn -0.8712 0.0000 -0.4910 -vn -0.2171 0.0000 -0.9761 +vn -0.2171 0.0000 -0.9762 vn 0.6087 0.6087 -0.5088 -vn -0.1535 0.1535 -0.9761 -vn 0.8608 0.0000 -0.5088 +vn -0.1535 0.1535 -0.9762 +vn 0.8609 0.0000 -0.5088 vn -0.6160 0.6160 -0.4910 vn 0.6087 -0.6087 -0.5088 vn -0.7225 0.0000 0.6914 @@ -589,415 +778,398 @@ vn 0.7225 0.0000 0.6914 vn 0.6906 0.0000 -0.7232 vn 0.0000 0.0000 -1.0000 vn -0.6906 0.0000 -0.7232 -usemtl None s 1 -f 98/159/76 96/160/77 95/161/78 -f 99/162/79 97/163/80 96/160/77 -f 101/164/81 99/162/79 98/159/76 -f 102/165/82 100/166/83 99/162/79 -f 104/167/84 102/165/82 101/164/81 -f 105/168/85 103/169/86 102/165/82 -f 104/167/84 108/170/87 105/168/85 -f 108/170/87 106/171/88 105/168/85 -f 110/172/89 108/173/87 107/174/90 -f 111/175/91 109/176/92 108/173/87 -f 113/177/93 111/175/91 110/172/89 -f 114/178/94 112/179/95 111/175/91 -f 113/177/93 117/180/96 114/178/94 -f 117/180/96 115/181/97 114/178/94 -f 95/161/78 117/180/96 116/182/98 -f 96/160/77 118/183/99 117/180/96 -f 120/184/100 121/185/101 119/186/100 -f 122/187/101 125/188/102 121/185/101 -f 129/189/103 123/190/104 127/191/103 -f 124/192/104 119/186/100 123/190/104 -f 126/193/102 130/194/103 125/188/102 -f 98/159/76 99/162/79 96/160/77 -f 99/162/79 100/195/83 97/163/80 -f 101/164/81 102/165/82 99/162/79 -f 102/165/82 103/196/86 100/166/83 -f 104/167/84 105/168/85 102/165/82 -f 105/168/85 106/197/88 103/169/86 -f 104/167/84 107/198/90 108/170/87 -f 108/170/87 109/199/92 106/171/88 -f 110/172/89 111/175/91 108/173/87 -f 111/175/91 112/200/95 109/176/92 -f 113/177/93 114/178/94 111/175/91 -f 114/178/94 115/201/97 112/179/95 -f 113/177/93 116/182/98 117/180/96 -f 117/180/96 118/202/99 115/181/97 -f 95/161/78 96/160/77 117/180/96 -f 96/160/77 97/203/80 118/183/99 -f 120/184/100 122/187/101 121/185/101 -f 122/187/101 126/193/102 125/188/102 -f 129/189/103 124/192/104 123/190/104 -f 124/192/104 120/184/100 119/186/100 -f 126/193/102 128/204/103 130/194/103 +f 158/222/84 159/223/85 160/224/86 +f 161/225/87 162/226/88 159/223/85 +f 163/227/89 161/225/87 158/222/84 +f 164/228/90 165/229/91 161/225/87 +f 166/230/92 164/228/90 163/227/89 +f 167/231/93 168/232/94 164/228/90 +f 166/230/92 169/233/95 167/231/93 +f 169/233/95 170/234/96 167/231/93 +f 171/235/97 169/236/95 172/237/98 +f 173/238/99 174/239/100 169/236/95 +f 175/240/101 173/238/99 171/235/97 +f 176/241/102 177/242/103 173/238/99 +f 175/240/101 178/243/104 176/241/102 +f 178/243/104 179/244/105 176/241/102 +f 160/224/86 178/243/104 180/245/106 +f 159/223/85 181/246/107 178/243/104 +f 182/247/108 183/248/109 184/249/108 +f 185/250/109 186/251/110 183/248/109 +f 187/252/111 188/253/112 189/254/111 +f 190/255/112 184/249/108 188/253/112 +f 191/256/110 192/257/111 186/251/110 +f 158/222/84 161/225/87 159/223/85 +f 161/225/87 165/258/91 162/226/88 +f 163/227/89 164/228/90 161/225/87 +f 164/228/90 168/259/94 165/229/91 +f 166/230/92 167/231/93 164/228/90 +f 167/231/93 170/260/96 168/232/94 +f 166/230/92 172/261/98 169/233/95 +f 169/233/95 174/262/100 170/234/96 +f 171/235/97 173/238/99 169/236/95 +f 173/238/99 177/263/103 174/239/100 +f 175/240/101 176/241/102 173/238/99 +f 176/241/102 179/264/105 177/242/103 +f 175/240/101 180/245/106 178/243/104 +f 178/243/104 181/265/107 179/244/105 +f 160/224/86 159/223/85 178/243/104 +f 159/223/85 162/266/88 181/246/107 +f 182/247/108 185/250/109 183/248/109 +f 185/250/109 191/256/110 186/251/110 +f 187/252/111 190/255/112 188/253/112 +f 190/255/112 182/247/108 184/249/108 +f 191/256/110 193/267/111 192/257/111 +o LeftFoot +v 4.121621 24.067026 2.136321 +v 4.121620 22.765116 -2.130369 +v 4.121621 24.067026 -2.130369 +v -0.145070 22.765120 -2.130369 +v 1.988274 21.575682 -3.487656 +v -0.145070 24.067028 -2.130369 +v -0.145070 24.067028 2.136321 +v 1.988275 24.067026 -3.487656 +vt 0.144578 0.823529 +vt 0.180723 0.941176 +vt 0.144578 0.941176 +vt 0.048193 0.941176 +vt 0.144578 0.941176 +vt 0.096386 0.970588 +vt 0.048193 0.941176 +vt 0.012048 0.941176 +vt 0.048193 0.823529 +vt 0.144578 1.000000 +vt 0.048193 1.000000 +vt 0.000000 1.000000 +vt 0.096386 0.970588 +vt 0.192771 1.000000 +vn 1.0000 -0.0000 0.0000 +vn -0.0000 -0.7521 0.6591 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.5368 -0.0000 -0.8437 +vn -0.5368 0.0000 -0.8437 +s off +f 194/268/113 195/269/113 196/270/113 +f 195/271/114 197/272/114 198/273/114 +f 199/274/115 197/275/115 200/276/115 +f 196/270/116 200/276/116 194/268/116 +f 195/269/117 201/277/117 196/270/117 +f 197/275/118 201/278/118 198/279/118 +f 199/274/116 196/270/116 201/280/116 +f 196/270/116 199/274/116 200/276/116 +f 195/269/117 198/281/117 201/277/117 +f 197/275/118 199/274/118 201/278/118 o Head -v -1.508368 -8.285352 3.802689 -v -1.508372 -14.278589 3.802688 +v -1.508372 -14.278589 3.802687 v 1.488250 -8.285354 3.802689 -v 1.488247 -14.278592 3.802688 -v -1.508368 -8.285347 -2.190549 -v -1.508371 -14.278585 -2.190550 +v -1.508368 -8.285352 3.802689 +v 1.488248 -14.278587 -2.190551 v 1.488251 -8.285350 -2.190549 -v 1.488248 -14.278587 -2.190550 -v -1.273192 -5.900111 5.032125 +v -1.508371 -14.278585 -2.190551 +v -1.508368 -8.285347 -2.190549 +v 1.488247 -14.278592 3.802687 v -1.273195 -9.457933 8.619613 v 1.253076 -5.900113 5.032125 -v 1.253075 -9.457935 8.619614 -v -1.273194 -9.487597 1.474305 -v -1.273196 -13.045419 5.061792 +v -1.273192 -5.900111 5.032125 +v 1.253072 -13.045421 5.061792 v 1.253075 -9.487598 1.474305 -v 1.253072 -13.045421 5.061793 -v -0.980570 -1.235440 9.273873 +v -1.273194 -9.487597 1.474305 +v -1.273196 -13.045419 5.061791 +v 1.253075 -9.457935 8.619614 v -0.980572 -6.999479 9.297806 v 0.960457 -1.235441 9.273874 -v 0.960454 -6.999480 9.297807 -v -0.980569 -1.267190 1.626005 -v -0.980572 -7.031229 1.649937 -v 0.960459 -1.267191 1.626004 +v -0.980570 -1.235440 9.273873 v 0.960455 -7.031230 1.649937 -v -1.281824 3.370458 8.560949 +v 0.960459 -1.267191 1.626004 +v -0.980572 -7.031229 1.649937 +v -0.980569 -1.267190 1.626005 +v 0.960454 -6.999480 9.297807 v -1.281827 -1.716582 8.582069 v 1.261716 3.370455 8.560948 -v 1.261714 -1.716584 8.582069 -v -1.281823 3.349338 3.473909 -v -1.281826 -1.737700 3.495030 -v 1.261717 3.349337 3.473909 +v -1.281824 3.370457 8.560949 v 1.261715 -1.737702 3.495030 -v -0.938246 6.794746 7.686372 -v -0.938248 3.082000 7.701787 -v 0.918143 6.794745 7.686372 +v 1.261717 3.349337 3.473909 +v -1.281826 -1.737700 3.495030 +v -1.281823 3.349338 3.473909 +v 1.261714 -1.716584 8.582069 +v -0.938246 6.794745 7.686372 v 0.918141 3.081999 7.701787 -v -0.938246 6.779333 3.973624 -v -0.938247 3.066586 3.989039 -v 0.918144 6.779332 3.973624 +v 0.918143 6.794744 7.686372 v 0.918142 3.066585 3.989039 -v -0.665263 7.681831 6.846099 +v 0.918144 6.779332 3.973624 +v -0.938247 3.066586 3.989039 +v -0.938246 6.779333 3.973624 v -0.665264 5.820934 5.000589 -v 0.645162 7.681829 6.846099 -v 0.645161 5.820933 5.000589 +v 0.645162 7.681828 6.846099 +v -0.665263 7.681830 6.846099 +v 0.645162 7.666443 3.139690 +v 0.645163 9.527342 4.985200 v -0.665262 9.527344 4.985200 v -0.665263 7.666443 3.139690 -v 0.645163 9.527342 4.985200 -v 0.645162 7.666443 3.139690 -v -4.410054 0.192320 4.402977 +v 0.645161 5.820933 5.000589 v -4.410059 -8.607680 4.402976 -v 4.389945 0.192312 4.402977 -v 4.389940 -8.607687 4.402976 -v -4.410053 0.192326 -4.397024 -v -4.410058 -9.299909 -3.372829 -v 4.389946 0.192319 -4.397024 -v 4.389941 -9.299915 -3.372831 -v -4.410056 -2.354111 4.402977 -v -4.410058 -6.061250 4.402976 v 4.389942 -6.061256 4.402976 -v 4.389944 -2.354118 4.402977 -v 4.389943 -6.061251 -4.397025 -v 4.389945 -1.759964 -4.397025 -v -4.410056 -6.061244 -4.397025 -v -4.410054 -1.759957 -4.397025 -v 4.389945 0.192314 2.222194 -v 4.389940 -9.299918 0.356267 -v -4.410054 0.192321 2.222193 -v -4.410059 -9.299911 0.356267 -v -4.410056 -3.091842 2.493567 -v -4.410057 -5.765733 -0.772733 -v 4.389943 -3.091849 2.493567 +v -4.410058 -6.061250 4.402976 v 4.389942 -5.765739 -0.772733 -v -0.010055 -3.490466 -9.097178 -v -0.010054 -1.538183 -9.097178 -v 2.486246 -8.607678 -7.519540 +v 4.389941 -8.607681 -4.397027 +v 4.389943 -6.061251 -4.397026 v -2.506362 -8.607675 -7.519540 -v 2.486247 -6.061247 -7.519539 -v -2.506361 -6.061244 -7.519539 -v 4.389939 -10.583710 -0.159607 -v 4.389940 -10.583708 -2.856956 -v -4.410059 -10.583701 -2.856956 -v -4.410060 -10.583703 -0.159607 -v 2.486246 -9.631669 -10.148378 -v -2.506362 -9.631665 -10.148378 -v 2.486247 -7.085238 -10.148378 -v -2.506361 -7.085234 -10.148378 -v 2.486244 -11.852020 -8.006340 -v -2.506363 -11.852015 -8.006340 -v 2.486245 -11.852019 -9.310804 -v -2.506363 -11.852015 -9.310804 -v -0.010058 -9.631667 -10.148378 -v -0.010059 -11.852016 -9.310804 -v 0.633919 -10.234200 -9.921087 -v 1.842269 -10.234200 -9.921087 -v 1.842268 -11.249486 -9.538094 -v 0.633918 -11.249485 -9.538094 -v -1.862386 -10.234198 -9.921087 -v -0.654035 -10.234199 -9.921087 -v -0.654036 -11.249484 -9.538094 -v -1.862386 -11.249483 -9.538094 -v 1.842269 -9.798319 -8.765591 -v 0.633919 -9.798318 -8.765591 -v 0.633919 -10.813603 -8.382599 -v 1.842269 -10.813604 -8.382599 -v -0.654035 -9.798317 -8.765591 -v -1.862385 -9.798316 -8.765591 -v -1.862385 -10.813601 -8.382599 -v -0.654036 -10.813602 -8.382599 -v 4.389940 -8.607686 1.380462 -v 4.389941 -8.607681 -4.397026 -v -4.410058 -8.607675 -4.397026 +v 2.486246 -8.607678 -7.519540 v -4.410058 -8.607678 1.380462 +v -4.410057 -5.765733 -0.772733 +v 4.389940 -8.607687 4.402976 +v 4.389940 -8.607686 1.380462 +v -4.410054 0.192321 2.222193 +v -4.410056 -2.354111 4.402977 +v -4.410054 0.192320 4.402977 +v -4.410056 -3.091842 2.493567 +v 4.389945 -1.759964 -4.397025 +v -0.010054 -1.538183 -9.097178 +v 4.389946 0.192319 -4.397024 +v 4.389945 0.192314 2.222194 +v 4.389944 -2.354118 4.402977 +v 4.389945 0.192312 4.402977 +v 4.389943 -3.091849 2.493567 +v -4.410054 -1.759957 -4.397025 +v -4.410053 0.192326 -4.397024 +v -4.410059 -11.275934 -3.324822 +v -4.410058 -8.607675 -4.397027 +v -4.410056 -6.061244 -4.397026 +v -0.010055 -3.490466 -9.097178 +v 2.486247 -6.061246 -7.519539 +v -2.506361 -7.085234 -10.148378 +v -2.506361 -6.061244 -7.519539 v 4.389939 -11.275944 0.308259 v 4.389940 -11.275941 -3.324822 -v -4.410059 -11.275934 -3.324822 -v -4.410060 -11.275937 0.308259 +v -4.410059 -10.583701 -2.856956 v -3.610058 -9.299910 -3.372830 +v -4.410058 -9.299909 -3.372829 +v 4.389940 -10.583708 -2.856956 +v 3.589941 -9.299915 -3.372830 +v 3.589940 -10.583708 -2.856956 +v 2.486246 -9.631669 -10.148378 +v -0.010058 -9.631667 -10.148378 +v 2.486247 -7.085238 -10.148378 +v -2.506362 -9.631665 -10.148378 +v 0.633918 -11.249485 -9.538095 +v 0.633919 -9.798318 -8.765591 +v 0.633919 -10.813603 -8.382599 +v -2.506363 -11.852015 -8.006341 +v -0.010059 -11.852016 -9.310805 +v 2.486244 -11.852020 -8.006341 +v 2.486245 -11.852019 -9.310805 +v 1.842268 -11.249486 -9.538095 +v 1.842269 -10.813604 -8.382599 +v 1.842269 -10.234200 -9.921087 +v 0.633919 -10.234200 -9.921087 +v -1.862386 -10.234198 -9.921087 +v -0.654035 -10.234199 -9.921087 +v -2.506363 -11.852015 -9.310805 +v -0.654036 -11.249484 -9.538095 +v -1.862386 -11.249483 -9.538095 +v 1.842269 -9.798319 -8.765591 +v -0.654035 -9.798317 -8.765591 +v -1.862385 -10.813601 -8.382599 +v -1.862385 -9.798316 -8.765591 +v -0.654036 -10.813602 -8.382599 +v 4.389941 -9.299915 -3.372832 +v 4.389940 -9.299918 0.356267 +v 4.389939 -10.583710 -0.159607 +v -4.410060 -11.275937 0.308259 +v -4.410060 -10.583703 -0.159607 +v -4.410059 -9.299911 0.356267 v -3.610059 -9.299911 0.356267 v -3.610059 -10.583702 -2.856956 v -3.610060 -10.583703 -0.159607 v 3.589941 -9.299917 0.356267 -v 3.589941 -9.299915 -3.372830 v 3.589939 -10.583709 -0.159608 -v 3.589940 -10.583708 -2.856956 -v 5.645875 -8.217163 4.660890 -v 5.645875 -9.817163 4.660890 -v 4.163136 -8.217162 5.262124 -v 4.163136 -9.817162 5.262124 -v 5.044641 -8.217161 3.178150 -v 5.044641 -9.817162 3.178150 -v 3.561902 -8.217160 3.779384 -v 3.561902 -9.817161 3.779384 -v 3.896814 -2.763540 7.254127 -v 3.801686 -8.680468 4.249980 -v 4.032371 -1.908365 6.272345 -v 3.853090 -8.356171 3.877670 -v 5.014153 -1.554140 5.482267 -v 4.225400 -8.221842 3.578059 -v 6.267045 -1.908366 5.346712 -v 4.700520 -8.356171 3.526654 -v 7.057123 -2.763540 5.945084 -v 5.000132 -8.680469 3.753567 -v 6.921567 -3.618715 6.926867 -v 4.948727 -9.004766 4.125877 -v 5.939785 -3.972939 7.716943 -v 4.576417 -9.139093 4.425488 -v 4.686890 -3.618714 7.852498 -v 4.101297 -9.004766 4.476893 -v -5.172473 5.369970 8.408375 -v -5.172474 5.562243 6.053672 -v -5.172478 -3.465167 7.706107 +v -5.172473 5.369969 8.408375 v -5.172478 -3.269783 5.313330 +v -5.172474 5.562243 6.053672 v -4.095266 -8.217159 5.262125 +v -5.578005 -9.817158 4.660890 v -4.095266 -9.817160 5.262124 v -5.578005 -8.217158 4.660890 -v -5.578005 -9.817158 4.660890 -v -3.494032 -8.217157 3.779385 -v -3.494032 -9.817157 3.779384 -v -4.976771 -8.217155 3.178150 v -4.976771 -9.817156 3.178149 -v -7.156473 -2.763536 5.904851 -v -5.132457 -8.680464 3.682846 -v -6.375424 -1.908360 5.294742 -v -4.836269 -8.356166 3.451482 -v -5.120644 -1.554137 5.411564 -v -4.360434 -8.221838 3.495784 -v -4.127169 -1.908363 6.186887 -v -3.983691 -8.356167 3.789800 -v -3.976962 -2.763537 7.166533 -v -3.926729 -8.680464 4.161299 +v -3.494032 -8.217157 3.779385 +v -4.976771 -8.217155 3.178149 +v -3.494032 -9.817157 3.779383 v -4.758012 -3.618712 7.776642 -v -4.222918 -9.004762 4.392663 -v -6.012789 -3.972937 7.659819 -v -4.698752 -9.139090 4.348361 +v -4.127169 -1.908363 6.186887 v -7.006265 -3.618711 6.884498 -v -5.075496 -9.004761 4.054346 -v 5.288472 -3.271343 5.332368 -v 5.288471 -3.463617 7.687073 -v 5.288476 5.563792 6.034633 -v 5.288477 5.368412 8.427410 -v -5.185373 -3.465167 7.706107 -v -5.185368 5.369970 8.408375 -v -5.185369 5.562245 6.053672 +v -5.185368 5.369969 8.408375 v -5.185372 -3.269783 5.313330 -v -5.712929 -8.217155 4.814359 -v -5.712930 -9.817155 4.814359 -v -4.221374 -8.217156 5.393374 -v -4.221375 -9.817156 5.393374 -v -5.133913 -8.217155 3.322803 -v -5.133914 -9.817154 3.322802 -v -3.642358 -8.217155 3.901819 -v -3.642359 -9.817156 3.901819 -v -3.925316 -2.763535 7.381176 -v -3.875084 -8.680463 4.375944 -v -4.075523 -1.908360 6.401529 -v -3.932045 -8.356165 4.004445 -v -5.068998 -1.554133 5.626207 -v -4.308788 -8.221836 3.710428 -v -6.323776 -1.908357 5.509384 -v -4.784623 -8.356164 3.666127 -v -7.104827 -2.763530 6.119492 -v -5.080811 -8.680461 3.897491 -v -6.954621 -3.618704 7.099140 -v -5.023851 -9.004759 4.268991 -v -5.961145 -3.972931 7.874462 -v -4.647107 -9.139088 4.563006 -v -4.706366 -3.618708 7.991283 -v -4.171273 -9.004760 4.607308 -v 5.160210 5.369962 8.399809 -v 5.125034 5.562235 6.045368 +v -5.185373 -3.465167 7.706107 +v -5.172478 -3.465167 7.706107 +v -5.185369 5.562244 6.053672 v 5.149714 -3.465176 7.697618 -v 5.113968 -3.269792 5.305109 -v 4.036106 -8.217167 5.270001 -v 4.036106 -9.817166 5.270001 +v 5.125034 5.562234 6.045369 +v 5.160210 5.369962 8.399809 v 5.509698 -8.217167 4.646683 -v 5.509698 -9.817167 4.646683 -v 3.412788 -8.217164 3.796409 -v 3.412787 -9.817163 3.796409 -v 4.886380 -8.217164 3.173090 +v 4.036106 -9.817166 5.270000 +v 4.036106 -8.217167 5.270000 v 4.886380 -9.817164 3.173090 -v 7.106581 -2.763548 5.866924 -v 5.049588 -8.680472 3.675405 -v 6.316504 -1.908371 5.268551 -v 4.749977 -8.356174 3.448492 -v 5.063610 -1.554145 5.404106 -v 4.274858 -8.221846 3.499897 -v 4.081829 -1.908370 6.194184 -v 3.902549 -8.356174 3.799508 -v 3.946273 -2.763545 7.175965 -v 3.851143 -8.680471 4.171817 +v 5.509698 -9.817167 4.646683 +v 3.412788 -8.217164 3.796408 +v 4.886380 -8.217164 3.173090 +v 3.412787 -9.817163 3.796408 v 4.736349 -3.618721 7.774338 -v 4.150755 -9.004769 4.398731 -v 5.989241 -3.972946 7.638782 -v 4.625875 -9.139097 4.347325 +v 4.081829 -1.908370 6.194184 v 6.971023 -3.618722 6.848705 -v 4.998183 -9.004769 4.047714 -v -5.345529 -3.271336 5.480423 -v -5.310351 -3.463610 7.834865 -v -5.335032 5.563800 6.182609 -v -5.299286 5.368419 8.575117 -v 5.162607 -3.465176 7.697426 v 5.173103 5.369962 8.399616 -v 5.137928 5.562235 6.045175 v 5.126861 -3.269792 5.304916 -v 3.316185 -6.993679 -5.128780 +v 5.162607 -3.465176 7.697426 +v 5.113968 -3.269792 5.305109 +v 5.137928 5.562234 6.045176 v 3.316186 -5.821070 -5.128779 -v 2.306064 -6.993678 -4.533243 -v 2.306065 -5.821069 -4.533242 -v 2.720647 -6.993677 -6.138901 -v 2.720649 -5.821068 -6.138902 -v 1.710526 -6.993675 -5.543364 -v 1.710527 -5.821067 -5.543363 -v 1.114989 -5.821065 -6.553485 -v 1.114987 -6.993674 -6.553485 -v 2.125108 -6.993676 -7.149024 -v 2.125110 -5.821066 -7.149024 -v 0.519451 -5.821064 -7.563606 -v 0.519449 -6.993672 -7.563608 -v 1.529571 -6.993674 -8.159145 -v 1.529572 -5.821064 -8.159145 +v 2.306064 -6.993678 -4.533244 +v 3.316185 -6.993679 -5.128780 +v 2.306065 -5.821069 -4.533243 +v 1.710526 -6.993675 -5.543365 +v 1.710527 -5.821066 -5.543364 +v 2.125110 -5.821065 -7.149024 +v 1.114989 -5.821064 -6.553485 +v 2.720647 -6.993677 -6.138902 v 3.316187 -5.234766 -5.128781 v 2.306066 -5.234764 -4.533242 -v 1.710527 -5.234763 -5.543363 +v 1.529571 -6.993673 -8.159145 +v 1.529572 -5.821064 -8.159145 +v 1.114987 -6.993673 -6.553485 +v 2.720649 -5.821067 -6.138903 +v 2.125108 -6.993676 -7.149024 +v 0.519449 -6.993671 -7.563609 v 2.720649 -5.234764 -6.138902 -v 1.114989 -5.234761 -6.553485 +v 1.710527 -5.234763 -5.543363 v 2.125111 -5.234762 -7.149024 -v 0.519451 -5.234759 -7.563606 +v 0.519451 -5.234758 -7.563606 +v 1.114989 -5.234761 -6.553485 +v 0.519451 -5.821064 -7.563606 v 1.529572 -5.234761 -8.159145 v -3.396486 -6.993674 -5.128779 -v -3.396485 -5.821067 -5.128778 -v -2.386364 -6.993676 -4.533241 v -2.386365 -5.821069 -4.533240 -v -2.800947 -6.993675 -6.138901 -v -2.800947 -5.821068 -6.138901 -v -1.790826 -6.993676 -5.543362 -v -1.790826 -5.821069 -5.543364 -v -1.195287 -5.821067 -6.553484 -v -1.195287 -6.993677 -6.553484 -v -2.205408 -6.993676 -7.149024 -v -2.205409 -5.821068 -7.149022 -v -0.599749 -5.821067 -7.563604 -v -0.599750 -6.993677 -7.563605 -v -1.609871 -6.993676 -8.159142 -v -1.609871 -5.821066 -8.159142 -v -3.396486 -5.234763 -5.128779 +v -3.396485 -5.821067 -5.128778 +v -1.790826 -6.993676 -5.543363 +v -2.386364 -6.993676 -4.533241 +v -1.790826 -5.821068 -5.543365 +v -2.205409 -5.821067 -7.149023 +v -2.800947 -5.821067 -6.138902 +v -2.800947 -6.993675 -6.138902 v -2.386365 -5.234761 -4.533240 -v -1.790826 -5.234762 -5.543364 +v -1.609871 -6.993676 -8.159142 +v -2.205408 -6.993676 -7.149024 +v -1.195287 -6.993677 -6.553484 +v -0.599749 -5.821066 -7.563604 +v -0.599750 -6.993677 -7.563605 v -2.800947 -5.234764 -6.138901 +v -1.195287 -5.821066 -6.553484 +v -1.790826 -5.234762 -5.543364 v -1.195288 -5.234763 -6.553484 -v -2.205409 -5.234762 -7.149023 -v -0.599749 -5.234764 -7.563604 v -1.609871 -5.234762 -8.159142 -v 1.704096 -7.845215 -9.860027 +v -2.205409 -5.234762 -7.149023 +v -1.609871 -5.821065 -8.159142 +v -0.599749 -5.234764 -7.563604 v 1.704097 -6.672606 -9.860027 -v 1.703341 -7.845214 -8.687418 +v 1.703341 -7.845213 -8.687418 +v 1.704096 -7.845214 -9.860027 v 1.703342 -6.672605 -8.687418 -v 0.531487 -7.845212 -9.860781 -v 0.531488 -6.672604 -9.860781 v 0.530734 -7.845212 -8.688173 v 0.530734 -6.672604 -8.688173 -v -0.641875 -6.672601 -8.688927 -v -0.641875 -7.845210 -8.688927 -v -0.641121 -7.845211 -9.861536 v -0.641120 -6.672602 -9.861536 -v -1.814482 -6.672599 -8.689682 -v -1.814483 -7.845208 -8.689682 +v -0.641875 -6.672601 -8.688927 +v 0.531487 -7.845212 -9.860781 +v 1.704096 -6.086301 -9.860025 +v 1.703342 -6.086300 -8.687418 v -1.813730 -7.845209 -9.862289 -v -1.813729 -6.672600 -9.862289 -v 1.704096 -6.086302 -9.860025 -v 1.703342 -6.086301 -8.687418 -v 0.530734 -6.086299 -8.688171 -v 0.531488 -6.086300 -9.860781 +v -1.813729 -6.672599 -9.862289 +v -0.641875 -7.845210 -8.688927 +v 0.531488 -6.672604 -9.860781 +v -0.641121 -7.845211 -9.861536 +v -1.814483 -7.845208 -8.689682 +v 0.531488 -6.086299 -9.860781 +v 0.530734 -6.086298 -8.688171 v -0.641875 -6.086297 -8.688927 -v -0.641120 -6.086298 -9.861536 -v -1.814482 -6.086295 -8.689680 v -1.813727 -6.086296 -9.862289 +v -1.814482 -6.086295 -8.689680 +v -1.814482 -6.672598 -8.689682 +v -0.641120 -6.086298 -9.861536 v -2.474616 -1.420238 -4.557697 -v -2.493140 -2.558242 -4.275535 -v -3.339206 -1.597586 -5.329736 v -3.357730 -2.735590 -5.047575 -v -1.682685 -1.640480 -5.393971 -v -1.701210 -2.778483 -5.111809 +v -2.493140 -2.558242 -4.275535 v -2.547275 -1.817827 -6.166008 -v -2.565799 -2.955831 -5.883848 +v -3.339206 -1.597586 -5.329736 v -1.773869 -3.176071 -6.720119 -v -1.755345 -2.038068 -7.002281 -v -0.890756 -1.860719 -6.230242 +v -1.701210 -2.778483 -5.111809 +v -2.565799 -2.955831 -5.883848 +v -1.682685 -1.640480 -5.393971 +v -2.502402 -3.127246 -4.134454 v -0.909280 -2.998723 -5.948082 +v -0.098825 -2.080959 -7.066516 +v -0.890756 -1.860719 -6.230242 +v -1.755345 -2.038068 -7.002281 v -0.981939 -3.396310 -7.556392 v -0.963415 -2.258307 -7.838554 -v -0.098825 -2.080959 -7.066516 -v -0.117349 -3.218962 -6.784357 -v -2.502402 -3.127246 -4.134454 +v -1.710471 -3.347486 -4.970729 v -3.366992 -3.304594 -4.906494 v -2.575060 -3.524835 -5.742768 -v -1.710471 -3.347486 -4.970729 -v -1.783131 -3.745074 -6.579041 -v -0.918541 -3.567726 -5.807003 v -0.991202 -3.965313 -7.415312 +v -0.918541 -3.567726 -5.807003 +v -1.783131 -3.745074 -6.579041 v -0.126611 -3.787967 -6.643275 -v 2.425965 -1.420243 -4.557696 +v -0.117349 -3.218962 -6.784357 v 2.444487 -2.558248 -4.275535 v 3.290554 -1.597593 -5.329733 +v 2.425965 -1.420243 -4.557696 v 3.309077 -2.735597 -5.047574 -v 1.634034 -1.640481 -5.393968 -v 1.652557 -2.778485 -5.111808 v 2.498624 -1.817831 -6.166008 -v 2.517147 -2.955835 -5.883847 +v 1.652557 -2.778485 -5.111808 v 1.725216 -3.176074 -6.720120 -v 1.706694 -2.038069 -7.002281 +v 2.517147 -2.955835 -5.883847 +v 1.634034 -1.640481 -5.393968 +v 3.318337 -3.304599 -4.906492 v 0.842104 -1.860718 -6.230242 +v 0.068697 -3.218961 -6.784354 v 0.860628 -2.998724 -5.948081 -v 0.933287 -3.396311 -7.556393 +v 1.706694 -2.038069 -7.002281 v 0.914763 -2.258307 -7.838553 v 0.050174 -2.080956 -7.066514 -v 0.068697 -3.218961 -6.784354 -v 2.453748 -3.127249 -4.134454 -v 3.318337 -3.304599 -4.906492 v 2.526407 -3.524837 -5.742766 v 1.661818 -3.347488 -4.970726 -v 1.734478 -3.745075 -6.579039 v 0.869887 -3.567725 -5.807002 v 0.942548 -3.965313 -7.415312 +v 1.734478 -3.745075 -6.579039 +v 0.933287 -3.396311 -7.556393 v 0.077959 -3.787963 -6.643274 +v 2.453748 -3.127249 -4.134454 +v -0.938248 3.082000 7.701787 +v -6.375424 -1.908360 5.294742 +v -7.156473 -2.763536 5.904851 +v -6.012789 -3.972937 7.659819 +v -3.976962 -2.763537 7.166533 +v -5.120644 -1.554137 5.411564 +v 6.316504 -1.908371 5.268551 +v 7.106581 -2.763548 5.866924 +v 5.989241 -3.972946 7.638782 +v 3.946273 -2.763545 7.175965 +v 5.063610 -1.554145 5.404106 +v -3.396486 -5.234763 -5.128779 +v -4.836269 -8.356166 3.451482 +v -5.132457 -8.680464 3.682846 +v -4.360434 -8.221838 3.495784 +v -3.983691 -8.356167 3.789799 +v -3.926729 -8.680464 4.161299 +v -4.222918 -9.004762 4.392663 +v -5.075496 -9.004761 4.054346 +v -4.698752 -9.139090 4.348361 +v 4.749977 -8.356174 3.448492 +v 5.049588 -8.680472 3.675405 +v 4.274858 -8.221846 3.499897 +v 3.902549 -8.356174 3.799508 +v 3.851143 -8.680471 4.171816 +v 4.150755 -9.004769 4.398731 +v 4.998183 -9.004769 4.047714 +v 4.625875 -9.139097 4.347324 vt 0.409639 0.411765 vt 0.445783 0.500000 vt 0.409639 0.500000 @@ -1231,33 +1403,33 @@ vt 0.987952 0.676471 vt 0.987952 0.735294 vt 0.963855 0.676471 vt 0.626506 1.000000 -vt 0.722892 0.647059 vt 0.626506 0.647059 +vt 0.722892 0.647059 vt 0.301205 0.955882 -vt 0.265060 0.911765 vt 0.301205 0.911765 +vt 0.265060 0.911765 vt 0.265060 1.000000 -vt 0.228916 0.955882 vt 0.265060 0.955882 +vt 0.228916 0.955882 vt 0.192771 0.911765 vt 0.192771 0.955882 vt 0.265060 0.867647 -vt 0.228916 0.911765 vt 0.228916 0.867647 -vt 0.337349 0.911765 +vt 0.228916 0.911765 vt 0.337349 0.955882 +vt 0.337349 0.911765 vt 0.337349 0.823529 -vt 0.313253 0.882353 vt 0.289157 0.794118 +vt 0.313253 0.882353 vt 0.626506 0.647059 -vt 0.722892 1.000000 vt 0.626506 1.000000 +vt 0.722892 1.000000 +vt 0.963855 0.750000 vt 0.963855 0.750000 vt 0.987952 0.735294 -vt 0.963855 0.750000 +vt 0.987952 0.676471 vt 0.987952 0.676471 vt 0.963855 0.676471 -vt 0.987952 0.676471 vt 0.987952 0.735294 vt 0.963855 0.676471 vt 0.469880 0.558824 @@ -1538,8 +1710,8 @@ vt 0.373494 1.000000 vt 0.337349 1.000000 vt 0.373494 0.794118 vt 0.409639 0.794118 -vt 0.445783 1.000000 vt 0.409639 1.000000 +vt 0.445783 1.000000 vt 0.445783 0.794118 vt 0.481928 1.000000 vt 0.518072 0.794118 @@ -1551,15 +1723,15 @@ vt 0.554217 1.000000 vt 0.626506 0.794118 vt 0.590361 1.000000 vt 0.337349 0.794118 -vt 0.373494 1.000000 vt 0.337349 1.000000 +vt 0.373494 1.000000 vt 0.373494 0.794118 vt 0.626506 1.000000 vt 0.626506 1.000000 vn -0.0000 -0.0000 1.0000 vn 1.0000 -0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn -1.0000 0.0000 -0.0000 +vn -0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 vn -0.0000 -1.0000 -0.0000 vn 0.0000 0.7100 0.7042 vn -0.0000 -0.7100 -0.7042 @@ -1582,8 +1754,8 @@ vn 0.0000 0.3729 0.9279 vn -0.0000 -0.3729 0.9279 vn -0.0000 -0.1484 0.9889 vn 0.0000 0.9356 -0.3529 -vn 0.0000 -0.3529 -0.9356 vn 0.0000 -0.3530 -0.9356 +vn -0.0000 -0.3529 -0.9356 vn -0.0000 -0.9356 0.3529 vn 0.0000 0.3729 -0.9279 vn -0.3758 -0.0000 0.9267 @@ -1595,17 +1767,17 @@ vn 0.0000 -0.9967 -0.0814 vn 0.0001 0.9967 0.0814 vn 0.0000 0.0835 -0.9965 vn 0.0000 -0.0792 0.9969 -vn 0.9999 -0.0000 -0.0149 +vn -0.9999 0.0000 0.0149 +vn 0.3896 0.0000 0.9210 +vn 0.9210 0.0000 -0.3896 vn -0.3896 0.0000 -0.9210 vn -0.9210 0.0000 0.3896 -vn 0.3896 -0.0000 0.9210 -vn 0.9210 -0.0000 -0.3896 -vn -0.2706 -0.7071 -0.6533 -vn -0.9999 0.0000 0.0149 -vn 0.0012 0.9967 0.0814 +vn 0.2706 0.7071 0.6533 +vn 0.9999 -0.0000 -0.0149 vn -0.0012 -0.9967 -0.0814 -vn 0.0149 -0.0835 0.9964 -vn -0.0148 0.0792 -0.9967 +vn 0.0012 0.9967 0.0814 +vn -0.0149 0.0835 -0.9964 +vn 0.0148 -0.0792 0.9967 vn 0.5079 -0.0000 0.8614 vn -0.8614 0.0000 0.5079 vn 0.8614 -0.0000 -0.5079 @@ -1630,10 +1802,8 @@ vn 0.0158 -0.9705 0.2406 vn -0.7373 0.1512 0.6584 vn -0.6754 -0.1878 -0.7132 vn 0.0000 0.9967 0.0814 -vn -0.0001 -0.0792 0.9969 -vn 0.0150 -0.0835 0.9964 -vn -0.0150 0.0792 -0.9967 -vn -0.8990 0.4375 0.0163 +vn 0.0150 -0.0792 0.9967 +vn -0.8991 0.4375 0.0163 vn -0.3889 0.1662 -0.9061 vn -0.9031 -0.1591 -0.3988 vn -0.5033 0.7950 -0.3385 @@ -1643,601 +1813,559 @@ vn 0.1189 0.9466 -0.2996 vn 0.6432 0.4375 0.6283 vn 0.9044 0.1662 -0.3929 vn 0.2257 0.1078 0.9682 -vn 0.9308 -0.1591 0.3289 +vn 0.9309 -0.1591 0.3289 vn -0.3688 -0.0140 0.9294 vn 0.3969 -0.4597 0.7944 vn -0.8336 -0.4597 0.3061 vn -0.3036 -0.5677 0.7652 vn -0.8282 0.1078 0.5500 -vn -0.8992 -0.4375 -0.0029 -vn -0.3753 -0.1662 0.9118 -vn -0.8970 0.1591 0.4123 -vn -0.4982 -0.7950 0.3460 -vn 0.3656 -0.2953 0.8827 -vn 0.5969 -0.7950 -0.1076 -vn 0.1233 -0.9466 0.2978 -vn 0.6338 -0.4375 -0.6379 -vn 0.9102 -0.1662 0.3793 -vn 0.2112 -0.1078 -0.9715 -vn 0.9258 0.1591 -0.3428 -vn -0.3826 0.0140 -0.9238 -vn 0.3850 0.4597 -0.8003 -vn -0.8381 0.4597 -0.2936 -vn -0.3150 0.5677 -0.7606 -vn -0.8363 -0.1078 -0.5376 -usemtl None +vn 0.0575 -0.6201 -0.7824 +vn 0.8970 -0.1591 -0.4123 +vn 0.3754 0.1662 -0.9119 +vn -0.2971 -0.6771 -0.6733 +vn -0.3656 0.2953 -0.8827 +vn -0.2660 -0.6771 -0.6862 +vn -0.2173 -0.8231 -0.5247 +vn -0.5940 -0.6201 -0.5125 +vn -0.9102 0.1662 -0.3794 +vn -0.5499 -0.8333 0.0569 +vn -0.9258 -0.1591 0.3428 +vn 0.0901 -0.9719 0.2176 +vn -0.3850 -0.4597 0.8003 +vn 0.3150 -0.5677 0.7606 +vn 0.8381 -0.4597 0.2936 +vn 0.4291 -0.8333 -0.3486 s off -f 132/205/105 133/206/105 131/207/105 -f 133/208/106 138/209/106 137/210/106 -f 137/211/107 136/212/107 135/213/107 -f 136/212/108 131/214/108 135/215/108 -f 134/216/109 136/212/109 138/209/109 -f 140/217/110 141/218/110 139/219/110 -f 141/220/106 146/221/106 145/222/106 -f 146/221/111 143/223/111 145/224/111 -f 144/225/108 139/226/108 143/227/108 -f 142/228/112 144/225/112 146/221/112 -f 148/229/113 149/230/113 147/231/113 -f 149/230/106 154/232/106 153/233/106 -f 152/234/108 147/231/108 151/235/108 -f 153/236/114 147/231/114 149/230/114 -f 150/237/115 152/238/115 154/239/115 -f 156/240/113 157/241/113 155/242/113 -f 157/241/106 162/243/106 161/244/106 -f 160/245/108 155/246/108 159/247/108 -f 157/241/114 159/248/114 155/249/114 -f 158/250/115 160/245/115 162/243/115 -f 161/244/116 160/251/116 159/252/116 -f 163/253/113 166/254/113 165/255/113 -f 165/255/106 170/256/106 169/257/106 -f 168/258/108 163/253/108 167/259/108 -f 169/257/114 163/253/114 165/255/114 -f 170/260/116 167/259/116 169/257/116 -f 172/261/112 173/262/112 171/263/112 -f 173/262/106 178/264/106 177/265/106 -f 178/264/117 175/266/117 177/265/117 -f 176/267/108 171/263/108 175/268/108 -f 177/265/110 171/269/110 173/262/110 -f 176/270/111 174/271/111 172/272/111 -f 180/273/105 189/274/105 188/275/105 -f 202/276/106 240/277/106 191/278/106 -f 240/279/109 206/280/109 205/281/109 -f 242/282/108 188/283/108 200/284/108 -f 182/285/109 242/286/109 239/287/109 -f 197/288/108 187/289/108 179/290/108 -f 199/291/108 188/283/108 187/289/108 -f 192/292/118 204/293/118 185/294/118 -f 195/295/106 192/292/106 185/294/106 -f 179/296/105 190/297/105 181/298/105 -f 188/275/105 190/297/105 187/299/105 -f 189/300/106 201/301/106 190/302/106 -f 190/302/106 195/295/106 181/303/106 -f 194/304/108 197/288/108 183/305/108 -f 240/279/119 245/306/119 241/307/119 -f 195/308/120 179/296/120 181/298/120 -f 241/309/108 200/284/108 193/310/108 -f 189/300/106 239/311/106 202/276/106 -f 194/304/121 204/312/121 203/313/121 -f 192/314/122 194/315/122 203/316/122 -f 183/317/123 185/318/123 204/319/123 -f 207/320/124 216/321/124 208/322/124 -f 193/310/125 206/323/125 241/309/125 -f 191/278/126 205/324/126 207/325/126 -f 191/326/120 208/322/120 193/327/120 -f 243/328/109 245/329/109 244/330/109 -f 211/331/127 247/332/127 184/333/127 -f 210/334/127 252/335/127 254/336/127 -f 242/286/128 243/328/128 239/287/128 -f 213/337/107 221/338/107 215/339/107 -f 205/324/106 215/340/106 207/325/106 -f 206/323/108 216/341/108 214/342/108 -f 226/343/106 232/344/106 233/345/106 -f 218/346/109 222/347/109 217/348/109 -f 214/342/108 218/349/108 206/323/108 -f 205/281/129 218/346/129 217/348/129 -f 213/350/106 217/351/106 219/352/106 -f 225/353/130 233/345/130 234/354/130 -f 221/338/131 224/355/131 223/356/131 -f 219/357/131 224/355/131 213/337/131 -f 219/357/131 226/358/131 225/359/131 -f 222/347/131 223/356/131 226/358/131 -f 221/338/131 227/360/131 214/361/131 -f 222/347/131 228/362/131 221/338/131 -f 220/363/131 229/364/131 222/347/131 -f 220/363/132 227/360/132 230/365/132 -f 231/366/131 233/345/131 232/344/131 -f 235/367/131 237/368/131 236/369/131 -f 229/370/108 235/367/108 228/371/108 -f 228/372/133 236/369/133 227/373/133 -f 225/374/108 231/366/108 224/375/108 -f 229/376/130 237/368/130 238/377/130 -f 223/378/133 231/366/133 232/344/133 -f 230/379/106 236/369/106 237/368/106 -f 186/380/106 239/311/106 196/381/106 -f 184/382/108 242/282/108 241/309/108 -f 209/383/106 244/384/106 210/385/106 -f 211/386/108 246/387/108 212/388/108 -f 186/380/106 244/384/106 240/277/106 -f 184/382/108 245/389/108 211/386/108 -f 198/390/108 246/387/108 242/282/108 -f 196/381/106 243/391/106 209/383/106 -f 248/392/108 249/393/108 250/394/108 -f 211/395/120 250/394/120 249/393/120 -f 184/396/109 248/392/109 198/397/109 -f 198/398/134 250/394/134 212/399/134 -f 251/400/106 254/336/106 252/335/106 -f 210/401/120 253/402/120 209/403/120 -f 196/404/109 252/335/109 186/405/109 -f 196/406/134 253/402/134 251/400/134 -f 279/407/106 282/408/106 280/409/106 -f 283/410/135 286/411/135 284/412/135 -f 285/413/136 290/414/136 286/411/136 -f 287/415/137 290/414/137 289/416/137 -f 283/417/138 288/418/138 287/419/138 -f 285/420/120 287/421/120 289/422/120 -f 288/418/109 286/411/109 290/414/109 -f 301/423/139 297/424/139 305/425/139 -f 312/426/108 314/427/108 311/428/108 -f 311/429/140 282/430/140 281/431/140 -f 313/432/141 279/433/141 280/434/141 -f 314/435/142 280/434/142 282/430/142 -f 312/436/143 281/431/143 279/433/143 -f 341/437/144 340/438/144 339/439/144 -f 345/440/145 344/441/145 343/442/145 -f 345/443/146 350/444/146 346/445/146 -f 347/446/147 350/444/147 349/447/147 -f 343/448/148 348/449/148 347/450/148 -f 345/440/109 347/451/109 349/452/109 -f 348/449/120 346/445/120 350/444/120 -f 361/453/149 357/454/149 365/455/149 -f 372/456/150 374/457/150 371/458/150 -f 371/459/151 342/460/151 341/461/151 -f 373/462/152 339/463/152 340/464/152 -f 374/465/153 340/464/153 342/460/153 -f 372/466/154 341/461/154 339/463/154 -f 376/467/155 377/468/155 375/469/155 -f 378/470/156 381/471/156 377/468/156 -f 382/472/120 386/473/120 383/474/120 -f 379/475/157 376/467/157 375/469/157 -f 378/476/155 391/477/155 392/478/155 -f 386/473/157 389/479/157 390/480/157 -f 382/472/156 384/481/156 381/482/156 -f 380/483/157 385/484/157 386/473/157 -f 388/485/158 390/480/158 389/479/158 -f 382/486/158 394/487/158 380/488/158 -f 383/489/156 388/485/156 384/490/156 -f 393/491/120 391/477/120 394/487/120 -f 396/492/120 397/493/120 395/494/120 -f 387/495/158 398/496/158 390/497/158 -f 380/498/157 391/477/157 376/499/157 -f 387/500/156 395/494/156 397/493/156 -f 382/501/156 392/478/156 393/491/156 -f 390/502/157 396/492/157 386/503/157 -f 386/504/155 395/494/155 383/505/155 -f 399/506/159 402/507/159 400/508/159 -f 405/509/160 402/507/160 401/510/160 -f 406/511/120 410/512/120 404/513/120 -f 399/506/161 404/513/161 403/514/161 -f 416/515/159 400/516/159 402/517/159 -f 410/512/161 413/518/161 409/519/161 -f 408/520/160 406/511/160 405/521/160 -f 410/512/161 403/514/161 404/513/161 -f 413/518/162 411/522/162 412/523/162 -f 418/524/162 406/525/162 404/526/162 -f 412/523/160 407/527/160 408/528/160 -f 418/524/120 416/515/120 417/529/120 -f 419/530/120 422/531/120 420/532/120 -f 414/533/162 421/534/162 411/535/162 -f 400/536/161 418/524/161 404/537/161 -f 421/534/160 407/538/160 411/539/160 -f 417/529/160 402/540/160 406/541/160 -f 420/532/161 414/542/161 410/543/161 -f 419/530/159 410/544/159 407/545/159 -f 424/546/163 425/547/163 423/548/163 -f 426/549/164 429/550/164 425/547/164 -f 430/551/120 434/552/120 431/553/120 -f 427/554/165 424/546/165 423/548/165 -f 426/555/163 439/556/163 440/557/163 -f 434/552/165 437/558/165 438/559/165 -f 430/551/164 432/560/164 429/561/164 -f 428/562/165 433/563/165 434/552/165 -f 436/564/166 438/559/166 437/558/166 -f 430/565/166 442/566/166 428/567/166 -f 431/568/164 436/564/164 432/569/164 -f 441/570/120 439/556/120 442/566/120 -f 443/571/120 446/572/120 445/573/120 -f 438/574/166 445/573/166 446/572/166 -f 428/575/165 439/556/165 424/576/165 -f 435/577/164 443/571/164 445/573/164 -f 430/578/164 440/557/164 441/570/164 -f 438/579/165 444/580/165 434/581/165 -f 434/582/163 443/571/163 431/583/163 -f 447/584/167 450/585/167 448/586/167 -f 453/587/168 450/585/168 449/588/168 -f 455/589/169 452/590/169 454/591/169 -f 451/592/170 448/586/170 452/590/170 -f 450/593/167 463/594/167 448/595/167 -f 458/596/170 461/597/170 457/598/170 -f 456/599/168 454/591/168 453/600/168 -f 452/590/170 457/598/170 451/592/170 -f 461/597/171 459/601/171 460/602/171 -f 466/603/171 454/604/171 452/605/171 -f 456/606/168 459/601/168 455/607/168 -f 466/603/169 464/608/169 465/609/169 -f 469/610/169 468/611/169 467/612/169 -f 470/613/171 459/614/171 462/615/171 -f 463/594/170 452/616/170 448/617/170 -f 459/618/168 467/612/168 455/619/168 -f 454/620/168 464/608/168 450/621/168 -f 468/611/170 462/622/170 458/623/170 -f 467/612/167 458/624/167 455/625/167 -f 451/592/172 456/599/172 453/587/172 -f 472/626/173 473/627/173 471/628/173 -f 474/629/174 477/630/174 473/627/174 -f 476/631/175 479/632/175 478/633/175 -f 476/631/176 471/628/176 475/634/176 -f 472/635/173 488/636/173 474/637/173 -f 481/638/176 486/639/176 482/640/176 -f 478/633/174 480/641/174 477/642/174 -f 475/634/176 482/640/176 476/631/176 -f 484/643/177 486/639/177 485/644/177 -f 476/645/177 489/646/177 490/647/177 -f 479/648/174 484/643/174 480/649/174 -f 488/636/175 490/647/175 489/646/175 -f 492/650/175 493/651/175 491/652/175 -f 483/653/177 494/654/177 486/655/177 -f 476/656/176 487/657/176 472/658/176 -f 479/659/174 493/651/174 483/660/174 -f 474/661/174 489/646/174 478/662/174 -f 486/663/176 492/650/176 482/664/176 -f 482/665/173 491/652/173 479/666/173 -f 132/205/105 134/216/105 133/206/105 -f 133/208/106 134/216/106 138/209/106 -f 137/211/107 138/209/107 136/212/107 -f 136/212/108 132/205/108 131/214/108 -f 134/216/109 132/205/109 136/212/109 -f 140/217/110 142/228/110 141/218/110 -f 141/220/106 142/228/106 146/221/106 -f 146/221/111 144/225/111 143/223/111 -f 144/225/108 140/217/108 139/226/108 -f 142/228/112 140/217/112 144/225/112 -f 148/229/113 150/237/113 149/230/113 -f 149/230/106 150/237/106 154/232/106 -f 152/234/108 148/229/108 147/231/108 -f 153/236/114 151/667/114 147/231/114 -f 150/237/115 148/229/115 152/238/115 -f 156/240/113 158/250/113 157/241/113 -f 157/241/106 158/250/106 162/243/106 -f 160/245/108 156/668/108 155/246/108 -f 157/241/114 161/244/114 159/248/114 -f 158/250/115 156/668/115 160/245/115 -f 161/244/116 162/243/116 160/251/116 -f 163/253/113 164/669/113 166/254/113 -f 165/255/106 166/670/106 170/256/106 -f 168/258/108 164/671/108 163/253/108 -f 169/257/114 167/259/114 163/253/114 -f 170/260/116 168/672/116 167/259/116 -f 172/261/112 174/271/112 173/262/112 -f 173/262/106 174/271/106 178/264/106 -f 178/264/117 176/673/117 175/266/117 -f 176/267/108 172/261/108 171/263/108 -f 177/265/110 175/674/110 171/269/110 -f 176/270/111 178/264/111 174/271/111 -f 180/273/105 182/285/105 189/274/105 -f 202/276/106 239/311/106 240/277/106 -f 240/279/109 241/307/109 206/280/109 -f 242/282/108 180/675/108 188/283/108 -f 182/285/109 180/273/109 242/286/109 -f 197/288/108 199/291/108 187/289/108 -f 199/291/108 200/284/108 188/283/108 -f 192/292/118 203/676/118 204/293/118 -f 195/295/106 201/301/106 192/292/106 -f 179/296/105 187/299/105 190/297/105 -f 188/275/105 189/274/105 190/297/105 -f 189/300/106 202/276/106 201/301/106 -f 190/302/106 201/301/106 195/295/106 -f 194/304/108 199/291/108 197/288/108 -f 240/279/119 244/677/119 245/306/119 -f 195/308/120 197/678/120 179/296/120 -f 241/309/108 242/282/108 200/284/108 -f 189/300/106 182/679/106 239/311/106 -f 194/304/121 183/305/121 204/312/121 -f 207/320/124 215/339/124 216/321/124 -f 193/310/125 208/680/125 206/323/125 -f 191/278/126 240/277/126 205/324/126 -f 191/326/120 207/320/120 208/322/120 -f 243/328/109 246/681/109 245/329/109 -f 211/331/127 249/393/127 247/332/127 -f 210/334/127 186/682/127 252/335/127 -f 242/286/128 246/681/128 243/328/128 -f 216/321/107 215/339/107 221/338/107 -f 221/338/107 214/361/107 216/321/107 -f 205/324/106 213/350/106 215/340/106 -f 206/323/108 208/680/108 216/341/108 -f 226/343/106 223/683/106 232/344/106 -f 219/357/109 217/348/109 222/347/109 -f 218/346/109 220/363/109 222/347/109 -f 214/342/108 220/684/108 218/349/108 -f 205/281/129 206/280/129 218/346/129 -f 213/350/106 205/324/106 217/351/106 -f 225/353/130 226/685/130 233/345/130 -f 221/338/131 213/337/131 224/355/131 -f 219/357/132 225/359/132 224/355/132 -f 219/357/131 222/347/131 226/358/131 -f 222/347/131 221/338/131 223/356/131 -f 221/338/131 228/362/131 227/360/131 -f 222/347/132 229/364/132 228/362/132 -f 220/363/131 230/365/131 229/364/131 -f 220/363/131 214/361/131 227/360/131 -f 231/366/131 234/354/131 233/345/131 -f 235/367/131 238/377/131 237/368/131 -f 229/370/108 238/377/108 235/367/108 -f 228/372/133 235/367/133 236/369/133 -f 225/374/108 234/354/108 231/366/108 -f 229/376/130 230/686/130 237/368/130 -f 223/378/133 224/687/133 231/366/133 -f 230/379/106 227/688/106 236/369/106 -f 186/380/106 240/277/106 239/311/106 -f 184/382/108 198/390/108 242/282/108 -f 209/383/106 243/391/106 244/384/106 -f 211/386/108 245/389/108 246/387/108 -f 186/380/106 210/385/106 244/384/106 -f 184/382/108 241/309/108 245/389/108 -f 198/390/108 212/388/108 246/387/108 -f 196/381/106 239/311/106 243/391/106 -f 248/392/108 247/332/108 249/393/108 -f 211/395/120 212/689/120 250/394/120 -f 184/396/109 247/332/109 248/392/109 -f 198/398/134 248/392/134 250/394/134 -f 251/400/106 253/402/106 254/336/106 -f 210/401/120 254/336/120 253/402/120 -f 196/404/109 251/400/109 252/335/109 -f 196/406/134 209/690/134 253/402/134 -f 279/407/106 281/691/106 282/408/106 -f 283/410/135 285/420/135 286/411/135 -f 285/413/136 289/692/136 290/414/136 -f 287/415/137 288/418/137 290/414/137 -f 283/417/138 284/412/138 288/418/138 -f 285/420/120 283/410/120 287/421/120 -f 288/418/109 284/412/109 286/411/109 -f 293/693/139 291/694/139 305/425/139 -f 305/425/139 303/695/139 301/423/139 -f 301/423/139 299/696/139 297/424/139 -f 297/424/139 295/697/139 293/693/139 -f 293/693/139 305/425/139 297/424/139 -f 312/426/108 313/698/108 314/427/108 -f 311/429/140 314/435/140 282/430/140 -f 313/432/178 312/436/178 279/433/178 -f 314/435/142 313/432/142 280/434/142 -f 312/436/179 311/429/179 281/431/179 -f 341/437/144 342/699/144 340/438/144 -f 345/440/145 346/445/145 344/441/145 -f 345/443/146 349/700/146 350/444/146 -f 347/446/147 348/449/147 350/444/147 -f 343/448/148 344/441/148 348/449/148 -f 345/440/109 343/442/109 347/451/109 -f 348/449/120 344/441/120 346/445/120 -f 353/701/149 351/702/149 365/455/149 -f 365/455/149 363/703/149 361/453/149 -f 361/453/149 359/704/149 357/454/149 -f 357/454/149 355/705/149 353/701/149 -f 353/701/149 365/455/149 357/454/149 -f 372/456/150 373/706/150 374/457/150 -f 371/459/151 374/465/151 342/460/151 -f 373/462/152 372/466/152 339/463/152 -f 374/465/180 373/462/180 340/464/180 -f 372/466/181 371/459/181 341/461/181 -f 376/467/155 378/470/155 377/468/155 -f 378/470/156 382/707/156 381/471/156 -f 382/472/120 380/483/120 386/473/120 -f 379/475/157 380/483/157 376/467/157 -f 378/476/155 376/708/155 391/477/155 -f 386/473/157 385/484/157 389/479/157 -f 382/472/156 383/474/156 384/481/156 -f 380/483/157 379/475/157 385/484/157 -f 388/485/158 387/709/158 390/480/158 -f 382/486/158 393/491/158 394/487/158 -f 383/489/156 387/709/156 388/485/156 -f 393/491/120 392/478/120 391/477/120 -f 396/492/120 398/496/120 397/493/120 -f 387/495/158 397/493/158 398/496/158 -f 380/498/157 394/487/157 391/477/157 -f 387/500/156 383/710/156 395/494/156 -f 382/501/156 378/711/156 392/478/156 -f 390/502/157 398/496/157 396/492/157 -f 386/504/155 396/492/155 395/494/155 -f 399/506/159 401/510/159 402/507/159 -f 405/509/160 406/712/160 402/507/160 -f 406/511/120 407/713/120 410/512/120 -f 399/506/161 400/508/161 404/513/161 -f 416/515/159 415/714/159 400/516/159 -f 410/512/161 414/715/161 413/518/161 -f 408/520/160 407/713/160 406/511/160 -f 410/512/161 409/519/161 403/514/161 -f 413/518/162 414/715/162 411/522/162 -f 418/524/162 417/529/162 406/525/162 -f 412/523/160 411/522/160 407/527/160 -f 418/524/120 415/714/120 416/515/120 -f 419/530/120 421/534/120 422/531/120 -f 414/533/162 422/531/162 421/534/162 -f 400/536/161 415/714/161 418/524/161 -f 421/534/160 419/530/160 407/538/160 -f 417/529/160 416/515/160 402/540/160 -f 420/532/161 422/531/161 414/542/161 -f 419/530/159 420/532/159 410/544/159 -f 424/546/163 426/549/163 425/547/163 -f 426/549/164 430/716/164 429/550/164 -f 430/551/120 428/562/120 434/552/120 -f 427/554/165 428/562/165 424/546/165 -f 426/555/163 424/717/163 439/556/163 -f 434/552/165 433/563/165 437/558/165 -f 430/551/164 431/553/164 432/560/164 -f 428/562/165 427/554/165 433/563/165 -f 436/564/166 435/718/166 438/559/166 -f 430/565/166 441/570/166 442/566/166 -f 431/568/164 435/718/164 436/564/164 -f 441/570/120 440/557/120 439/556/120 -f 443/571/120 444/580/120 446/572/120 -f 438/574/166 435/719/166 445/573/166 -f 428/575/165 442/566/165 439/556/165 -f 435/577/164 431/720/164 443/571/164 -f 430/578/164 426/721/164 440/557/164 -f 438/579/165 446/572/165 444/580/165 -f 434/582/163 444/580/163 443/571/163 -f 447/584/167 449/588/167 450/585/167 -f 453/587/168 454/722/168 450/585/168 -f 455/589/169 458/596/169 452/590/169 -f 451/592/170 447/584/170 448/586/170 -f 450/593/167 464/608/167 463/594/167 -f 458/596/170 462/723/170 461/597/170 -f 456/599/168 455/589/168 454/591/168 -f 452/590/170 458/596/170 457/598/170 -f 461/597/171 462/723/171 459/601/171 -f 466/603/171 465/609/171 454/604/171 -f 456/606/168 460/602/168 459/601/168 -f 466/603/169 463/594/169 464/608/169 -f 469/610/169 470/613/169 468/611/169 -f 470/613/171 469/610/171 459/614/171 -f 463/594/170 466/603/170 452/616/170 -f 459/618/168 469/610/168 467/612/168 -f 454/620/168 465/609/168 464/608/168 -f 468/611/170 470/613/170 462/622/170 -f 467/612/167 468/611/167 458/624/167 -f 453/587/172 449/588/172 447/584/172 -f 451/592/172 457/598/172 456/599/172 -f 453/587/172 447/584/172 451/592/172 -f 460/602/172 456/599/172 457/598/172 -f 457/598/172 461/597/172 460/602/172 -f 472/626/173 474/629/173 473/627/173 -f 474/629/174 478/724/174 477/630/174 -f 476/631/175 482/640/175 479/632/175 -f 476/631/176 472/626/176 471/628/176 -f 472/635/173 487/657/173 488/636/173 -f 481/638/176 485/644/176 486/639/176 -f 478/633/174 479/632/174 480/641/174 -f 475/634/176 481/638/176 482/640/176 -f 484/643/177 483/725/177 486/639/177 -f 476/645/177 478/726/177 489/646/177 -f 479/648/174 483/725/174 484/643/174 -f 488/636/175 487/657/175 490/647/175 -f 492/650/175 494/654/175 493/651/175 -f 483/653/177 493/651/177 494/654/177 -f 476/656/176 490/647/176 487/657/176 -f 479/659/174 491/652/174 493/651/174 -f 474/661/174 488/636/174 489/646/174 -f 486/663/176 494/654/176 492/650/176 -f 482/665/173 492/650/173 491/652/173 +f 202/282/119 203/283/119 204/284/119 +f 203/285/120 205/286/120 206/287/120 +f 206/288/121 207/289/121 208/290/121 +f 207/289/122 204/291/122 208/292/122 +f 209/293/123 207/289/123 205/286/123 +f 210/294/124 211/295/124 212/296/124 +f 211/297/120 213/298/120 214/299/120 +f 213/298/125 215/300/125 214/301/125 +f 216/302/122 212/303/122 215/304/122 +f 217/305/126 216/302/126 213/298/126 +f 218/306/127 219/307/127 220/308/127 +f 219/307/120 221/309/120 222/310/120 +f 223/311/122 220/308/122 224/312/122 +f 222/313/128 220/308/128 219/307/128 +f 225/314/129 223/315/129 221/316/129 +f 226/317/127 227/318/127 228/319/127 +f 227/318/120 229/320/120 230/321/120 +f 231/322/122 228/323/122 232/324/122 +f 227/318/128 232/325/128 228/326/128 +f 233/327/129 231/322/129 229/320/129 +f 230/321/130 231/328/130 232/329/130 +f 234/330/127 235/331/127 236/332/127 +f 236/332/120 237/333/120 238/334/120 +f 239/335/122 234/330/122 240/336/122 +f 238/334/128 234/330/128 236/332/128 +f 237/337/130 240/336/130 238/334/130 +f 241/338/126 242/339/126 243/340/126 +f 242/339/120 244/341/120 245/342/120 +f 244/341/131 246/343/131 245/342/131 +f 247/344/122 243/340/122 246/345/122 +f 245/342/124 243/346/124 242/339/124 +f 247/347/125 248/348/125 241/349/125 +f 249/350/119 250/351/119 251/352/119 +f 252/353/120 253/354/120 254/355/120 +f 253/356/123 255/357/123 256/358/123 +f 257/359/122 251/360/122 258/361/122 +f 259/362/123 257/363/123 260/364/123 +f 261/365/122 262/366/122 263/367/122 +f 264/368/122 251/360/122 262/366/122 +f 265/369/132 266/370/132 267/371/132 +f 268/372/120 265/369/120 267/371/120 +f 263/373/119 269/374/119 270/375/119 +f 251/352/119 269/374/119 262/376/119 +f 250/377/120 271/378/120 269/379/120 +f 269/379/120 268/372/120 270/380/120 +f 272/381/122 261/365/122 273/382/122 +f 253/356/133 274/383/133 275/384/133 +f 268/385/134 263/373/134 270/375/134 +f 275/386/122 258/361/122 276/387/122 +f 250/377/120 260/388/120 252/353/120 +f 272/381/135 266/389/135 277/390/135 +f 265/391/136 272/392/136 277/393/136 +f 273/394/137 267/395/137 266/396/137 +f 278/397/138 279/398/138 280/399/138 +f 276/387/139 255/400/139 275/386/139 +f 254/355/140 256/401/140 278/402/140 +f 254/403/134 280/399/134 276/404/134 +f 281/405/123 274/406/123 282/407/123 +f 283/408/141 284/409/141 285/410/141 +f 286/411/141 287/412/141 288/413/141 +f 257/363/142 281/405/142 260/364/142 +f 289/414/121 290/415/121 291/416/121 +f 256/401/120 291/417/120 278/402/120 +f 255/400/122 279/418/122 292/419/122 +f 293/420/120 294/421/120 295/422/120 +f 296/423/123 297/424/123 298/425/123 +f 292/419/122 296/426/122 255/400/122 +f 256/358/143 296/423/143 298/425/143 +f 289/427/120 298/428/120 299/429/120 +f 300/430/144 295/422/144 301/431/144 +f 290/415/145 302/432/145 303/433/145 +f 299/434/146 302/432/146 289/414/146 +f 299/434/146 293/435/146 300/436/146 +f 297/424/146 303/433/146 293/435/146 +f 290/415/145 304/437/145 292/438/145 +f 297/424/146 305/439/146 290/415/146 +f 306/440/146 307/441/146 297/424/146 +f 306/440/146 304/437/146 308/442/146 +f 309/443/146 295/422/146 294/421/146 +f 310/444/146 311/445/146 312/446/146 +f 307/447/122 310/444/122 305/448/122 +f 305/449/147 312/446/147 304/450/147 +f 300/451/122 309/443/122 302/452/122 +f 307/453/144 311/445/144 313/454/144 +f 303/455/147 309/443/147 294/421/147 +f 308/456/120 312/446/120 311/445/120 +f 314/457/120 260/388/120 315/458/120 +f 285/459/122 257/359/122 275/386/122 +f 316/460/120 282/461/120 286/462/120 +f 283/463/122 317/464/122 318/465/122 +f 314/457/120 282/461/120 253/354/120 +f 285/459/122 274/466/122 283/463/122 +f 319/467/122 317/464/122 257/359/122 +f 315/458/120 281/468/120 316/460/120 +f 320/469/122 321/470/122 322/471/122 +f 283/472/134 322/471/134 321/470/134 +f 285/473/123 320/469/123 319/474/123 +f 319/475/148 322/471/148 318/476/148 +f 323/477/120 288/413/120 287/412/120 +f 286/478/134 324/479/134 316/480/134 +f 315/481/123 287/412/123 314/482/123 +f 315/483/148 324/479/148 323/477/148 +f 325/484/120 326/485/120 327/486/120 +f 328/487/149 329/488/149 330/489/149 +f 331/490/150 332/491/150 329/488/150 +f 333/492/151 332/491/151 334/493/151 +f 328/494/152 335/495/152 333/496/152 +f 331/497/134 333/498/134 334/499/134 +f 335/495/123 329/488/123 332/491/123 +f 336/500/153 337/501/153 338/502/153 +f 339/503/122 340/504/122 341/505/122 +f 341/506/154 326/507/154 342/508/154 +f 343/509/155 325/510/155 327/511/155 +f 340/512/156 327/511/156 326/507/156 +f 339/513/157 342/508/157 325/510/157 +f 344/514/158 346/515/158 345/516/158 +f 347/517/159 349/518/159 348/519/159 +f 347/520/160 351/521/160 350/522/160 +f 352/523/161 353/524/161 350/522/161 +f 349/525/162 352/526/162 354/527/162 +f 347/517/134 353/528/134 352/529/134 +f 354/527/123 350/522/123 351/521/123 +f 355/530/163 357/531/163 356/532/163 +f 358/533/164 360/534/164 359/535/164 +f 360/536/165 344/537/165 361/538/165 +f 362/539/166 345/540/166 346/541/166 +f 359/542/167 361/538/167 345/540/167 +f 358/543/168 346/541/168 344/537/168 +f 363/544/169 364/545/169 365/546/169 +f 366/547/170 367/548/170 364/545/170 +f 368/549/134 369/550/134 370/551/134 +f 371/552/171 363/544/171 365/546/171 +f 366/553/169 372/554/169 373/555/169 +f 369/550/171 374/556/171 375/557/171 +f 368/549/170 376/558/170 367/559/170 +f 377/560/171 378/561/171 369/550/171 +f 379/562/172 375/557/172 374/556/172 +f 368/563/172 380/564/172 377/565/172 +f 370/566/170 379/562/170 376/567/170 +f 381/568/134 372/554/134 380/564/134 +f 382/569/134 383/570/134 384/571/134 +f 385/572/172 386/573/172 375/574/172 +f 377/575/171 372/554/171 363/576/171 +f 385/577/170 384/571/170 383/570/170 +f 368/578/170 373/555/170 381/568/170 +f 375/579/171 382/569/171 369/580/171 +f 369/581/169 384/571/169 370/582/169 +f 387/583/173 388/584/173 389/585/173 +f 390/586/174 388/584/174 391/587/174 +f 392/588/134 393/589/134 394/590/134 +f 387/583/175 394/590/175 395/591/175 +f 396/592/173 389/593/173 388/594/173 +f 393/589/175 397/595/175 398/596/175 +f 399/597/174 392/588/174 390/598/174 +f 393/589/175 395/591/175 394/590/175 +f 397/595/176 400/599/176 401/600/176 +f 402/601/176 392/602/176 394/603/176 +f 401/600/174 403/604/174 399/605/174 +f 402/601/134 396/592/134 404/606/134 +f 405/607/134 406/608/134 407/609/134 +f 408/610/176 409/611/176 400/612/176 +f 389/613/175 402/601/175 394/614/175 +f 409/611/174 403/615/174 400/616/174 +f 404/606/174 388/617/174 392/618/174 +f 407/609/175 408/619/175 393/620/175 +f 405/607/173 393/621/173 403/622/173 +f 410/623/177 411/624/177 412/625/177 +f 413/626/178 414/627/178 411/624/178 +f 415/628/134 416/629/134 417/630/134 +f 418/631/179 410/623/179 412/625/179 +f 413/632/177 419/633/177 420/634/177 +f 416/629/179 421/635/179 422/636/179 +f 415/628/178 423/637/178 414/638/178 +f 424/639/179 425/640/179 416/629/179 +f 426/641/180 422/636/180 421/635/180 +f 415/642/180 427/643/180 424/644/180 +f 417/645/178 426/641/178 423/646/178 +f 428/647/134 419/633/134 427/643/134 +f 429/648/134 430/649/134 431/650/134 +f 422/651/180 431/650/180 430/649/180 +f 424/652/179 419/633/179 410/653/179 +f 432/654/178 429/648/178 431/650/178 +f 415/655/178 420/634/178 428/647/178 +f 422/656/179 433/657/179 416/658/179 +f 416/659/177 429/648/177 417/660/177 +f 434/661/181 435/662/181 436/663/181 +f 437/664/182 435/662/182 438/665/182 +f 439/666/183 440/667/183 441/668/183 +f 442/669/184 436/663/184 440/667/184 +f 435/670/181 443/671/181 436/672/181 +f 444/673/184 445/674/184 446/675/184 +f 447/676/182 441/668/182 437/677/182 +f 440/667/184 446/675/184 442/669/184 +f 445/674/185 448/678/185 449/679/185 +f 450/680/185 441/681/185 440/682/185 +f 447/683/182 448/678/182 439/684/182 +f 450/680/183 451/685/183 452/686/183 +f 453/687/183 454/688/183 455/689/183 +f 456/690/185 448/691/185 457/692/185 +f 443/671/184 440/693/184 436/694/184 +f 448/695/182 455/689/182 439/696/182 +f 441/697/182 451/685/182 435/698/182 +f 454/688/184 457/699/184 444/700/184 +f 455/689/181 444/701/181 439/702/181 +f 442/669/186 447/676/186 437/664/186 +f 458/703/187 459/704/187 460/705/187 +f 461/706/188 462/707/188 459/704/188 +f 463/708/189 464/709/189 465/710/189 +f 463/708/190 460/705/190 466/711/190 +f 458/712/187 467/713/187 461/714/187 +f 468/715/190 469/716/190 470/717/190 +f 465/710/188 471/718/188 462/719/188 +f 466/711/190 470/717/190 463/708/190 +f 472/720/191 469/716/191 473/721/191 +f 463/722/191 474/723/191 475/724/191 +f 464/725/188 472/720/188 471/726/188 +f 467/713/189 475/724/189 474/723/189 +f 476/727/189 477/728/189 478/729/189 +f 479/730/191 480/731/191 469/732/191 +f 463/733/190 481/734/190 458/735/190 +f 464/736/188 477/728/188 479/737/188 +f 461/738/188 474/723/188 465/739/188 +f 469/740/190 476/727/190 470/741/190 +f 470/742/187 478/729/187 464/743/187 +f 202/282/119 209/293/119 203/283/119 +f 203/285/120 209/293/120 205/286/120 +f 206/288/121 205/286/121 207/289/121 +f 207/289/122 202/282/122 204/291/122 +f 209/293/123 202/282/123 207/289/123 +f 210/294/124 217/305/124 211/295/124 +f 211/297/120 217/305/120 213/298/120 +f 213/298/125 216/302/125 215/300/125 +f 216/302/122 210/294/122 212/303/122 +f 217/305/126 210/294/126 216/302/126 +f 218/306/127 225/314/127 219/307/127 +f 219/307/120 225/314/120 221/309/120 +f 223/311/122 218/306/122 220/308/122 +f 222/313/128 224/744/128 220/308/128 +f 225/314/129 218/306/129 223/315/129 +f 226/317/127 233/327/127 227/318/127 +f 227/318/120 233/327/120 229/320/120 +f 231/322/122 226/745/122 228/323/122 +f 227/318/128 230/321/128 232/325/128 +f 233/327/129 226/745/129 231/322/129 +f 230/321/130 229/320/130 231/328/130 +f 234/330/127 482/746/127 235/331/127 +f 236/332/120 235/747/120 237/333/120 +f 239/335/122 482/748/122 234/330/122 +f 238/334/128 240/336/128 234/330/128 +f 237/337/130 239/749/130 240/336/130 +f 241/338/126 248/348/126 242/339/126 +f 242/339/120 248/348/120 244/341/120 +f 244/341/131 247/750/131 246/343/131 +f 247/344/122 241/338/122 243/340/122 +f 245/342/124 246/751/124 243/346/124 +f 247/347/125 244/341/125 248/348/125 +f 249/350/119 259/362/119 250/351/119 +f 252/353/120 260/388/120 253/354/120 +f 253/356/123 275/384/123 255/357/123 +f 257/359/122 249/752/122 251/360/122 +f 259/362/123 249/350/123 257/363/123 +f 261/365/122 264/368/122 262/366/122 +f 264/368/122 258/361/122 251/360/122 +f 265/369/132 277/753/132 266/370/132 +f 268/372/120 271/378/120 265/369/120 +f 263/373/119 262/376/119 269/374/119 +f 251/352/119 250/351/119 269/374/119 +f 250/377/120 252/353/120 271/378/120 +f 269/379/120 271/378/120 268/372/120 +f 272/381/122 264/368/122 261/365/122 +f 253/356/133 282/754/133 274/383/133 +f 268/385/134 261/755/134 263/373/134 +f 275/386/122 257/359/122 258/361/122 +f 250/377/120 259/756/120 260/388/120 +f 272/381/135 273/382/135 266/389/135 +f 278/397/138 291/416/138 279/398/138 +f 276/387/139 280/757/139 255/400/139 +f 254/355/140 253/354/140 256/401/140 +f 254/403/134 278/397/134 280/399/134 +f 281/405/123 317/758/123 274/406/123 +f 283/408/141 321/470/141 284/409/141 +f 286/411/141 314/759/141 287/412/141 +f 257/363/142 317/758/142 281/405/142 +f 279/398/121 291/416/121 290/415/121 +f 290/415/121 292/438/121 279/398/121 +f 256/401/120 289/427/120 291/417/120 +f 255/400/122 280/757/122 279/418/122 +f 293/420/120 303/760/120 294/421/120 +f 299/434/123 298/425/123 297/424/123 +f 296/423/123 306/440/123 297/424/123 +f 292/419/122 306/761/122 296/426/122 +f 256/358/143 255/357/143 296/423/143 +f 289/427/120 256/401/120 298/428/120 +f 300/430/144 293/762/144 295/422/144 +f 290/415/146 289/414/146 302/432/146 +f 299/434/146 300/436/146 302/432/146 +f 299/434/146 297/424/146 293/435/146 +f 297/424/146 290/415/146 303/433/146 +f 290/415/146 305/439/146 304/437/146 +f 297/424/146 307/441/146 305/439/146 +f 306/440/146 308/442/146 307/441/146 +f 306/440/146 292/438/146 304/437/146 +f 309/443/146 301/431/146 295/422/146 +f 310/444/146 313/454/146 311/445/146 +f 307/447/122 313/454/122 310/444/122 +f 305/449/147 310/444/147 312/446/147 +f 300/451/122 301/431/122 309/443/122 +f 307/453/144 308/763/144 311/445/144 +f 303/455/147 302/764/147 309/443/147 +f 308/456/120 304/765/120 312/446/120 +f 314/457/120 253/354/120 260/388/120 +f 285/459/122 319/467/122 257/359/122 +f 316/460/120 281/468/120 282/461/120 +f 283/463/122 274/466/122 317/464/122 +f 314/457/120 286/462/120 282/461/120 +f 285/459/122 275/386/122 274/466/122 +f 319/467/122 318/465/122 317/464/122 +f 315/458/120 260/388/120 281/468/120 +f 320/469/122 284/409/122 321/470/122 +f 283/472/134 318/766/134 322/471/134 +f 285/473/123 284/409/123 320/469/123 +f 319/475/148 320/469/148 322/471/148 +f 323/477/120 324/479/120 288/413/120 +f 286/478/134 288/413/134 324/479/134 +f 315/481/123 323/477/123 287/412/123 +f 315/483/148 316/767/148 324/479/148 +f 325/484/120 342/768/120 326/485/120 +f 328/487/149 331/497/149 329/488/149 +f 331/490/150 334/769/150 332/491/150 +f 333/492/151 335/495/151 332/491/151 +f 328/494/152 330/489/152 335/495/152 +f 331/497/134 328/487/134 333/498/134 +f 335/495/123 330/489/123 329/488/123 +f 483/770/153 484/771/153 338/502/153 +f 338/502/153 485/772/153 336/500/153 +f 336/500/153 486/773/153 337/501/153 +f 337/501/153 487/774/153 483/770/153 +f 483/770/153 338/502/153 337/501/153 +f 339/503/122 343/775/122 340/504/122 +f 341/506/154 340/512/154 326/507/154 +f 343/509/192 339/513/192 325/510/192 +f 340/512/156 343/509/156 327/511/156 +f 339/513/157 341/506/157 342/508/157 +f 344/514/158 345/516/158 361/776/158 +f 347/517/159 348/519/159 351/521/159 +f 347/520/160 350/522/160 353/777/160 +f 352/523/161 350/522/161 354/527/161 +f 349/525/162 354/527/162 348/519/162 +f 347/517/134 352/529/134 349/518/134 +f 354/527/123 351/521/123 348/519/123 +f 488/778/163 357/531/163 489/779/163 +f 357/531/163 355/530/163 490/780/163 +f 355/530/163 356/532/163 491/781/163 +f 356/532/163 488/778/163 492/782/163 +f 488/778/163 356/532/163 357/531/163 +f 358/533/164 359/535/164 362/783/164 +f 360/536/165 361/538/165 359/542/165 +f 362/539/166 346/541/166 358/543/166 +f 359/542/167 345/540/167 362/539/167 +f 358/543/193 344/537/193 360/536/193 +f 363/544/169 366/547/169 364/545/169 +f 366/547/170 368/784/170 367/548/170 +f 368/549/134 377/560/134 369/550/134 +f 371/552/171 377/560/171 363/544/171 +f 366/553/169 363/785/169 372/554/169 +f 369/550/171 378/561/171 374/556/171 +f 368/549/170 370/551/170 376/558/170 +f 377/560/171 371/552/171 378/561/171 +f 379/562/172 385/786/172 375/557/172 +f 368/563/172 381/568/172 380/564/172 +f 370/566/170 385/786/170 379/562/170 +f 381/568/134 373/555/134 372/554/134 +f 382/569/134 386/573/134 383/570/134 +f 385/572/172 383/570/172 386/573/172 +f 377/575/171 380/564/171 372/554/171 +f 385/577/170 370/787/170 384/571/170 +f 368/578/170 366/788/170 373/555/170 +f 375/579/171 386/573/171 382/569/171 +f 369/581/169 382/569/169 384/571/169 +f 387/583/173 391/587/173 388/584/173 +f 390/586/174 392/789/174 388/584/174 +f 392/588/134 403/790/134 393/589/134 +f 387/583/175 389/585/175 394/590/175 +f 396/592/173 493/791/173 389/593/173 +f 393/589/175 408/792/175 397/595/175 +f 399/597/174 403/790/174 392/588/174 +f 393/589/175 398/596/175 395/591/175 +f 397/595/176 408/792/176 400/599/176 +f 402/601/176 404/606/176 392/602/176 +f 401/600/174 400/599/174 403/604/174 +f 402/601/134 493/791/134 396/592/134 +f 405/607/134 409/611/134 406/608/134 +f 408/610/176 406/608/176 409/611/176 +f 389/613/175 493/791/175 402/601/175 +f 409/611/174 405/607/174 403/615/174 +f 404/606/174 396/592/174 388/617/174 +f 407/609/175 406/608/175 408/619/175 +f 405/607/173 407/609/173 393/621/173 +f 410/623/177 413/626/177 411/624/177 +f 413/626/178 415/793/178 414/627/178 +f 415/628/134 424/639/134 416/629/134 +f 418/631/179 424/639/179 410/623/179 +f 413/632/177 410/794/177 419/633/177 +f 416/629/179 425/640/179 421/635/179 +f 415/628/178 417/630/178 423/637/178 +f 424/639/179 418/631/179 425/640/179 +f 426/641/180 432/795/180 422/636/180 +f 415/642/180 428/647/180 427/643/180 +f 417/645/178 432/795/178 426/641/178 +f 428/647/134 420/634/134 419/633/134 +f 429/648/134 433/657/134 430/649/134 +f 422/651/180 432/796/180 431/650/180 +f 424/652/179 427/643/179 419/633/179 +f 432/654/178 417/797/178 429/648/178 +f 415/655/178 413/798/178 420/634/178 +f 422/656/179 430/649/179 433/657/179 +f 416/659/177 433/657/177 429/648/177 +f 434/661/181 438/665/181 435/662/181 +f 437/664/182 441/799/182 435/662/182 +f 439/666/183 444/673/183 440/667/183 +f 442/669/184 434/661/184 436/663/184 +f 435/670/181 451/685/181 443/671/181 +f 444/673/184 457/800/184 445/674/184 +f 447/676/182 439/666/182 441/668/182 +f 440/667/184 444/673/184 446/675/184 +f 445/674/185 457/800/185 448/678/185 +f 450/680/185 452/686/185 441/681/185 +f 447/683/182 449/679/182 448/678/182 +f 450/680/183 443/671/183 451/685/183 +f 453/687/183 456/690/183 454/688/183 +f 456/690/185 453/687/185 448/691/185 +f 443/671/184 450/680/184 440/693/184 +f 448/695/182 453/687/182 455/689/182 +f 441/697/182 452/686/182 451/685/182 +f 454/688/184 456/690/184 457/699/184 +f 455/689/181 454/688/181 444/701/181 +f 437/664/186 438/665/186 434/661/186 +f 442/669/186 446/675/186 447/676/186 +f 437/664/186 434/661/186 442/669/186 +f 449/679/186 447/676/186 446/675/186 +f 446/675/186 445/674/186 449/679/186 +f 458/703/187 461/706/187 459/704/187 +f 461/706/188 465/801/188 462/707/188 +f 463/708/189 470/717/189 464/709/189 +f 463/708/190 458/703/190 460/705/190 +f 458/712/187 481/734/187 467/713/187 +f 468/715/190 473/721/190 469/716/190 +f 465/710/188 464/709/188 471/718/188 +f 466/711/190 468/715/190 470/717/190 +f 472/720/191 479/802/191 469/716/191 +f 463/722/191 465/803/191 474/723/191 +f 464/725/188 479/802/188 472/720/188 +f 467/713/189 481/734/189 475/724/189 +f 476/727/189 480/731/189 477/728/189 +f 479/730/191 477/728/191 480/731/191 +f 463/733/190 475/724/190 481/734/190 +f 464/736/188 478/729/188 477/728/188 +f 461/738/188 467/713/188 474/723/188 +f 469/740/190 480/731/190 476/727/190 +f 470/742/187 476/727/187 478/729/187 s 1 -f 291/727/182 294/728/183 292/729/184 -f 293/730/185 296/731/186 294/728/183 -f 297/732/187 296/731/186 295/733/188 -f 299/734/189 298/735/190 297/732/187 -f 301/736/191 300/737/192 299/734/189 -f 303/738/193 302/739/194 301/736/191 -f 303/740/193 306/741/195 304/742/196 -f 305/743/197 292/729/184 306/741/195 -f 351/744/198 354/745/199 352/746/200 -f 353/747/201 356/748/202 354/745/199 -f 357/749/203 356/748/202 355/750/204 -f 359/751/205 358/752/206 357/749/203 -f 361/753/207 360/754/208 359/751/205 -f 363/755/209 362/756/210 361/753/207 -f 363/757/209 366/758/211 364/759/212 -f 365/760/213 352/746/200 366/758/211 -f 291/727/182 293/730/185 294/728/183 -f 293/730/185 295/733/188 296/731/186 -f 297/732/187 298/735/190 296/731/186 -f 299/734/189 300/737/192 298/735/190 -f 301/736/191 302/739/194 300/737/192 -f 303/738/193 304/761/196 302/739/194 -f 303/740/193 305/743/197 306/741/195 -f 305/743/197 291/727/182 292/729/184 -f 351/744/198 353/747/201 354/745/199 -f 353/747/201 355/750/204 356/748/202 -f 357/749/203 358/752/206 356/748/202 -f 359/751/205 360/754/208 358/752/206 -f 361/753/207 362/756/210 360/754/208 -f 363/755/209 364/762/212 362/756/210 -f 363/757/209 365/760/213 366/758/211 -f 365/760/213 351/744/198 352/746/200 -o LeftFoot -v -0.145070 24.067028 2.136320 -v 4.121621 24.067026 2.136320 -v -0.145070 24.067028 -2.130370 -v -0.145070 22.765120 -2.130370 -v 4.121621 24.067026 -2.130370 -v 4.121620 22.765116 -2.130370 -v 1.988274 21.575682 -3.487657 -v 1.988275 24.067026 -3.487657 -vt 0.144578 0.823529 -vt 0.180723 0.941176 -vt 0.144578 0.941176 -vt 0.048193 0.941176 -vt 0.144578 0.941176 -vt 0.096386 0.970588 -vt 0.048193 0.941176 -vt 0.012048 0.941176 -vt 0.048193 0.823529 -vt 0.144578 1.000000 -vt 0.048193 1.000000 -vt 0.000000 1.000000 -vt 0.096386 0.970588 -vt 0.192771 1.000000 -vn 1.0000 -0.0000 0.0000 -vn -0.0000 -0.7521 0.6591 -vn -1.0000 0.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.5368 0.0000 -0.8437 -vn -0.5368 0.0000 -0.8437 -usemtl None -s off -f 496/763/214 500/764/214 499/765/214 -f 500/766/215 498/767/215 501/768/215 -f 497/769/216 498/770/216 495/771/216 -f 499/765/217 495/771/217 496/763/217 -f 500/764/218 502/772/218 499/765/218 -f 498/770/219 502/773/219 501/774/219 -f 497/769/217 499/765/217 502/775/217 -f 499/765/217 497/769/217 495/771/217 -f 500/764/218 501/776/218 502/772/218 -f 498/770/219 497/769/219 502/773/219 -o LeftLeg -v 1.889860 19.857271 -1.987077 -v 1.889860 19.673222 -2.313624 -v 1.889860 19.480209 -1.987078 -v 2.778606 19.489141 -1.987077 -v 2.648463 19.358999 -2.313624 -v 2.511982 19.222517 -1.987077 -v 3.146736 18.600395 -1.987078 -v 2.962687 18.600395 -2.313624 -v 2.769673 18.600395 -1.987078 -v 2.778605 17.711649 -1.987078 -v 2.648463 17.841791 -2.313624 -v 2.511982 17.978273 -1.987078 -v 1.889860 17.343519 -1.987078 -v 1.889860 17.527569 -2.313624 -v 1.889860 17.720581 -1.987078 -v 1.001114 17.711649 -1.987078 -v 1.131257 17.841791 -2.313624 -v 1.267738 17.978273 -1.987078 -v 0.632984 18.600395 -1.987078 -v 0.817033 18.600395 -2.313624 -v 1.010046 18.600395 -1.987078 -v 1.001114 19.489140 -1.987078 -v 1.131256 19.358997 -2.313624 -v 1.267738 19.222517 -1.987078 -v -0.033751 18.711559 2.026670 -v -0.033751 18.475336 2.026670 -v 4.013639 18.711559 2.026670 -v 4.013639 18.475336 2.026670 -v -0.033751 18.998186 -2.020720 -v -0.033751 18.188709 -2.020720 -v 4.013639 18.998186 -2.020720 -v 4.013639 18.188707 -2.020720 -v 0.900512 18.998186 -2.020720 -v 2.857196 18.188707 -2.020720 -v 0.900512 18.188709 -2.020720 -v 2.857196 18.998186 -2.020720 +f 484/804/194 494/805/195 495/806/196 +f 483/807/197 496/808/198 494/805/195 +f 337/809/199 496/808/198 487/810/200 +f 486/811/201 497/812/202 337/809/199 +f 336/813/203 498/814/204 486/811/201 +f 485/815/205 499/816/206 336/813/203 +f 485/817/205 500/818/207 501/819/208 +f 338/820/209 495/806/196 500/818/207 +f 489/821/210 503/822/211 502/823/212 +f 488/824/213 502/823/212 504/825/214 +f 356/826/215 492/827/216 504/825/214 +f 491/828/217 356/826/215 505/829/218 +f 355/830/219 491/828/217 506/831/220 +f 490/832/221 355/830/219 507/833/222 +f 490/834/221 509/835/223 508/836/224 +f 357/837/225 508/836/224 503/822/211 +f 484/804/194 483/807/197 494/805/195 +f 483/807/197 487/810/200 496/808/198 +f 337/809/199 497/812/202 496/808/198 +f 486/811/201 498/814/204 497/812/202 +f 336/813/203 499/816/206 498/814/204 +f 485/815/205 501/838/208 499/816/206 +f 485/817/205 338/820/209 500/818/207 +f 338/820/209 484/804/194 495/806/196 +f 489/821/210 502/823/212 488/824/213 +f 488/824/213 504/825/214 492/827/216 +f 356/826/215 504/825/214 505/829/218 +f 491/828/217 505/829/218 506/831/220 +f 355/830/219 506/831/220 507/833/222 +f 490/832/221 507/833/222 509/839/223 +f 490/834/221 508/836/224 357/837/225 +f 357/837/225 503/822/211 489/821/210 +o RightLeg +v -1.221394 19.489141 -1.987076 +v -2.110140 19.673222 -2.313622 +v -2.110140 19.857271 -1.987076 +v -1.351537 19.358999 -2.313622 +v -2.110140 19.480209 -1.987076 +v -0.853264 18.600395 -1.987076 +v -1.037313 18.600395 -2.313622 +v -1.488018 19.222517 -1.987076 +v -1.221395 17.711649 -1.987076 +v -1.351537 17.841791 -2.313622 +v -1.230327 18.600395 -1.987076 +v -2.110140 17.527569 -2.313622 +v -1.488018 17.978273 -1.987076 +v -2.998886 17.711649 -1.987076 +v -2.110140 17.343519 -1.987076 +v -2.868743 17.841791 -2.313622 +v -2.110140 17.720581 -1.987076 +v -3.367016 18.600395 -1.987076 +v -3.182967 18.600395 -2.313622 +v -2.732262 17.978273 -1.987076 +v -2.868744 19.358997 -2.313622 +v -2.989954 18.600395 -1.987076 +v -2.998886 19.489140 -1.987076 +v -2.732262 19.222517 -1.987076 +v -4.033751 18.475336 2.026671 +v 0.013640 18.711559 2.026671 +v -4.033751 18.711559 2.026671 +v 0.013640 18.475336 2.026671 +v 0.013639 18.998186 -2.020719 +v -3.099488 18.188709 -2.020719 +v -4.033751 18.998186 -2.020719 +v -3.099488 18.998186 -2.020719 +v -4.033751 18.188709 -2.020719 +v 0.013639 18.188707 -2.020719 +v -1.142804 18.998186 -2.020719 +v -1.142804 18.188707 -2.020719 vt 0.144578 0.794118 vt 0.192771 0.764706 vt 0.192771 0.794118 @@ -2285,27 +2413,27 @@ vt 0.253012 0.735294 vt 0.204819 0.735294 vt 0.192771 0.794118 vn 0.6160 0.6160 -0.4910 -vn 0.0000 0.2170 -0.9761 -vn 0.0000 0.8712 -0.4910 -vn 0.1535 0.1535 -0.9761 +vn 0.0000 0.2171 -0.9762 +vn -0.0000 0.8712 -0.4910 +vn 0.1535 0.1535 -0.9762 vn 0.0000 -0.8609 -0.5088 vn 0.8712 0.0000 -0.4910 -vn 0.2171 0.0000 -0.9761 +vn 0.2171 -0.0000 -0.9762 vn -0.6087 -0.6087 -0.5088 vn 0.6160 -0.6160 -0.4910 -vn 0.1535 -0.1535 -0.9761 -vn -0.8608 0.0000 -0.5088 -vn 0.0000 -0.2170 -0.9761 +vn 0.1535 -0.1535 -0.9762 +vn -0.8609 -0.0000 -0.5088 +vn -0.0000 -0.2171 -0.9762 vn -0.6087 0.6087 -0.5088 vn -0.6160 -0.6160 -0.4910 -vn 0.0000 -0.8712 -0.4910 -vn -0.1535 -0.1535 -0.9761 -vn 0.0000 0.8609 -0.5088 +vn -0.0000 -0.8712 -0.4910 +vn -0.1535 -0.1535 -0.9762 +vn -0.0000 0.8609 -0.5088 vn -0.8712 0.0000 -0.4910 -vn -0.2171 0.0000 -0.9761 +vn -0.2171 0.0000 -0.9762 vn 0.6087 0.6087 -0.5088 -vn -0.1535 0.1535 -0.9761 -vn 0.8608 0.0000 -0.5088 +vn -0.1535 0.1535 -0.9762 +vn 0.8609 0.0000 -0.5088 vn -0.6160 0.6160 -0.4910 vn 0.6087 -0.6087 -0.5088 vn -0.7225 0.0000 0.6914 @@ -2313,221 +2441,220 @@ vn 0.7225 0.0000 0.6914 vn 0.6906 0.0000 -0.7232 vn 0.0000 0.0000 -1.0000 vn -0.6906 0.0000 -0.7232 -usemtl None s 1 -f 506/777/220 504/778/221 503/779/222 -f 507/780/223 505/781/224 504/778/221 -f 509/782/225 507/780/223 506/777/220 -f 510/783/226 508/784/227 507/780/223 -f 512/785/228 510/783/226 509/782/225 -f 513/786/229 511/787/230 510/783/226 -f 512/785/228 516/788/231 513/786/229 -f 516/788/231 514/789/232 513/786/229 -f 518/790/233 516/791/231 515/792/234 -f 519/793/235 517/794/236 516/791/231 -f 521/795/237 519/793/235 518/790/233 -f 522/796/238 520/797/239 519/793/235 -f 521/795/237 525/798/240 522/796/238 -f 525/798/240 523/799/241 522/796/238 -f 503/779/222 525/798/240 524/800/242 -f 504/778/221 526/801/243 525/798/240 -f 528/802/244 529/803/245 527/804/244 -f 530/805/245 533/806/246 529/803/245 -f 537/807/247 531/808/248 535/809/247 -f 532/810/248 527/804/244 531/808/248 -f 534/811/246 538/812/247 533/806/246 -f 506/777/220 507/780/223 504/778/221 -f 507/780/223 508/813/227 505/781/224 -f 509/782/225 510/783/226 507/780/223 -f 510/783/226 511/814/230 508/784/227 -f 512/785/228 513/786/229 510/783/226 -f 513/786/229 514/815/232 511/787/230 -f 512/785/228 515/816/234 516/788/231 -f 516/788/231 517/817/236 514/789/232 -f 518/790/233 519/793/235 516/791/231 -f 519/793/235 520/818/239 517/794/236 -f 521/795/237 522/796/238 519/793/235 -f 522/796/238 523/819/241 520/797/239 -f 521/795/237 524/800/242 525/798/240 -f 525/798/240 526/820/243 523/799/241 -f 503/779/222 504/778/221 525/798/240 -f 504/778/221 505/821/224 526/801/243 -f 528/802/244 530/805/245 529/803/245 -f 530/805/245 534/811/246 533/806/246 -f 537/807/247 532/810/248 531/808/248 -f 532/810/248 528/802/244 527/804/244 -f 534/811/246 536/822/247 538/812/247 -o LeftArm -v 3.848080 -1.385496 2.089541 -v 3.848082 2.482785 2.089541 -v 6.707815 -1.385498 2.089541 -v 6.707817 2.482783 2.089541 -v 3.848080 -1.385496 -2.083592 -v 3.848082 2.482785 -2.083592 -v 6.707815 -1.385498 -2.083592 -v 6.707817 2.482783 -2.083592 -v 5.563126 4.039324 2.089541 -v 8.399313 4.039323 2.089541 -v 8.399311 0.171042 2.089541 -v 8.399311 0.171042 -2.083592 -v 8.399313 4.039323 -2.083592 -v 5.563126 4.039324 -2.083592 -v 5.701231 -2.606927 1.081455 -v 4.854661 -2.606926 1.081455 -v 4.854661 -2.606926 -1.075505 -v 5.701231 -2.606927 -1.075505 -v 9.538965 0.957276 1.081455 -v 9.538965 0.957276 -1.075506 -v 9.538967 3.253084 -1.075506 -v 9.538967 3.253084 1.081455 -v 7.980860 -1.823903 -1.075506 -v 8.611074 -1.243971 -1.075506 -v 8.611074 -1.243970 1.081455 -v 7.980860 -1.823903 1.081455 -v 4.476345 -2.606926 1.567900 -v 6.079547 -2.606927 1.567900 -v 4.476345 -2.606926 -1.561950 -v 6.079547 -2.606927 -1.561950 -v 9.538965 0.439518 -1.561950 -v 9.538965 0.439518 1.567899 -v 9.538967 3.770842 -1.561950 -v 9.538967 3.770842 1.567899 -v 8.930279 -0.950234 -1.561950 -v 7.661656 -2.117639 -1.561950 -v 8.930279 -0.950234 1.567900 -v 7.661656 -2.117639 1.567900 -v 5.701231 -4.274506 1.081455 -v 4.854660 -4.274506 1.081455 -v 4.854660 -4.274506 -1.075505 -v 5.701231 -4.274506 -1.075505 -v 11.094896 0.957275 1.081455 -v 11.094896 0.957275 -1.075506 -v 11.094898 3.253083 -1.075506 -v 11.094898 3.253083 1.081455 -v 8.994442 -3.089109 -1.075506 -v 9.624655 -2.509177 -1.075506 -v 9.624655 -2.509176 1.081455 -v 8.994442 -3.089109 1.081455 -v 5.889863 7.776278 1.993027 -v 5.889863 7.592228 2.319573 -v 5.889863 7.399215 1.993027 -v 6.778609 7.408146 1.993027 -v 6.648466 7.278004 2.319573 -v 6.511984 7.141523 1.993027 -v 7.146739 6.519400 1.993027 -v 6.962690 6.519400 2.319573 -v 6.769676 6.519400 1.993027 -v 6.778607 5.630654 1.993027 -v 6.648465 5.760797 2.319573 -v 6.511983 5.897279 1.993027 -v 5.889862 5.262525 1.993027 -v 5.889862 5.446574 2.319573 -v 5.889862 5.639588 1.993027 -v 5.001116 5.630656 1.993027 -v 5.131258 5.760798 2.319573 -v 5.267740 5.897280 1.993027 -v 4.632987 6.519403 1.993027 -v 4.817035 6.519403 2.319573 -v 5.010049 6.519402 1.993027 -v 5.001116 7.408147 1.993027 -v 5.131258 7.278005 2.319573 -v 5.267740 7.141523 1.993027 -v 3.966252 6.630567 -2.020720 -v 3.966251 6.394344 -2.020720 -v 8.013643 6.630563 -2.020720 -v 8.013641 6.394340 -2.020720 -v 3.966252 6.917194 2.026670 -v 3.966251 6.107717 2.026670 -v 8.013641 6.917191 2.026670 -v 8.013641 6.107713 2.026670 -v 4.900514 6.917193 2.026670 -v 6.857197 6.107714 2.026670 -v 4.900513 6.107715 2.026670 -v 6.857198 6.917192 2.026670 +f 510/840/226 511/841/227 512/842/228 +f 513/843/229 514/844/230 511/841/227 +f 515/845/231 513/843/229 510/840/226 +f 516/846/232 517/847/233 513/843/229 +f 518/848/234 516/846/232 515/845/231 +f 519/849/235 520/850/236 516/846/232 +f 518/848/234 521/851/237 519/849/235 +f 521/851/237 522/852/238 519/849/235 +f 523/853/239 521/854/237 524/855/240 +f 525/856/241 526/857/242 521/854/237 +f 527/858/243 525/856/241 523/853/239 +f 528/859/244 529/860/245 525/856/241 +f 527/858/243 530/861/246 528/859/244 +f 530/861/246 531/862/247 528/859/244 +f 512/842/228 530/861/246 532/863/248 +f 511/841/227 533/864/249 530/861/246 +f 534/865/250 535/866/251 536/867/250 +f 537/868/251 538/869/252 535/866/251 +f 539/870/253 540/871/254 541/872/253 +f 542/873/254 536/867/250 540/871/254 +f 543/874/252 544/875/253 538/869/252 +f 510/840/226 513/843/229 511/841/227 +f 513/843/229 517/876/233 514/844/230 +f 515/845/231 516/846/232 513/843/229 +f 516/846/232 520/877/236 517/847/233 +f 518/848/234 519/849/235 516/846/232 +f 519/849/235 522/878/238 520/850/236 +f 518/848/234 524/879/240 521/851/237 +f 521/851/237 526/880/242 522/852/238 +f 523/853/239 525/856/241 521/854/237 +f 525/856/241 529/881/245 526/857/242 +f 527/858/243 528/859/244 525/856/241 +f 528/859/244 531/882/247 529/860/245 +f 527/858/243 532/863/248 530/861/246 +f 530/861/246 533/883/249 531/862/247 +f 512/842/228 511/841/227 530/861/246 +f 511/841/227 514/884/230 533/864/249 +f 534/865/250 537/868/251 535/866/251 +f 537/868/251 543/874/252 538/869/252 +f 539/870/253 542/873/254 540/871/254 +f 542/873/254 534/865/250 536/867/250 +f 543/874/252 545/885/253 544/875/253 +o RightArm +v -6.727931 -1.385484 2.089541 +v -3.868196 -1.385486 2.089541 +v -3.868194 2.482796 2.089541 +v -3.868196 -1.385486 -2.083592 +v -6.727931 -1.385484 -2.083592 +v -6.727929 2.482797 -2.083592 +v -6.727929 2.482797 2.089541 +v -5.583236 4.039337 2.089541 +v -8.419426 0.171058 2.089541 +v -5.583236 4.039337 -2.083592 +v -3.868194 2.482796 -2.083592 +v -8.419426 0.171058 -2.083591 +v -4.874779 -4.274494 1.081455 +v -5.721350 -4.274494 1.081455 +v -5.721350 -4.274494 -1.075505 +v -4.874778 -2.606915 1.081455 +v -5.721349 -2.606914 1.081455 +v -4.874779 -4.274494 -1.075505 +v -4.874778 -2.606915 -1.075505 +v -5.721349 -2.606914 -1.075505 +v -11.115009 0.957294 -1.075505 +v -11.115009 0.957294 1.081455 +v -11.115007 3.253102 1.081455 +v -9.559078 0.957293 -1.075505 +v -9.559078 0.957293 1.081455 +v -11.115007 3.253102 -1.075505 +v -9.559076 3.253101 -1.075505 +v -9.559076 3.253101 1.081455 +v -9.644773 -2.509160 -1.075505 +v -9.014559 -3.089092 -1.075505 +v -9.014559 -3.089093 1.081455 +v -8.631191 -1.243954 -1.075505 +v -8.000977 -1.823888 -1.075505 +v -9.644773 -2.509159 1.081455 +v -8.631191 -1.243954 1.081455 +v -8.000977 -1.823888 1.081455 +v -8.419424 4.039339 2.089541 +v -8.419424 4.039339 -2.083591 +v -4.496462 -2.606915 1.567900 +v -4.496462 -2.606915 -1.561950 +v -6.099665 -2.606914 -1.561950 +v -6.099665 -2.606914 1.567900 +v -9.559078 0.439535 -1.561950 +v -9.559076 3.770859 -1.561950 +v -9.559076 3.770859 1.567900 +v -7.681774 -2.117624 -1.561950 +v -8.950394 -0.950218 1.567900 +v -7.681774 -2.117624 1.567900 +v -9.559078 0.439535 1.567900 +v -8.950394 -0.950218 -1.561950 +v -6.110137 7.776291 1.993027 +v -6.110137 7.592242 2.319573 +v -5.351533 7.278018 2.319573 +v -6.110137 7.399228 1.993027 +v -5.488015 7.141536 1.993027 +v -5.221390 7.408160 1.993027 +v -5.037309 6.519414 2.319573 +v -5.230323 6.519414 1.993027 +v -5.221392 5.630669 1.993027 +v -4.853261 6.519414 1.993027 +v -5.351534 5.760811 2.319573 +v -6.110137 5.262538 1.993027 +v -6.110137 5.446588 2.319573 +v -5.488016 5.897292 1.993027 +v -6.868741 5.760811 2.319573 +v -6.110137 5.639601 1.993027 +v -6.732259 5.897293 1.993027 +v -6.998883 5.630669 1.993027 +v -7.182964 6.519414 2.319573 +v -6.989950 6.519414 1.993027 +v -6.998883 7.408160 1.993027 +v -7.367013 6.519414 1.993027 +v -6.868741 7.278018 2.319573 +v -6.732259 7.141537 1.993027 +v -8.033749 6.394355 -2.020720 +v -8.033747 6.630578 -2.020720 +v -3.986356 6.630577 -2.020720 +v -3.986357 6.394354 -2.020720 +v -3.986357 6.917205 2.026670 +v -7.099486 6.107728 2.026670 +v -7.099485 6.917206 2.026670 +v -8.033747 6.917206 2.026670 +v -8.033749 6.107728 2.026670 +v -3.986358 6.107727 2.026670 +v -5.142801 6.917206 2.026670 +v -5.142802 6.107728 2.026670 vt 0.058610 0.440457 +vt 0.000000 0.441176 vt 0.000000 0.338235 vt 0.000000 0.441176 -vt 0.000000 0.441176 -vt 0.060241 0.335919 vt 0.058533 0.440018 -vt 0.060241 0.335919 +vt 0.060241 0.337540 +vt 0.060241 0.337540 vt 0.035980 0.295068 vt 0.096386 0.397059 vt 0.035955 0.295044 vt 0.000000 0.338235 vt 0.096386 0.397059 vt 0.132530 0.455882 -vt 0.180723 0.485294 vt 0.132530 0.485294 -vt 0.096386 0.485294 +vt 0.180723 0.485294 vt 0.096386 0.455882 +vt 0.096386 0.485294 vt 0.180723 0.455882 -vt 0.132530 0.411765 vt 0.180723 0.411765 -vt 0.216867 0.455882 +vt 0.132530 0.411765 vt 0.216867 0.485294 -vt 0.180723 0.529412 +vt 0.216867 0.455882 vt 0.132530 0.529412 +vt 0.180723 0.529412 vt 0.180723 0.308824 -vt 0.132530 0.367647 vt 0.132530 0.308824 -vt 0.132530 0.264706 +vt 0.132530 0.367647 vt 0.180723 0.264706 +vt 0.132530 0.264706 vt 0.180723 0.367647 -vt 0.216867 0.308824 vt 0.216867 0.367647 -vt 0.180723 0.411765 +vt 0.216867 0.308824 vt 0.132530 0.411765 -vt 0.096386 0.367647 +vt 0.180723 0.411765 vt 0.096386 0.308824 +vt 0.096386 0.367647 vt 0.253012 0.455882 -vt 0.301205 0.485294 vt 0.253012 0.485294 +vt 0.301205 0.485294 vt 0.216867 0.455882 vt 0.216867 0.485294 vt 0.301205 0.455882 -vt 0.253012 0.411765 vt 0.301205 0.411765 +vt 0.253012 0.411765 vt 0.337349 0.485294 vt 0.337349 0.455882 -vt 0.301205 0.529412 vt 0.253012 0.529412 +vt 0.301205 0.529412 vt 0.096386 0.294118 vt 0.096386 0.294118 vt 0.084337 0.132353 -vt 0.108434 0.088235 vt 0.108434 0.132353 +vt 0.108434 0.088235 vt 0.024096 0.132353 -vt 0.084337 0.161765 vt 0.024096 0.161765 +vt 0.084337 0.161765 vt 0.024096 0.088235 -vt 0.000000 0.132353 vt 0.000000 0.088235 +vt 0.000000 0.132353 vt 0.084337 0.088235 -vt 0.024096 0.058824 vt 0.084337 0.058824 +vt 0.024096 0.058824 vt 0.084337 0.191176 -vt 0.024096 0.161765 vt 0.084337 0.161765 +vt 0.024096 0.161765 vt 0.084337 0.264706 -vt 0.108434 0.191176 vt 0.108434 0.264706 +vt 0.108434 0.191176 vt 0.024096 0.264706 -vt 0.084337 0.294118 vt 0.024096 0.294118 +vt 0.084337 0.294118 vt -0.000000 0.191176 vt 0.000000 0.264706 vt 0.000000 0.088235 -vt 0.024096 0.132353 vt 0.000000 0.132353 +vt 0.024096 0.132353 vt 0.084337 0.088235 -vt 0.024096 0.058824 vt 0.084337 0.058824 +vt 0.024096 0.058824 vt 0.084337 0.132353 -vt 0.108434 0.088235 vt 0.108434 0.132353 -vt 0.084337 0.161765 +vt 0.108434 0.088235 vt 0.024096 0.161765 +vt 0.084337 0.161765 vt 0.072289 0.102941 vt 0.072289 0.117647 vt 0.036145 0.117647 @@ -2538,491 +2665,296 @@ vt 0.072289 0.250000 vt 0.036145 0.250000 vt 0.024096 0.191176 vt 0.036145 0.117647 -vt 0.024096 0.088235 vt 0.036145 0.102941 +vt 0.024096 0.088235 vt 0.072289 0.102941 vt 0.072289 0.117647 vt 0.192771 0.794118 -vt 0.144578 0.764706 -vt 0.144578 0.794118 vt 0.192771 0.764706 +vt 0.144578 0.764706 +vt 0.180723 0.735294 vt 0.156627 0.735294 +vt 0.144578 0.794118 vt 0.096386 0.764706 -vt 0.096386 0.794118 +vt 0.132530 0.735294 vt 0.108434 0.735294 vt 0.048193 0.794118 -vt 0.084337 0.735294 +vt 0.096386 0.794118 vt 0.048193 0.764706 +vt 0.084337 0.735294 vt 0.000000 0.794118 -vt 0.036145 0.735294 vt 0.000000 0.764706 +vt 0.036145 0.735294 vt 0.385542 0.794118 -vt 0.337349 0.764706 -vt 0.337349 0.794118 vt 0.385542 0.764706 +vt 0.337349 0.764706 +vt 0.373494 0.735294 vt 0.349398 0.735294 +vt 0.337349 0.794118 vt 0.289157 0.764706 -vt 0.289157 0.794118 +vt 0.325301 0.735294 vt 0.301205 0.735294 vt 0.240964 0.794118 -vt 0.277108 0.735294 +vt 0.289157 0.794118 vt 0.240964 0.764706 +vt 0.277108 0.735294 vt 0.228916 0.735294 -vt 0.120482 0.823529 vt 0.072289 0.794118 vt 0.072289 0.823529 -vt 0.168675 0.794118 +vt 0.120482 0.823529 vt 0.120482 0.794118 -vt 0.000000 0.823529 -vt 0.024096 0.794118 -vt 0.000000 0.794118 -vt 0.024096 0.823529 vt 0.168675 0.823529 -vt 0.192771 0.794118 -vt 0.180723 0.735294 -vt 0.132530 0.735294 +vt 0.000000 0.794118 +vt 0.000000 0.823529 +vt 0.024096 0.823529 +vt 0.024096 0.794118 +vt 0.168675 0.794118 +vt 0.192771 0.823529 vt 0.060241 0.735294 vt 0.012048 0.735294 -vt 0.373494 0.735294 -vt 0.325301 0.735294 vt 0.253012 0.735294 vt 0.204819 0.735294 -vt 0.192771 0.823529 +vt 0.192771 0.794118 vn 0.0000 0.0000 1.0000 -vn 0.0000 0.0000 -1.0000 -vn -0.0000 -1.0000 0.0000 -vn -1.0000 0.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 0.0000 vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 vn 0.0000 1.0000 0.0000 -vn 0.6771 -0.7359 -0.0000 -vn 0.7804 0.6252 0.0000 -vn -0.7804 -0.6252 0.0000 -vn -0.4181 -0.7891 0.4500 -vn 0.1412 -0.4385 0.8876 -vn -0.3590 -0.3328 0.8720 -vn -0.4181 -0.7891 -0.4500 -vn -0.3590 -0.3328 -0.8720 -vn 0.4181 -0.7891 -0.4500 -vn 0.1412 -0.4385 -0.8876 +vn -0.6771 -0.7359 -0.0000 +vn -0.7804 0.6252 0.0000 +vn 0.7804 -0.6252 0.0000 vn 0.4181 -0.7891 0.4500 -vn 0.7388 -0.5169 -0.4324 -vn 0.4205 -0.1879 0.8876 -vn 0.4205 -0.1879 -0.8876 -vn 0.7388 0.5169 -0.4324 -vn 0.2648 0.3576 -0.8955 -vn 0.7388 0.5169 0.4324 -vn 0.2648 0.3576 0.8955 -vn 0.0911 -0.8948 -0.4370 -vn 0.8699 -0.2238 0.4395 -vn 0.0911 -0.8948 0.4370 -vn 0.3015 -0.9045 0.3015 +vn 0.3590 -0.3328 0.8720 +vn -0.1412 -0.4385 0.8876 +vn 0.4181 -0.7891 -0.4500 +vn 0.3591 -0.3327 -0.8720 +vn -0.4181 -0.7891 -0.4500 +vn -0.1412 -0.4385 -0.8876 +vn -0.4181 -0.7891 0.4500 +vn -0.7388 -0.5169 -0.4324 +vn -0.4205 -0.1879 -0.8876 +vn -0.4205 -0.1879 0.8876 +vn -0.7389 0.5169 -0.4324 +vn -0.2648 0.3576 -0.8955 +vn -0.7388 0.5169 0.4324 +vn -0.2648 0.3577 0.8955 +vn -0.0911 -0.8948 -0.4370 +vn -0.8699 -0.2238 0.4396 +vn -0.0911 -0.8948 0.4370 vn -0.3015 -0.9045 0.3015 -vn -0.3015 -0.9045 -0.3015 +vn 0.3015 -0.9045 0.3015 vn 0.3015 -0.9045 -0.3015 -vn 0.9045 -0.3015 0.3015 -vn 0.9045 -0.3015 -0.3015 -vn 0.9045 0.3015 -0.3015 -vn 0.9045 0.3015 0.3015 -vn 0.7388 -0.5169 0.4324 -vn 0.3828 -0.8668 -0.3193 -vn 0.8699 -0.2238 -0.4395 -vn 0.8355 -0.4702 -0.2842 -vn 0.8355 -0.4702 0.2842 -vn 0.3828 -0.8668 0.3193 +vn -0.3015 -0.9045 -0.3015 +vn -0.9045 -0.3015 0.3015 +vn -0.9045 -0.3015 -0.3015 +vn -0.9045 0.3015 -0.3015 +vn -0.9045 0.3015 0.3015 +vn -0.7388 -0.5169 0.4324 +vn -0.3829 -0.8669 -0.3193 +vn -0.8355 -0.4702 -0.2842 +vn -0.8699 -0.2238 -0.4396 +vn -0.8355 -0.4702 0.2842 +vn -0.3829 -0.8669 0.3193 vn 0.0000 0.8712 0.4910 -vn 0.1535 0.1535 0.9761 -vn 0.6160 0.6160 0.4910 -vn 0.0000 0.2171 0.9761 +vn -0.0000 0.2171 0.9762 +vn 0.1535 0.1535 0.9762 +vn -0.0000 -0.8609 0.5088 vn -0.6087 -0.6087 0.5088 -vn 0.2171 0.0000 0.9761 -vn 0.8712 0.0000 0.4910 -vn -0.8608 0.0000 0.5088 +vn 0.6160 0.6160 0.4910 +vn 0.2171 -0.0000 0.9762 +vn -0.8609 0.0000 0.5088 vn 0.6160 -0.6160 0.4910 -vn 0.1535 -0.1535 0.9761 +vn 0.8712 -0.0000 0.4910 +vn 0.1535 -0.1535 0.9762 vn 0.0000 -0.8712 0.4910 +vn 0.0000 -0.2171 0.9762 vn -0.6087 0.6087 0.5088 -vn 0.0000 -0.2171 0.9761 -vn -0.1535 -0.1535 0.9761 -vn -0.6160 -0.6160 0.4910 +vn -0.1535 -0.1535 0.9762 +vn 0.0000 0.8609 0.5088 vn 0.6087 0.6087 0.5088 -vn -0.2171 0.0000 0.9761 -vn -0.8712 0.0000 0.4910 -vn 0.8608 0.0000 0.5088 +vn -0.6160 -0.6160 0.4910 +vn -0.2171 -0.0000 0.9762 +vn 0.8609 0.0000 0.5088 vn -0.6160 0.6160 0.4910 -vn -0.1535 0.1535 0.9761 +vn -0.8712 -0.0000 0.4910 +vn -0.1535 0.1535 0.9762 vn 0.6087 -0.6087 0.5088 -vn 0.7225 0.0000 -0.6914 vn -0.7225 0.0000 -0.6914 -vn 0.6906 0.0000 0.7232 +vn 0.7225 -0.0000 -0.6914 +vn 0.6906 -0.0000 0.7232 vn -0.6906 0.0000 0.7232 -vn 0.0000 -0.8608 0.5088 -vn 0.0000 0.8608 0.5088 -usemtl None s off -f 541/823/249 540/824/249 539/825/249 -f 543/826/250 546/827/250 545/828/250 -f 542/829/249 547/830/249 540/824/249 -f 549/831/249 542/829/249 541/823/249 -f 552/832/250 546/827/250 544/833/250 -f 546/827/250 550/834/250 545/828/250 -f 578/835/251 580/836/251 577/837/251 -f 578/835/249 553/838/249 554/839/249 -f 579/840/252 554/841/252 555/842/252 -f 580/836/250 555/843/250 556/844/250 -f 577/837/253 556/845/253 553/846/253 -f 582/847/253 584/848/253 581/849/253 -f 582/847/251 557/850/251 558/851/251 -f 583/852/250 558/853/250 559/854/250 -f 584/848/254 559/855/254 560/856/254 -f 581/849/249 560/857/249 557/858/249 -f 586/859/255 588/860/255 585/861/255 -f 562/862/250 585/861/250 561/863/250 -f 587/864/256 562/865/256 563/866/256 -f 564/867/249 587/864/249 563/868/249 -f 585/861/257 564/869/257 561/870/257 -f 541/823/249 542/829/249 540/824/249 -f 543/826/250 544/833/250 546/827/250 -f 542/829/249 548/871/249 547/830/249 -f 549/831/249 548/871/249 542/829/249 -f 552/832/250 551/872/250 546/827/250 -f 546/827/250 551/872/250 550/834/250 -f 578/835/251 579/840/251 580/836/251 -f 578/835/249 577/837/249 553/838/249 -f 579/840/252 578/835/252 554/841/252 -f 580/836/250 579/840/250 555/843/250 -f 577/837/253 580/836/253 556/845/253 -f 582/847/253 583/852/253 584/848/253 -f 582/847/251 581/849/251 557/850/251 -f 583/852/250 582/847/250 558/853/250 -f 584/848/254 583/852/254 559/855/254 -f 581/849/249 584/848/249 560/857/249 -f 586/859/255 587/864/255 588/860/255 -f 562/862/250 586/859/250 585/861/250 -f 587/864/256 586/859/256 562/865/256 -f 564/867/249 588/860/249 587/864/249 -f 585/861/257 588/860/257 564/869/257 +f 546/886/255 547/887/255 548/888/255 +f 549/889/256 550/890/256 551/891/256 +f 552/892/255 548/888/255 553/893/255 +f 554/894/255 546/886/255 552/892/255 +f 555/895/256 556/896/256 551/891/256 +f 551/891/256 550/890/256 557/897/256 +f 558/898/257 559/899/257 560/900/257 +f 558/898/255 561/901/255 562/902/255 +f 563/903/258 564/904/258 561/905/258 +f 560/900/256 565/906/256 564/907/256 +f 559/899/259 562/908/259 565/909/259 +f 566/910/259 567/911/259 568/912/259 +f 566/910/257 569/913/257 570/914/257 +f 571/915/256 572/916/256 569/917/256 +f 568/912/260 573/918/260 572/919/260 +f 567/911/255 570/920/255 573/921/255 +f 574/922/261 575/923/261 576/924/261 +f 577/925/256 578/926/256 575/923/256 +f 579/927/262 580/928/262 577/929/262 +f 581/930/255 580/931/255 579/927/255 +f 575/923/263 578/932/263 581/933/263 +f 546/886/255 548/888/255 552/892/255 +f 549/889/256 551/891/256 556/896/256 +f 552/892/255 553/893/255 582/934/255 +f 554/894/255 552/892/255 582/934/255 +f 555/895/256 551/891/256 583/935/256 +f 551/891/256 557/897/256 583/935/256 +f 558/898/257 560/900/257 563/903/257 +f 558/898/255 562/902/255 559/899/255 +f 563/903/258 561/905/258 558/898/258 +f 560/900/256 564/907/256 563/903/256 +f 559/899/259 565/909/259 560/900/259 +f 566/910/259 568/912/259 571/915/259 +f 566/910/257 570/914/257 567/911/257 +f 571/915/256 569/917/256 566/910/256 +f 568/912/260 572/919/260 571/915/260 +f 567/911/255 573/921/255 568/912/255 +f 574/922/261 576/924/261 579/927/261 +f 577/925/256 575/923/256 574/922/256 +f 579/927/262 577/929/262 574/922/262 +f 581/930/255 579/927/255 576/924/255 +f 575/923/263 581/933/263 576/924/263 s 1 -f 565/873/258 541/874/259 539/875/260 -f 567/876/261 539/877/260 543/878/262 -f 568/879/263 543/880/262 545/881/264 -f 566/882/265 545/883/264 541/884/259 -f 569/885/266 549/886/267 550/887/268 -f 571/888/269 550/889/268 551/890/270 -f 572/891/271 551/892/270 548/893/272 -f 549/894/267 572/891/271 548/895/272 -f 550/896/268 574/897/273 545/898/264 -f 575/899/274 550/900/268 549/901/267 -f 576/902/275 549/903/267 541/904/259 -f 574/897/273 541/905/259 545/906/264 -f 553/907/276 565/873/258 554/908/277 -f 554/908/277 567/876/261 555/909/278 -f 556/910/279 567/876/261 568/879/263 -f 556/910/279 566/882/265 553/907/276 -f 557/911/280 569/885/266 558/912/281 -f 558/912/281 571/888/269 559/913/282 -f 559/913/282 572/891/271 560/914/283 -f 560/914/283 570/915/284 557/911/280 -f 561/916/285 573/917/286 562/918/287 -f 562/918/287 575/899/274 563/919/288 -f 564/920/289 575/899/274 576/902/275 -f 561/916/285 576/902/275 574/897/273 -f 589/921/290 593/922/291 592/923/292 -f 590/924/293 594/925/294 593/922/291 -f 592/923/292 596/926/295 595/927/296 -f 593/922/291 597/928/297 596/926/295 -f 596/926/295 598/929/298 595/927/296 -f 597/930/297 599/931/299 596/926/295 -f 599/931/299 601/932/300 598/929/298 -f 600/933/301 602/934/302 599/931/299 -f 601/935/300 605/936/303 604/937/304 -f 602/938/302 606/939/305 605/936/303 -f 604/937/304 608/940/306 607/941/307 -f 605/936/303 609/942/308 608/940/306 -f 608/940/306 610/943/309 607/941/307 -f 609/944/308 611/945/310 608/940/306 -f 611/945/310 589/921/290 610/943/309 -f 612/946/311 590/924/293 611/945/310 -f 615/947/312 614/948/313 613/949/313 -f 615/947/312 620/950/314 616/951/312 -f 621/952/249 618/953/315 623/954/249 -f 613/949/313 618/953/315 617/955/315 -f 619/956/314 622/957/249 620/950/314 -f 565/873/258 566/882/265 541/874/259 -f 567/876/261 565/873/258 539/877/260 -f 568/879/263 567/876/261 543/880/262 -f 566/882/265 568/879/263 545/883/264 -f 569/885/266 570/915/284 549/886/267 -f 571/888/269 569/885/266 550/889/268 -f 572/891/271 571/888/269 551/892/270 -f 549/894/267 570/915/284 572/891/271 -f 550/896/268 573/917/286 574/897/273 -f 575/899/274 573/917/286 550/900/268 -f 576/902/275 575/899/274 549/903/267 -f 574/897/273 576/902/275 541/905/259 -f 553/907/276 566/882/265 565/873/258 -f 554/908/277 565/873/258 567/876/261 -f 556/910/279 555/909/278 567/876/261 -f 556/910/279 568/879/263 566/882/265 -f 557/911/280 570/915/284 569/885/266 -f 558/912/281 569/885/266 571/888/269 -f 559/913/282 571/888/269 572/891/271 -f 560/914/283 572/891/271 570/915/284 -f 561/916/285 574/897/273 573/917/286 -f 562/918/287 573/917/286 575/899/274 -f 564/920/289 563/919/288 575/899/274 -f 561/916/285 564/920/289 576/902/275 -f 589/921/290 590/924/293 593/922/291 -f 590/924/293 591/958/316 594/925/294 -f 592/923/292 593/922/291 596/926/295 -f 593/922/291 594/959/294 597/928/297 -f 596/926/295 599/931/299 598/929/298 -f 597/930/297 600/960/301 599/931/299 -f 599/931/299 602/934/302 601/932/300 -f 600/933/301 603/961/317 602/934/302 -f 601/935/300 602/938/302 605/936/303 -f 602/938/302 603/962/317 606/939/305 -f 604/937/304 605/936/303 608/940/306 -f 605/936/303 606/963/305 609/942/308 -f 608/940/306 611/945/310 610/943/309 -f 609/944/308 612/964/311 611/945/310 -f 611/945/310 590/924/293 589/921/290 -f 612/946/311 591/965/316 590/924/293 -f 615/947/312 616/951/312 614/948/313 -f 615/947/312 619/956/314 620/950/314 -f 621/952/249 617/955/315 618/953/315 -f 613/949/313 614/948/313 618/953/315 -f 619/956/314 624/966/249 622/957/249 -o Body -v -1.357744 12.947865 -2.060404 -v -2.084779 16.857933 -2.060405 -v 1.337637 12.947863 -2.060404 -v 2.064677 16.857931 -2.060405 -v 0.755152 6.975003 -1.996005 -v -0.010055 8.739575 -1.996005 -v -0.010056 6.975003 -2.761213 -v -0.775265 6.975004 -1.996004 -v -0.010057 5.273831 -1.996004 -v 4.817903 -0.473352 -2.018208 -v 4.770588 -0.229360 -2.018208 -v 4.633528 0.154637 -2.018208 -v 4.414360 0.647646 -2.018208 -v 4.120724 1.218675 -2.018208 -v 3.760257 1.836732 -2.018208 -v 3.340600 2.470827 -2.018208 -v 2.869391 3.089965 -2.018208 -v 2.354269 3.663156 -2.018208 -v 1.802872 4.159407 -2.018208 -v 1.222840 4.547728 -2.018208 -v 0.621810 4.797125 -2.018208 -v 0.007423 4.876606 -2.018208 -v -0.601421 4.778955 -2.018208 -v -1.187155 4.534758 -2.018208 -v -1.744144 4.169732 -2.018208 -v -2.266752 3.709597 -2.018208 -v -2.749345 3.180070 -2.018208 -v -3.186286 2.606869 -2.018208 -v -3.571939 2.015710 -2.018208 -v -3.900671 1.432314 -2.018208 -v -4.166844 0.882396 -2.018208 -v -4.364824 0.391676 -2.018208 -v -4.488976 -0.014130 -2.018208 -v -4.533662 -0.309302 -2.018208 -v 5.330154 -0.529075 -2.018208 -v 5.277726 -0.258708 -2.018208 -v 5.125850 0.166797 -2.018208 -v 4.882992 0.713097 -2.018208 -v 4.557615 1.345852 -2.018208 -v 4.158184 2.030718 -2.018208 -v 3.693165 2.733354 -2.018209 -v 3.171020 3.419418 -2.018208 -v 2.600215 4.054568 -2.018208 -v 1.989216 4.604462 -2.018208 -v 1.346485 5.034757 -2.018208 -v 0.680488 5.311113 -2.018208 -v -0.000312 5.399186 -2.018208 -v -0.674968 5.290979 -2.018208 -v -1.324017 5.020385 -2.018208 -v -1.941214 4.615903 -2.018208 -v -2.520314 4.106030 -2.018208 -v -3.055072 3.519263 -2.018208 -v -3.539243 2.884101 -2.018208 -v -3.966585 2.229043 -2.018208 -v -4.330851 1.582583 -2.018208 -v -4.625796 0.973223 -2.018208 -v -4.845176 0.429459 -2.018208 -v -4.982747 -0.020212 -2.018208 -v -5.032264 -0.347291 -2.018208 -v -4.218641 14.357357 2.124614 -v -4.218643 11.132286 2.124614 -v 4.198537 14.357351 2.124614 -v 4.198535 11.132282 2.124614 -v -4.218642 12.932457 -2.118665 -v -4.218643 11.132286 -2.118664 -v 4.198536 12.932452 -2.118665 -v 4.198535 11.132282 -2.118665 -v -0.010052 14.471598 2.124614 -v -0.010054 11.098518 2.124614 -v -0.010053 13.633080 -2.118665 -v -0.010054 11.832909 -2.118665 -vt 0.144578 0.617647 -vt 0.096386 0.558824 -vt 0.144578 0.529412 -vt 0.192771 0.558824 -vt 0.192771 0.558824 -vt 0.144578 0.617647 -vt 0.096386 0.558824 -vt 0.325301 0.617647 -vt 0.303449 0.588235 -vt 0.325301 0.588235 -vt 0.626506 0.588235 -vt 0.590361 0.617647 -vt 0.590361 0.588235 -vt 0.590361 0.617647 -vt 0.554217 0.588235 -vt 0.590361 0.588235 -vt 0.373494 0.588235 -vt 0.337349 0.617647 -vt 0.337349 0.588235 -vt 0.265680 0.617647 -vt 0.303449 0.617647 -vt 0.554217 0.617647 -vt 0.518072 0.588235 -vt 0.409639 0.588235 -vt 0.373494 0.617647 -vt 0.228916 0.617647 -vt 0.265680 0.588235 -vt 0.518072 0.617647 -vt 0.481928 0.588235 -vt 0.445783 0.588235 -vt 0.409639 0.617647 -vt 0.192771 0.617647 -vt 0.228916 0.588235 -vt 0.481928 0.617647 -vt 0.445783 0.588235 -vt 0.481928 0.588235 -vt 0.445783 0.617647 -vt 0.192771 0.588235 -vt 0.228916 0.617647 -vt 0.192771 0.617647 -vt 0.445783 0.617647 -vt 0.409639 0.588235 -vt 0.518072 0.588235 -vt 0.481928 0.617647 -vt 0.228916 0.588235 -vt 0.265060 0.617647 -vt 0.409639 0.617647 -vt 0.373494 0.588235 -vt 0.554217 0.588235 -vt 0.518072 0.617647 -vt 0.301205 0.588235 -vt 0.265060 0.588235 -vt 0.373494 0.617647 -vt 0.554217 0.617647 -vt 0.626506 0.617647 -vt 0.626506 0.588235 -vt 0.301205 0.617647 -vt 0.626506 0.617647 -vt 0.192771 0.588235 -vt 0.289157 0.735294 -vt 0.192771 0.632353 -vt 0.289157 0.632353 -vt 0.192771 0.735294 -vt 0.096386 0.676471 -vt 0.578313 0.735294 -vt 0.481928 0.676471 -vt 0.578313 0.676471 -vt 0.385542 0.735294 -vt 0.385542 0.632353 -vt 0.000000 0.735294 -vt 0.000000 0.676471 -vt 0.096386 0.735294 -vt 0.481928 0.735294 -vt 0.000000 0.441176 -vt 0.080123 0.556041 -vt 0.016262 0.556041 -vt 0.096386 0.441176 -vn 0.6760 0.2932 -0.6760 -vn -0.6760 0.2932 -0.6760 -vn 0.6738 -0.3031 -0.6738 -vn -0.6738 -0.3031 -0.6738 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 0.6152 0.0000 0.7884 -vn 0.7053 0.0000 0.7089 -vn 0.7374 0.0000 -0.6755 -vn -0.7374 0.0000 -0.6755 -vn -0.7053 0.0000 0.7089 -vn -0.6152 0.0000 0.7884 -vn 0.7451 0.0000 -0.6669 -vn -0.7451 0.0000 -0.6669 -usemtl None +f 584/936/264 547/937/265 546/938/266 +f 585/939/267 549/940/268 547/941/265 +f 586/942/269 550/943/270 549/944/268 +f 587/945/271 546/946/266 550/947/270 +f 588/948/272 557/949/273 554/950/274 +f 589/951/275 583/952/276 557/953/273 +f 590/954/277 582/955/278 583/956/276 +f 554/957/274 582/958/278 590/954/277 +f 557/959/273 550/960/270 591/961/279 +f 592/962/280 554/963/274 557/964/273 +f 593/965/281 546/966/266 554/967/274 +f 591/961/279 550/968/270 546/969/266 +f 562/970/282 561/971/283 584/936/264 +f 561/971/283 564/972/284 585/939/267 +f 565/973/285 586/942/269 585/939/267 +f 565/973/285 562/970/282 587/945/271 +f 570/974/286 569/975/287 588/948/272 +f 569/975/287 572/976/288 589/951/275 +f 572/976/288 573/977/289 590/954/277 +f 573/977/289 570/974/286 594/978/290 +f 578/979/291 577/980/292 595/981/293 +f 577/980/292 580/982/294 592/962/280 +f 581/983/295 593/965/281 592/962/280 +f 578/979/291 591/961/279 593/965/281 +f 596/984/296 597/985/297 598/986/298 +f 597/985/297 599/987/299 600/988/300 +f 601/989/301 598/986/298 602/990/302 +f 598/986/298 600/991/300 603/992/303 +f 604/993/304 605/994/305 602/990/302 +f 606/995/306 602/990/302 603/996/303 +f 607/997/307 604/993/304 606/995/306 +f 608/998/308 606/995/306 609/999/309 +f 607/1000/307 608/1001/308 610/1002/310 +f 608/1001/308 611/1003/311 612/1004/312 +f 613/1005/313 610/1002/310 614/1006/314 +f 610/1002/310 612/1007/312 615/1008/315 +f 616/1009/316 617/1010/317 614/1006/314 +f 618/1011/318 614/1006/314 615/1012/315 +f 596/984/296 616/1009/316 618/1011/318 +f 597/985/297 618/1011/318 619/1013/319 +f 620/1014/320 621/1015/320 622/1016/321 +f 623/1017/321 622/1016/321 624/1018/322 +f 625/1019/255 626/1020/255 627/1021/323 +f 628/1022/323 627/1021/323 621/1015/320 +f 629/1023/322 624/1018/322 630/1024/255 +f 584/936/264 546/938/266 587/945/271 +f 585/939/267 547/941/265 584/936/264 +f 586/942/269 549/944/268 585/939/267 +f 587/945/271 550/947/270 586/942/269 +f 588/948/272 554/950/274 594/978/290 +f 589/951/275 557/953/273 588/948/272 +f 590/954/277 583/956/276 589/951/275 +f 554/957/274 590/954/277 594/978/290 +f 557/959/273 591/961/279 595/981/293 +f 592/962/280 557/964/273 595/981/293 +f 593/965/281 554/967/274 592/962/280 +f 591/961/279 546/969/266 593/965/281 +f 562/970/282 584/936/264 587/945/271 +f 561/971/283 585/939/267 584/936/264 +f 565/973/285 585/939/267 564/972/284 +f 565/973/285 587/945/271 586/942/269 +f 570/974/286 588/948/272 594/978/290 +f 569/975/287 589/951/275 588/948/272 +f 572/976/288 590/954/277 589/951/275 +f 573/977/289 594/978/290 590/954/277 +f 578/979/291 595/981/293 591/961/279 +f 577/980/292 592/962/280 595/981/293 +f 581/983/295 592/962/280 580/982/294 +f 578/979/291 593/965/281 581/983/295 +f 596/984/296 598/986/298 601/989/301 +f 597/985/297 600/988/300 598/986/298 +f 601/989/301 602/990/302 605/994/305 +f 598/986/298 603/992/303 602/990/302 +f 604/993/304 602/990/302 606/995/306 +f 606/995/306 603/996/303 609/1025/309 +f 607/997/307 606/995/306 608/998/308 +f 608/998/308 609/999/309 611/1026/311 +f 607/1000/307 610/1002/310 613/1005/313 +f 608/1001/308 612/1004/312 610/1002/310 +f 613/1005/313 614/1006/314 617/1010/317 +f 610/1002/310 615/1008/315 614/1006/314 +f 616/1009/316 614/1006/314 618/1011/318 +f 618/1011/318 615/1012/315 619/1027/319 +f 596/984/296 618/1011/318 597/985/297 +f 597/985/297 619/1013/319 599/1028/299 +f 620/1014/320 622/1016/321 623/1017/321 +f 623/1017/321 624/1018/322 629/1023/322 +f 625/1019/255 627/1021/323 628/1022/323 +f 628/1022/323 621/1015/320 620/1014/320 +f 629/1023/322 630/1024/255 631/1029/255 +o RightFoot +v 0.124961 24.067026 2.136321 +v 0.124961 22.765116 -2.130369 +v 0.124961 24.067026 -2.130369 +v -4.141729 22.765120 -2.130369 +v -2.008385 21.575682 -3.487656 +v -4.141729 24.067028 -2.130369 +v -4.141729 24.067028 2.136321 +v -2.008384 24.067026 -3.487656 +vt 0.144578 0.823529 +vt 0.180723 0.941176 +vt 0.144578 0.941176 +vt 0.048193 0.941176 +vt 0.144578 0.941176 +vt 0.096386 0.970588 +vt 0.048193 0.941176 +vt 0.012048 0.941176 +vt 0.048193 0.823529 +vt 0.144578 1.000000 +vt 0.048193 1.000000 +vt 0.000000 1.000000 +vt 0.096386 0.970588 +vt 0.192771 1.000000 +vn 1.0000 0.0000 0.0000 +vn -0.0000 -0.7521 0.6591 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.5368 0.0000 -0.8437 +vn -0.5368 0.0000 -0.8437 s off -f 630/967/318 629/968/318 631/969/318 -f 630/967/319 631/969/319 632/970/319 -f 631/969/320 629/971/320 633/972/320 -f 632/973/321 631/969/321 633/972/321 -f 642/974/322 668/975/322 667/976/322 -f 658/977/322 682/978/322 657/979/322 -f 635/980/322 661/981/322 660/982/322 -f 651/983/322 675/984/322 650/985/322 -f 644/986/322 668/975/322 643/987/322 -f 636/988/322 662/989/322 661/981/322 -f 652/990/322 676/991/322 651/983/322 -f 645/992/322 669/993/322 644/986/322 -f 637/994/322 663/995/322 662/989/322 -f 653/996/322 677/997/322 652/990/322 -f 646/998/322 670/999/322 645/992/322 -f 638/1000/322 664/1001/322 663/995/322 -f 654/1002/322 678/1003/322 653/996/322 -f 646/1004/322 672/1005/322 671/1006/322 -f 639/1007/322 665/1008/322 664/1001/322 -f 655/1009/322 679/1010/322 654/1002/322 -f 647/1011/322 673/1012/322 672/1005/322 -f 640/1013/322 666/1014/322 665/1008/322 -f 656/1015/322 680/1016/322 655/1009/322 -f 649/1017/322 673/1012/322 648/1018/322 -f 641/1019/322 667/976/322 666/1014/322 -f 657/979/322 681/1020/322 656/1015/322 -f 634/1021/322 660/982/322 659/1022/322 -f 650/985/322 674/1023/322 649/1017/322 -f 642/974/322 643/987/322 668/975/322 -f 658/977/322 683/1024/322 682/978/322 -f 635/980/322 636/988/322 661/981/322 -f 651/983/322 676/991/322 675/984/322 -f 644/986/322 669/993/322 668/975/322 -f 636/988/322 637/994/322 662/989/322 -f 652/990/322 677/997/322 676/991/322 -f 645/992/322 670/999/322 669/993/322 -f 637/994/322 638/1000/322 663/995/322 -f 653/996/322 678/1003/322 677/997/322 -f 646/998/322 671/1025/322 670/999/322 -f 638/1000/322 639/1007/322 664/1001/322 -f 654/1002/322 679/1010/322 678/1003/322 -f 646/1004/322 647/1011/322 672/1005/322 -f 639/1007/322 640/1013/322 665/1008/322 -f 655/1009/322 680/1016/322 679/1010/322 -f 647/1011/322 648/1018/322 673/1012/322 -f 640/1013/322 641/1019/322 666/1014/322 -f 656/1015/322 681/1020/322 680/1016/322 -f 649/1017/322 674/1023/322 673/1012/322 -f 641/1019/322 642/974/322 667/976/322 -f 657/979/322 682/978/322 681/1020/322 -f 634/1021/322 635/980/322 660/982/322 -f 650/985/322 675/984/322 674/1023/322 -s 1 -f 693/1026/323 686/1027/324 692/1028/323 -f 687/1029/325 690/1030/326 686/1027/324 -f 695/1031/322 688/1032/327 694/1033/322 -f 688/1032/327 685/1034/328 684/1035/329 -f 690/1030/326 695/1036/322 694/1037/322 -f 684/1035/329 693/1026/323 692/1028/323 -f 693/1026/323 687/1029/325 686/1027/324 -f 687/1029/325 691/1038/330 690/1030/326 -f 695/1031/322 689/1039/331 688/1032/327 -f 688/1032/327 689/1039/331 685/1034/328 -f 690/1030/326 691/1038/330 695/1036/322 -f 684/1035/329 685/1034/328 693/1026/323 -usemtl None_bismuth_armor.png.001 -s off -f 626/1040/322 627/1041/322 625/1042/322 -f 626/1040/322 628/1043/322 627/1041/322 +f 632/1030/324 633/1031/324 634/1032/324 +f 633/1033/325 635/1034/325 636/1035/325 +f 637/1036/326 635/1037/326 638/1038/326 +f 634/1032/327 638/1038/327 632/1030/327 +f 633/1031/328 639/1039/328 634/1032/328 +f 635/1037/329 639/1040/329 636/1041/329 +f 637/1036/327 634/1032/327 639/1042/327 +f 634/1032/327 637/1036/327 638/1038/327 +f 633/1031/328 636/1043/328 639/1039/328 +f 635/1037/329 637/1036/329 639/1040/329 diff --git a/src/main/resources/assets/hbm/models/blocks/pipe_neo.obj b/src/main/resources/assets/hbm/models/blocks/pipe_neo.obj new file mode 100644 index 000000000..2273b5e22 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/pipe_neo.obj @@ -0,0 +1,664 @@ +# Blender v2.79 (sub 0) OBJ File: 'pipe_neo.blend' +# www.blender.org +o pZ +v 0.187500 0.000000 -0.500000 +v 0.132582 -0.132582 -0.500000 +v -0.000000 -0.187500 -0.500000 +v -0.132583 -0.132582 -0.500000 +v -0.187500 0.000000 -0.500000 +v -0.132583 0.132583 -0.500000 +v -0.000000 0.187500 -0.500000 +v 0.132582 0.132583 -0.500000 +v -0.132582 0.132583 0.000000 +v 0.000000 0.187500 0.000000 +v -0.132582 -0.132583 0.000000 +v -0.187500 0.000000 0.000000 +v 0.132582 -0.132583 0.000000 +v 0.000000 -0.187500 0.000000 +v 0.132582 0.132583 0.000000 +v 0.187500 -0.000000 0.000000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.125000 0.500000 +vt 0.250000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.305394 0.319606 +vt 0.250674 0.187500 +vt 0.624326 0.187500 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt 0.305394 0.055394 +vt 0.437500 0.000674 +vt 0.569606 0.055394 +vt 0.569606 0.319606 +vt 0.437500 0.374326 +vn -0.3827 0.9239 0.0000 +vn -0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.3827 0.9239 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.3827 -0.9239 -0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 0.9239 0.3827 -0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 7/1/1 9/2/1 10/3/1 +f 5/4/2 11/5/2 12/6/2 +f 3/7/3 13/8/3 14/9/3 +f 8/10/4 10/3/4 15/11/4 +f 9/12/5 5/4/5 12/6/5 +f 11/13/6 3/7/6 14/9/6 +f 2/14/7 16/15/7 13/16/7 +f 1/17/8 15/18/8 16/15/8 +f 8/19/9 1/20/9 5/21/9 +f 7/1/1 6/22/1 9/2/1 +f 5/4/2 4/23/2 11/5/2 +f 3/7/3 2/24/3 13/8/3 +f 8/10/4 7/1/4 10/3/4 +f 9/12/5 6/25/5 5/4/5 +f 11/13/6 4/26/6 3/7/6 +f 2/14/7 1/17/7 16/15/7 +f 1/17/8 8/27/8 15/18/8 +f 1/20/9 2/28/9 3/29/9 +f 3/29/9 4/30/9 1/20/9 +f 4/30/9 5/21/9 1/20/9 +f 5/21/9 6/31/9 7/32/9 +f 7/32/9 8/19/9 5/21/9 +o pX +v 0.500000 0.000000 0.187500 +v 0.500000 -0.132582 0.132582 +v 0.500000 -0.187500 0.000000 +v 0.500000 -0.132582 -0.132582 +v 0.500000 0.000000 -0.187500 +v 0.500000 0.132583 -0.132582 +v 0.500000 0.187500 0.000000 +v 0.500000 0.132583 0.132582 +v 0.000000 -0.000000 0.187500 +v 0.000000 0.132583 0.132582 +v 0.000000 -0.187500 0.000000 +v 0.000000 -0.132583 0.132582 +v 0.000000 0.000000 -0.187500 +v 0.000000 -0.132583 -0.132582 +v 0.000000 0.187500 0.000000 +v 0.000000 0.132583 -0.132582 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 0.500000 +vt -0.000000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.125000 0.500000 +vt 0.250000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.305394 0.319606 +vt 0.250674 0.187500 +vt 0.624326 0.187500 +vt -0.000000 1.000000 +vt 0.125000 1.000000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt 0.305394 0.055394 +vt 0.437500 0.000674 +vt 0.569606 0.055394 +vt 0.569606 0.319606 +vt 0.437500 0.374326 +vn -0.0000 0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 0.3827 +vn -0.0000 0.9239 0.3827 +vn -0.0000 0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.3827 0.9239 +vn -0.0000 0.3827 0.9239 +vn 1.0000 0.0000 0.0000 +s off +f 23/33/10 32/34/10 31/35/10 +f 29/36/11 20/37/11 30/38/11 +f 19/39/12 28/40/12 27/41/12 +f 24/42/13 31/35/13 26/43/13 +f 22/44/14 29/36/14 32/45/14 +f 20/46/15 27/41/15 30/47/15 +f 18/48/16 25/49/16 28/50/16 +f 17/51/17 26/52/17 25/49/17 +f 24/53/18 17/54/18 21/55/18 +f 23/33/10 22/56/10 32/34/10 +f 29/36/11 21/57/11 20/37/11 +f 19/39/12 18/58/12 28/40/12 +f 24/42/13 23/33/13 31/35/13 +f 22/44/14 21/57/14 29/36/14 +f 20/46/15 19/39/15 27/41/15 +f 18/48/16 17/51/16 25/49/16 +f 17/51/17 24/59/17 26/52/17 +f 17/54/18 18/60/18 19/61/18 +f 19/61/18 20/62/18 17/54/18 +f 20/62/18 21/55/18 17/54/18 +f 21/55/18 22/63/18 23/64/18 +f 23/64/18 24/53/18 21/55/18 +o nZ +v 0.187500 -0.000000 0.500000 +v 0.132583 -0.132583 0.500000 +v 0.000000 -0.187500 0.500000 +v -0.132582 -0.132583 0.500000 +v -0.187500 -0.000000 0.500000 +v -0.132582 0.132582 0.500000 +v 0.000000 0.187500 0.500000 +v 0.132583 0.132582 0.500000 +v -0.132582 0.132583 0.000000 +v 0.000000 0.187500 0.000000 +v -0.132582 -0.132583 0.000000 +v -0.187500 0.000000 0.000000 +v 0.132582 -0.132583 0.000000 +v 0.000000 -0.187500 0.000000 +v 0.132582 0.132583 0.000000 +v 0.187500 -0.000000 0.000000 +vt 0.624326 0.187500 +vt 0.437500 0.374326 +vt 0.250674 0.187500 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.125000 -0.000000 +vt 0.250000 0.500000 +vt 0.250000 -0.000000 +vt 0.250000 -0.000000 +vt 0.125000 0.500000 +vt 0.125000 -0.000000 +vt 0.250000 0.500000 +vt 0.125000 -0.000000 +vt 0.250000 -0.000000 +vt 0.250000 0.500000 +vt 0.125000 0.000000 +vt 0.250000 0.000000 +vt -0.000000 -0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.125000 0.500000 +vt -0.000000 0.000000 +vt 0.437500 0.000674 +vt 0.569606 0.055394 +vt 0.569606 0.319606 +vt 0.305394 0.319606 +vt 0.305394 0.055394 +vt 0.000000 0.500000 +vt 0.250000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vn 0.0000 0.0000 1.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 -0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +s off +f 33/65/19 39/66/19 37/67/19 +f 48/68/20 40/69/20 33/70/20 +f 45/71/21 33/70/21 34/72/21 +f 36/73/22 46/74/22 35/75/22 +f 41/76/23 37/77/23 38/78/23 +f 47/79/24 39/80/24 40/81/24 +f 46/74/25 34/82/25 35/75/25 +f 44/83/26 36/84/26 37/77/26 +f 42/85/27 38/86/27 39/80/27 +f 35/87/19 34/88/19 33/65/19 +f 33/65/19 40/89/19 39/66/19 +f 39/66/19 38/90/19 37/67/19 +f 37/67/19 36/91/19 35/87/19 +f 35/87/19 33/65/19 37/67/19 +f 48/68/20 47/92/20 40/69/20 +f 45/71/21 48/68/21 33/70/21 +f 36/73/22 43/93/22 46/74/22 +f 41/76/23 44/83/23 37/77/23 +f 47/79/24 42/85/24 39/80/24 +f 46/74/25 45/94/25 34/82/25 +f 44/83/26 43/95/26 36/84/26 +f 42/85/27 41/96/27 38/86/27 +o nX +v -0.500000 -0.000000 0.187500 +v -0.500000 -0.132583 0.132583 +v -0.500000 -0.187500 0.000000 +v -0.500000 -0.132583 -0.132582 +v -0.500000 -0.000000 -0.187500 +v -0.500000 0.132582 -0.132582 +v -0.500000 0.187500 0.000000 +v -0.500000 0.132582 0.132583 +v 0.000000 -0.000000 0.187500 +v 0.000000 0.132583 0.132582 +v 0.000000 -0.187500 0.000000 +v 0.000000 -0.132583 0.132582 +v 0.000000 0.000000 -0.187500 +v 0.000000 -0.132583 -0.132582 +v 0.000000 0.187500 0.000000 +v 0.000000 0.132583 -0.132582 +vt 0.437500 0.000674 +vt 0.624326 0.187500 +vt 0.437500 0.374326 +vt 0.125000 0.000000 +vt 0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.125000 -0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.125000 -0.000000 +vt 0.250000 0.500000 +vt 0.250000 0.000000 +vt 0.250000 0.500000 +vt 0.250000 -0.000000 +vt 0.250000 0.500000 +vt 0.250000 -0.000000 +vt 0.250000 0.500000 +vt 0.125000 -0.000000 +vt 0.250000 -0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.569606 0.055394 +vt 0.569606 0.319606 +vt 0.305394 0.319606 +vt 0.250674 0.187500 +vt 0.305394 0.055394 +vt 0.125000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vn -1.0000 0.0000 0.0000 +vn -0.0000 0.9239 -0.3827 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 0.3827 +vn -0.0000 0.9239 0.3827 +vn -0.0000 0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.3827 0.9239 +vn -0.0000 0.3827 0.9239 +s off +f 51/97/28 49/98/28 55/99/28 +f 55/100/29 64/101/29 54/102/29 +f 61/103/30 52/104/30 53/105/30 +f 59/106/31 50/107/31 51/108/31 +f 58/109/32 55/100/32 56/110/32 +f 64/111/33 53/105/33 54/112/33 +f 62/113/34 51/108/34 52/114/34 +f 60/115/35 49/116/35 50/117/35 +f 57/118/36 56/119/36 49/116/36 +f 51/97/28 50/120/28 49/98/28 +f 49/98/28 56/121/28 55/99/28 +f 55/99/28 54/122/28 53/123/28 +f 53/123/28 52/124/28 55/99/28 +f 52/124/28 51/97/28 55/99/28 +f 55/100/29 63/125/29 64/101/29 +f 61/103/30 62/126/30 52/104/30 +f 59/106/31 60/127/31 50/107/31 +f 58/109/32 63/125/32 55/100/32 +f 64/111/33 61/103/33 53/105/33 +f 62/113/34 59/106/34 51/108/34 +f 60/115/35 57/118/35 49/116/35 +f 57/118/36 58/128/36 56/119/36 +o pY +v -0.000000 0.500000 -0.187500 +v -0.132583 0.500000 -0.132582 +v -0.187500 0.500000 0.000000 +v -0.132583 0.500000 0.132582 +v 0.000000 0.500000 0.187500 +v 0.132583 0.500000 0.132582 +v 0.187500 0.500000 0.000000 +v 0.132583 0.500000 -0.132582 +v -0.000000 0.000000 -0.187500 +v 0.132583 0.000000 -0.132582 +v -0.187500 0.000000 0.000000 +v -0.132583 0.000000 -0.132582 +v 0.000000 0.000000 0.187500 +v -0.132583 0.000000 0.132582 +v 0.187500 0.000000 0.000000 +v 0.132583 0.000000 0.132582 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.250000 0.500000 +vt 0.250000 1.000000 +vt 0.125000 0.500000 +vt 0.250000 0.500000 +vt 0.125000 1.000000 +vt 0.000000 0.500000 +vt 0.624326 0.187500 +vt 0.437500 0.374326 +vt 0.250674 0.187500 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt 0.305394 0.055394 +vt 0.437500 0.000674 +vt 0.569606 0.055394 +vt 0.569606 0.319606 +vt 0.305394 0.319606 +vn 0.9239 0.0000 0.3827 +vn -0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 0.3827 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 -0.9239 +vn 0.0000 1.0000 0.0000 +s off +f 71/129/37 80/130/37 79/131/37 +f 69/132/38 78/133/38 77/134/38 +f 67/135/39 76/136/39 75/137/39 +f 72/138/40 79/131/40 74/139/40 +f 70/140/41 77/134/41 80/141/41 +f 68/142/42 75/137/42 78/143/42 +f 66/144/43 73/145/43 76/146/43 +f 65/147/44 74/148/44 73/145/44 +f 69/149/45 71/150/45 65/151/45 +f 71/129/37 70/152/37 80/130/37 +f 69/132/38 68/153/38 78/133/38 +f 67/135/39 66/154/39 76/136/39 +f 72/138/40 71/129/40 79/131/40 +f 70/140/41 69/132/41 77/134/41 +f 68/142/42 67/135/42 75/137/42 +f 66/144/43 65/147/43 73/145/43 +f 65/147/44 72/155/44 74/148/44 +f 65/151/45 66/156/45 69/149/45 +f 66/156/45 67/157/45 69/149/45 +f 67/157/45 68/158/45 69/149/45 +f 69/149/45 70/159/45 71/150/45 +f 71/150/45 72/160/45 65/151/45 +o nnn +v 0.000000 -0.187500 0.000000 +v -0.132582 -0.132583 0.000000 +v -0.187500 -0.000000 0.000000 +v -0.132582 -0.000000 0.132583 +v 0.000000 -0.000000 0.187500 +v 0.000000 -0.132583 0.132583 +vt 0.250000 0.500000 +vt 0.375000 0.375000 +vt 0.375000 0.625000 +vt 0.500000 0.500000 +vt 0.625000 0.375000 +vt 0.625000 0.625000 +vn -0.3574 -0.8629 0.3574 +vn -0.3574 -0.3574 0.8629 +vn -0.5774 -0.5774 0.5774 +vn -0.8629 -0.3574 0.3574 +s off +f 81/161/46 86/162/46 82/163/46 +f 84/164/47 86/162/47 85/165/47 +f 86/162/48 84/164/48 82/163/48 +f 82/163/49 84/164/49 83/166/49 +o nnp +v 0.000000 -0.187500 0.000000 +v -0.132582 -0.132583 0.000000 +v -0.187500 -0.000000 0.000000 +v 0.000000 -0.000000 -0.187500 +v -0.132582 -0.000000 -0.132583 +v 0.000000 -0.132583 -0.132583 +vt 0.250000 0.500000 +vt 0.375000 0.375000 +vt 0.375000 0.625000 +vt 0.625000 0.625000 +vt 0.500000 0.500000 +vt 0.625000 0.375000 +vn -0.3574 -0.8629 -0.3574 +vn -0.3574 -0.3574 -0.8629 +vn -0.5774 -0.5774 -0.5774 +vn -0.8629 -0.3574 -0.3574 +s off +f 87/167/50 88/168/50 92/169/50 +f 90/170/51 92/169/51 91/171/51 +f 92/169/52 88/168/52 91/171/52 +f 88/168/53 89/172/53 91/171/53 +o pnp +v 0.187500 -0.000000 0.000000 +v 0.132583 -0.132583 0.000000 +v 0.000000 -0.187500 0.000000 +v 0.132583 -0.000000 -0.132583 +v 0.000000 -0.000000 -0.187500 +v 0.000000 -0.132583 -0.132583 +vt 0.375000 0.625000 +vt 0.250000 0.500000 +vt 0.375000 0.375000 +vt 0.500000 0.500000 +vt 0.625000 0.375000 +vt 0.625000 0.625000 +vn 0.3574 -0.8629 -0.3574 +vn 0.3574 -0.3574 -0.8629 +vn 0.5774 -0.5774 -0.5774 +vn 0.8629 -0.3574 -0.3574 +s off +f 94/173/54 95/174/54 98/175/54 +f 96/176/55 98/175/55 97/177/55 +f 98/175/56 96/176/56 94/173/56 +f 93/178/57 94/173/57 96/176/57 +o pnn +v 0.187500 -0.000000 0.000000 +v 0.132583 -0.132583 0.000000 +v 0.000000 -0.187500 0.000000 +v 0.000000 -0.000000 0.187500 +v 0.132583 -0.000000 0.132583 +v 0.000000 -0.132583 0.132583 +vt 0.375000 0.375000 +vt 0.375000 0.625000 +vt 0.250000 0.500000 +vt 0.625000 0.375000 +vt 0.500000 0.500000 +vt 0.625000 0.625000 +vn 0.3574 -0.8629 0.3574 +vn 0.8629 -0.3574 0.3574 +vn 0.5774 -0.5774 0.5774 +vn 0.3574 -0.3574 0.8629 +s off +f 100/179/58 104/180/58 101/181/58 +f 99/182/59 103/183/59 100/179/59 +f 104/180/60 100/179/60 103/183/60 +f 103/183/61 102/184/61 104/180/61 +o ppn +v 0.187500 -0.000000 0.000000 +v 0.000000 0.187500 0.000000 +v 0.132583 0.132582 0.000000 +v 0.000000 -0.000000 0.187500 +v 0.132583 -0.000000 0.132583 +v 0.000000 0.132582 0.132583 +vt 0.625000 0.375000 +vt 0.500000 0.500000 +vt 0.375000 0.375000 +vt 0.250000 0.500000 +vt 0.375000 0.625000 +vt 0.625000 0.625000 +vn 0.3574 0.3574 0.8629 +vn 0.3574 0.8629 0.3574 +vn 0.8629 0.3574 0.3574 +vn 0.5774 0.5774 0.5774 +s off +f 108/185/62 109/186/62 110/187/62 +f 106/188/63 110/187/63 107/189/63 +f 107/189/64 109/186/64 105/190/64 +f 109/186/65 107/189/65 110/187/65 +o npn +v -0.187500 -0.000000 0.000000 +v -0.132582 0.132582 0.000000 +v 0.000000 0.187500 0.000000 +v -0.132582 -0.000000 0.132583 +v 0.000000 -0.000000 0.187500 +v 0.000000 0.132582 0.132583 +vt 0.625000 0.375000 +vt 0.500000 0.500000 +vt 0.375000 0.375000 +vt 0.375000 0.625000 +vt 0.625000 0.625000 +vt 0.250000 0.500000 +vn -0.8629 0.3574 0.3574 +vn -0.5774 0.5774 0.5774 +vn -0.3574 0.3574 0.8629 +vn -0.3574 0.8629 0.3574 +s off +f 111/191/66 114/192/66 112/193/66 +f 114/192/67 116/194/67 112/193/67 +f 114/192/68 115/195/68 116/194/68 +f 112/193/69 116/194/69 113/196/69 +o npp +v -0.187500 -0.000000 0.000000 +v -0.132582 0.132582 0.000000 +v 0.000000 0.187500 0.000000 +v 0.000000 -0.000000 -0.187500 +v -0.132582 -0.000000 -0.132583 +v 0.000000 0.132582 -0.132583 +vt 0.625000 0.375000 +vt 0.500000 0.500000 +vt 0.375000 0.375000 +vt 0.625000 0.625000 +vt 0.375000 0.625000 +vt 0.250000 0.500000 +vn -0.3574 0.3574 -0.8629 +vn -0.8629 0.3574 -0.3574 +vn -0.5774 0.5774 -0.5774 +vn -0.3574 0.8629 -0.3574 +s off +f 120/197/70 121/198/70 122/199/70 +f 117/200/71 118/201/71 121/198/71 +f 121/198/72 118/201/72 122/199/72 +f 118/201/73 119/202/73 122/199/73 +o ppp +v 0.187500 -0.000000 0.000000 +v 0.000000 0.187500 0.000000 +v 0.132583 0.132582 0.000000 +v 0.132583 -0.000000 -0.132583 +v 0.000000 -0.000000 -0.187500 +v 0.000000 0.132582 -0.132583 +vt 0.500000 0.500000 +vt 0.625000 0.625000 +vt 0.375000 0.625000 +vt 0.250000 0.500000 +vt 0.375000 0.375000 +vt 0.625000 0.375000 +vn 0.3574 0.3574 -0.8629 +vn 0.3574 0.8629 -0.3574 +vn 0.5774 0.5774 -0.5774 +vn 0.8629 0.3574 -0.3574 +s off +f 126/203/74 127/204/74 128/205/74 +f 124/206/75 125/207/75 128/205/75 +f 128/205/76 125/207/76 126/203/76 +f 125/207/77 123/208/77 126/203/77 +o nY +v -0.000000 -0.500000 -0.187500 +v -0.132583 -0.500000 -0.132582 +v -0.187500 -0.500000 0.000000 +v -0.132583 -0.500000 0.132582 +v 0.000000 -0.500000 0.187500 +v 0.132583 -0.500000 0.132582 +v 0.187500 -0.500000 0.000000 +v 0.132583 -0.500000 -0.132582 +v -0.000000 0.000000 -0.187500 +v 0.132583 0.000000 -0.132582 +v -0.187500 0.000000 0.000000 +v -0.132583 0.000000 -0.132582 +v 0.000000 0.000000 0.187500 +v -0.132583 0.000000 0.132582 +v 0.187500 0.000000 0.000000 +v 0.132583 0.000000 0.132582 +vt 0.305394 0.055394 +vt 0.437500 0.000674 +vt 0.437500 0.374326 +vt 0.125000 0.500000 +vt -0.000000 0.000000 +vt 0.125000 0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.125000 -0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.125000 -0.000000 +vt 0.250000 0.500000 +vt 0.250000 0.000000 +vt 0.250000 0.500000 +vt 0.250000 -0.000000 +vt 0.250000 0.500000 +vt 0.250000 -0.000000 +vt 0.250000 0.500000 +vt 0.125000 -0.000000 +vt 0.250000 -0.000000 +vt 0.125000 0.500000 +vt -0.000000 -0.000000 +vt 0.569606 0.055394 +vt 0.624326 0.187500 +vt 0.569606 0.319606 +vt 0.305394 0.319606 +vt 0.250674 0.187500 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vt 0.000000 0.500000 +vn 0.0000 -1.0000 0.0000 +vn 0.9239 0.0000 0.3827 +vn -0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 0.3827 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 -0.9239 +s off +f 132/209/78 131/210/78 135/211/78 +f 143/212/79 134/213/79 135/214/79 +f 141/215/80 132/216/80 133/217/80 +f 139/218/81 130/219/81 131/220/81 +f 138/221/82 135/214/82 136/222/82 +f 144/223/83 133/217/83 134/224/83 +f 142/225/84 131/220/84 132/226/84 +f 140/227/85 129/228/85 130/229/85 +f 137/230/86 136/231/86 129/228/86 +f 131/210/78 130/232/78 135/211/78 +f 130/232/78 129/233/78 135/211/78 +f 129/233/78 136/234/78 135/211/78 +f 135/211/78 134/235/78 133/236/78 +f 133/236/78 132/209/78 135/211/78 +f 143/212/79 144/237/79 134/213/79 +f 141/215/80 142/238/80 132/216/80 +f 139/218/81 140/239/81 130/219/81 +f 138/221/82 143/212/82 135/214/82 +f 144/223/83 141/215/83 133/217/83 +f 142/225/84 139/218/84 131/220/84 +f 140/227/85 137/230/85 129/228/85 +f 137/230/86 138/240/86 136/231/86 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 6c9c290f8..1f118e536 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -5,20 +5,20 @@ "misc.nullMine": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "block.crateBreak": {"category": "block", "sounds": ["block/crateBreak1", "block/crateBreak2", "block/crateBreak3", "block/crateBreak4", "block/crateBreak5"]}, - "block.shutdown": {"category": "ntmMachines", "sounds": [{"name": "block/shutdown", "stream": true}]}, - "block.minerOperate": {"category": "ntmMachines", "sounds": [{"name": "block/minerOperate", "stream": true}]}, - "block.assemblerOperate": {"category": "ntmMachines", "sounds": [{"name": "block/assemblerOperate", "stream": true}]}, - "block.chemplantOperate": {"category": "ntmMachines", "sounds": [{"name": "block/chemplantOperate", "stream": true}]}, - "block.dieselOperate": {"category": "ntmMachines", "sounds": [{"name": "block/dieselOperate", "stream": true}]}, - "block.igeneratorOperate": {"category": "ntmMachines", "sounds": [{"name": "block/igeneratorOperate", "stream": true}]}, - "block.turbofanOperate": {"category": "ntmMachines", "sounds": [{"name": "block/turbofanOperate", "stream": true}]}, - "block.pressOperate": {"category": "ntmMachines", "sounds": [{"name": "block/pressOperate", "stream": false}]}, + "block.shutdown": {"category": "block", "sounds": [{"name": "block/shutdown", "stream": true}]}, + "block.minerOperate": {"category": "block", "sounds": [{"name": "block/minerOperate", "stream": true}]}, + "block.assemblerOperate": {"category": "block", "sounds": [{"name": "block/assemblerOperate", "stream": true}]}, + "block.chemplantOperate": {"category": "block", "sounds": [{"name": "block/chemplantOperate", "stream": true}]}, + "block.dieselOperate": {"category": "block", "sounds": [{"name": "block/dieselOperate", "stream": true}]}, + "block.igeneratorOperate": {"category": "block", "sounds": [{"name": "block/igeneratorOperate", "stream": true}]}, + "block.turbofanOperate": {"category": "block", "sounds": [{"name": "block/turbofanOperate", "stream": true}]}, + "block.pressOperate": {"category": "block", "sounds": [{"name": "block/pressOperate", "stream": false}]}, "block.broadcast1": {"category": "block", "sounds": [{"name": "block/broadcast1", "stream": true}]}, "block.broadcast2": {"category": "block", "sounds": [{"name": "block/broadcast2", "stream": true}]}, "block.broadcast3": {"category": "block", "sounds": [{"name": "block/broadcast3", "stream": true}]}, - "block.sonarPing": {"category": "ntmMachines", "sounds": [{"name": "block/sonarPing", "stream": false}]}, - "block.reactorStart": {"category": "ntmMachines", "sounds": [{"name": "block/reactorStart", "stream": false}]}, - "block.reactorStop": {"category": "ntmMachines", "sounds": [{"name": "block/reactorStop", "stream": false}]}, + "block.sonarPing": {"category": "block", "sounds": [{"name": "block/sonarPing", "stream": false}]}, + "block.reactorStart": {"category": "block", "sounds": [{"name": "block/reactorStart", "stream": false}]}, + "block.reactorStop": {"category": "block", "sounds": [{"name": "block/reactorStop", "stream": false}]}, "block.vaultScrape": {"category": "block", "sounds": [{"name": "block/vaultScrape", "stream": false}]}, "block.vaultThud": {"category": "block", "sounds": [{"name": "block/vaultThud", "stream": false}]}, "block.vaultScrapeNew": {"category": "block", "sounds": [{"name": "block/vaultScrapeNew", "stream": false}]}, @@ -26,17 +26,17 @@ "block.lockOpen": {"category": "block", "sounds": [{"name": "block/lockOpen", "stream": false}]}, "block.lockHang": {"category": "block", "sounds": [{"name": "block/lockHang", "stream": false}]}, "block.debris": {"category": "block", "sounds": ["block/debris1", "block/debris2", "block/debris3"]}, - "block.centrifugeOperate": {"category": "ntmMachines", "sounds": [{"name": "block/centrifugeOperate", "stream": true}]}, + "block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": true}]}, "block.pipePlaced": {"category": "block", "sounds": [{"name": "block/pipePlaced", "stream": false}]}, - "block.missileAssembly": {"category": "ntmMachines", "sounds": [{"name": "block/missileAssembly", "stream": false}]}, - "block.missileAssembly2": {"category": "ntmMachines", "sounds": [{"name": "block/missileAssembly2", "stream": false}]}, + "block.missileAssembly": {"category": "block", "sounds": [{"name": "block/missileAssembly", "stream": false}]}, + "block.missileAssembly2": {"category": "block", "sounds": [{"name": "block/missileAssembly2", "stream": false}]}, "block.openDoor": {"category": "block", "sounds": ["block/door_open_1", "block/door_open_2"]}, "block.closeDoor": {"category": "block", "sounds": ["block/door_close_1", "block/door_close_2"]}, - "block.soyuzReady": {"category": "ntmMachines", "sounds": [{"name": "block/soyuzReady", "stream": true}]}, + "block.soyuzReady": {"category": "block", "sounds": [{"name": "block/soyuzReady", "stream": true}]}, "block.screm": {"category": "block", "sounds": ["screm/scream1", "screm/scream01", "screm/scream2", "screm/scream02", "screm/scream3", "screm/scream03", "screm/scream4", "screm/scream04", "screm/scream5", "screm/scream05", "screm/scream6", "screm/scream06", "screm/scream7", "screm/scream07", "screm/scream08", "screm/scream09", "screm/scream10", "screm/scream11", "screm/scream12", "screm/scream13", "screm/scream14", "screm/scream15", "screm/scream16", "screm/scream17", "screm/scream18", "screm/scream19", "screm/scream20", "screm/scream21", "screm/scream22", "screm/scream23", "screm/scream24", "screm/scream25"]}, "block.rbmk_explosion": {"category": "block", "sounds": [{"name": "block/rbmk_explosion", "stream": false}]}, "block.rbmk_az5_cover": {"category": "block", "sounds": [{"name": "block/rbmk_az5_cover", "stream": false}]}, - "block.chungusLever": {"category": "ntmMachines", "sounds": [{"name": "block/chungusLever", "stream": false}]}, + "block.chungusLever": {"category": "block", "sounds": [{"name": "block/chungusLever", "stream": false}]}, "block.bobble": {"category": "block", "sounds": [{"name": "block/bobble", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/textures/blocks/block_smore_side.png b/src/main/resources/assets/hbm/textures/blocks/block_smore_side.png index f00014e1a..071a015ff 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/block_smore_side.png and b/src/main/resources/assets/hbm/textures/blocks/block_smore_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/observer_back_off.png b/src/main/resources/assets/hbm/textures/blocks/observer_back_off.png new file mode 100644 index 000000000..5f770a5a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/observer_back_off.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/observer_back_on.png b/src/main/resources/assets/hbm/textures/blocks/observer_back_on.png new file mode 100644 index 000000000..25d538d75 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/observer_back_on.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/observer_front.png b/src/main/resources/assets/hbm/textures/blocks/observer_front.png new file mode 100644 index 000000000..a52922d72 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/observer_front.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/observer_front.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/observer_front.png.mcmeta new file mode 100644 index 000000000..754e4e96f --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/observer_front.png.mcmeta @@ -0,0 +1,105 @@ +{ + "animation": { + "frames": [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 2, + 1 + ] + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/observer_side.png b/src/main/resources/assets/hbm/textures/blocks/observer_side.png new file mode 100644 index 000000000..6c0d38dca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/observer_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png b/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png index 63c77c56f..40dfc4cf0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png and b/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_copper.png b/src/main/resources/assets/hbm/textures/blocks/ore_copper.png index fb0dafefb..56901b0b5 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/ore_copper.png and b/src/main/resources/assets/hbm/textures/blocks/ore_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_1.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_1.png new file mode 100644 index 000000000..4734b44ff Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_10.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_10.png new file mode 100644 index 000000000..68105a382 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_10.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_2.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_2.png new file mode 100644 index 000000000..20355496d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_3.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_3.png new file mode 100644 index 000000000..1ca9e37fc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_4.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_4.png new file mode 100644 index 000000000..df4ffe5c1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_4.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_5.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_5.png new file mode 100644 index 000000000..34b4c9d9a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_5.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_6.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_6.png new file mode 100644 index 000000000..64be59eba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_6.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_7.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_7.png new file mode 100644 index 000000000..998362475 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_7.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_8.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_8.png new file mode 100644 index 000000000..39858c8bb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_8.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_random_9.png b/src/main/resources/assets/hbm/textures/blocks/ore_random_9.png new file mode 100644 index 000000000..78fb424b2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/ore_random_9.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pipe_neo.png b/src/main/resources/assets/hbm/textures/blocks/pipe_neo.png new file mode 100644 index 000000000..37c9b3699 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pipe_neo.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/pipe_neo_overlay.png b/src/main/resources/assets/hbm/textures/blocks/pipe_neo_overlay.png new file mode 100644 index 000000000..7e999b57b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/pipe_neo_overlay.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png b/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png new file mode 100644 index 000000000..a1ba54be6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.asbestos.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.asbestos.png new file mode 100644 index 000000000..49a66bd49 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.asbestos.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.fluorite.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.fluorite.png new file mode 100644 index 000000000..a17615c91 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.fluorite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.sulfur.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.sulfur.png new file mode 100644 index 000000000..f1ffcd47d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.sulfur.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.asbestos.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.asbestos.png new file mode 100644 index 000000000..0f2704ed3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.asbestos.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.fluorite.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.fluorite.png new file mode 100644 index 000000000..2e949cb89 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.fluorite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.sulfur.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.sulfur.png new file mode 100644 index 000000000..6ab1b26d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.sulfur.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_cracked.png b/src/main/resources/assets/hbm/textures/blocks/stone_cracked.png new file mode 100644 index 000000000..2e76ed911 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_cracked.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_gems.png b/src/main/resources/assets/hbm/textures/blocks/stone_gems.png new file mode 100644 index 000000000..6bf8cf21b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_gems.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.asbestos.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.asbestos.png new file mode 100644 index 000000000..d3c7c886c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_resource.asbestos.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.fluorite.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.fluorite.png new file mode 100644 index 000000000..1d499399a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_resource.fluorite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.sulfur.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.sulfur.png new file mode 100644 index 000000000..a0d26e86b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_resource.sulfur.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.sulfur_alt.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.sulfur_alt.png new file mode 100644 index 000000000..6ec700547 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_resource.sulfur_alt.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png new file mode 100644 index 000000000..3dbaa35c6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png.mcmeta new file mode 100644 index 000000000..de3267f0d --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_flowing.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png new file mode 100644 index 000000000..34f1a6bc4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/sulfuric_acid_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/src/main/resources/assets/hbm/textures/blocks/water_flow.png b/src/main/resources/assets/hbm/textures/blocks/water_flow.png new file mode 100644 index 000000000..e72280c42 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/water_flow.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta new file mode 100644 index 000000000..de3267f0d --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/water_flow.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/textures/blocks/water_still.png b/src/main/resources/assets/hbm/textures/blocks/water_still.png new file mode 100644 index 000000000..c7e90b073 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/water_still.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta b/src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta new file mode 100644 index 000000000..4b721e09a --- /dev/null +++ b/src/main/resources/assets/hbm/textures/blocks/water_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/crackoil.png b/src/main/resources/assets/hbm/textures/gui/fluids/crackoil.png new file mode 100644 index 000000000..74f771fa1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/crackoil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/sulfuric_acid.png b/src/main/resources/assets/hbm/textures/gui/fluids/sulfuric_acid.png new file mode 100644 index 000000000..18eac93ac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/sulfuric_acid.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei.png index 48188cfd4..ecdd69550 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei.png and b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bucket_sulfuric_acid.png b/src/main/resources/assets/hbm/textures/items/bucket_sulfuric_acid.png new file mode 100644 index 000000000..d1863b06d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bucket_sulfuric_acid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/can_mug.png b/src/main/resources/assets/hbm/textures/items/can_mug.png new file mode 100644 index 000000000..745790a97 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/can_mug.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_DYNAMITE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_DYNAMITE.png new file mode 100644 index 000000000..f044bbf39 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_DYNAMITE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_arsenic.png b/src/main/resources/assets/hbm/textures/items/circuit_arsenic.png new file mode 100644 index 000000000..142a7f4a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/circuit_arsenic.png differ diff --git a/src/main/resources/assets/hbm/textures/items/circuit_arsenic_raw.png b/src/main/resources/assets/hbm/textures/items/circuit_arsenic_raw.png new file mode 100644 index 000000000..55b308cf7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/circuit_arsenic_raw.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_arsenic.png b/src/main/resources/assets/hbm/textures/items/ingot_arsenic.png new file mode 100644 index 000000000..6b4123871 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_arsenic.png differ diff --git a/src/main/resources/assets/hbm/textures/items/nugget_arsenic.png b/src/main/resources/assets/hbm/textures/items/nugget_arsenic.png new file mode 100644 index 000000000..a59ba3521 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/nugget_arsenic.png differ diff --git a/src/main/resources/assets/hbm/textures/items/power_net_tool.png b/src/main/resources/assets/hbm/textures/items/power_net_tool.png new file mode 100644 index 000000000..8a333cbf0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/power_net_tool.png differ diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png b/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png new file mode 100644 index 000000000..97b7a7538 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png differ diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapeVaer.png b/src/main/resources/assets/hbm/textures/models/capes/CapeVaer.png new file mode 100644 index 000000000..5b7939981 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/capes/CapeVaer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/chemfac.png b/src/main/resources/assets/hbm/textures/models/machines/chemfac.png index 5686695b8..b6b29ac6c 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/chemfac.png and b/src/main/resources/assets/hbm/textures/models/machines/chemfac.png differ diff --git a/src/main/resources/assets/hbm/textures/models/network/pipe_anchor.png b/src/main/resources/assets/hbm/textures/models/network/pipe_anchor.png new file mode 100644 index 000000000..48e045fef Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/network/pipe_anchor.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_ACID.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ACID.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ACID.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ACID.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_AMAT.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_AMAT.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_AMAT.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_AMAT.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_AROMATICS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_AROMATICS.png new file mode 100644 index 000000000..f7f512162 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_AROMATICS.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_ASCHRAB.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ASCHRAB.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ASCHRAB.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ASCHRAB.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BALEFIRE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BALEFIRE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BALEFIRE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BALEFIRE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BIOFUEL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOFUEL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BIOFUEL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOFUEL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BIOGAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOGAS.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BIOGAS.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BIOGAS.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_BITUMEN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_BITUMEN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_BITUMEN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_BITUMEN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_CARBONDIOXIDE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_CARBONDIOXIDE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_CARBONDIOXIDE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_CARBONDIOXIDE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS.png new file mode 100644 index 000000000..bf7871d69 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS_LEADED.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS_LEADED.png new file mode 100644 index 000000000..7315d60eb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALGAS_LEADED.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALOIL.png new file mode 100644 index 000000000..438195a4f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COALOIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_COOLANT.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_COOLANT.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_COOLANT.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_COOLANT.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_CRACKOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_CRACKOIL.png new file mode 100644 index 000000000..0f2f3e3d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_CRACKOIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_CRYOGEL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_CRYOGEL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_CRYOGEL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_CRYOGEL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_DEATH.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DEATH.png new file mode 100644 index 000000000..3f93d9949 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DEATH.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_DEUTERIUM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DEUTERIUM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_DEUTERIUM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_DEUTERIUM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_DIESEL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_DIESEL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL_CRACK.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL_CRACK.png new file mode 100644 index 000000000..4e0714109 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_DIESEL_CRACK.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_ENDERJUICE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ENDERJUICE.png new file mode 100644 index 000000000..4573c3d26 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ENDERJUICE.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_ETHANOL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ETHANOL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ETHANOL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ETHANOL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_FRACKSOL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_FRACKSOL.png new file mode 100644 index 000000000..7ff623141 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_FRACKSOL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_GAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GAS.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_GAS.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_GAS.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE.png new file mode 100644 index 000000000..0cee2a546 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE_LEADED.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE_LEADED.png new file mode 100644 index 000000000..d53e2f399 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_GASOLINE_LEADED.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_HEATINGOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEATINGOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HEATINGOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HEATINGOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_HEAVYOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HEAVYOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYWATER.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYWATER.png new file mode 100644 index 000000000..7686c05db Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HEAVYWATER.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_HELIUM3.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HELIUM3.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HELIUM3.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HELIUM3.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTCRACKOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTCRACKOIL.png new file mode 100644 index 000000000..370d859dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTCRACKOIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_HOTOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HOTOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_HOTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTSTEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HOTSTEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HOTSTEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_HYDROGEN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_HYDROGEN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_HYDROGEN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_HYDROGEN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_KEROSENE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_KEROSENE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_KEROSENE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_KEROSENE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_LAVA.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LAVA.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LAVA.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LAVA.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_LIGHTOIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LIGHTOIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL_CRACK.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL_CRACK.png new file mode 100644 index 000000000..b6231173d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LIGHTOIL_CRACK.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_LPG.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LPG.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LPG.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LPG.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_LUBRICANT.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_LUBRICANT.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_LUBRICANT.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_LUBRICANT.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_MERCURY.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_MERCURY.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_MERCURY.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_MERCURY.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_NAPHTHA.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_NAPHTHA.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA_CRACK.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA_CRACK.png new file mode 100644 index 000000000..3903e7eea Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NAPHTHA_CRACK.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_NITAN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NITAN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_NITAN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_NITAN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_NONE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_NONE.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_NONE.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_NONE.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_OIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_OIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_OIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_OIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_OXYGEN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_OXYGEN.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_OXYGEN.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_OXYGEN.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_PAIN.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PAIN.png new file mode 100644 index 000000000..6a1889960 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PAIN.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_PETROIL.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_PETROIL.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL_LEADED.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL_LEADED.png new file mode 100644 index 000000000..bdef4b0ad Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROIL_LEADED.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_PETROLEUM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROLEUM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_PETROLEUM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_PETROLEUM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_PUF6.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_PUF6.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_PUF6.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_PUF6.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_RECLAIMED.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_RECLAIMED.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_RECLAIMED.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_RECLAIMED.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_SALIENT.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SALIENT.png new file mode 100644 index 000000000..c0561ddf5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SALIENT.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_SAS3.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SAS3.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_SAS3.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_SAS3.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_SCHRABIDIC.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SCHRABIDIC.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_SCHRABIDIC.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_SCHRABIDIC.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_SMEAR.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SMEAR.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_SMEAR.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_SMEAR.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_SPENTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SPENTSTEAM.png new file mode 100644 index 000000000..3565aab4a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SPENTSTEAM.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_STEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_STEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_STEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_STEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_SULFURIC_ACID.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SULFURIC_ACID.png new file mode 100644 index 000000000..5f67bb26d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SULFURIC_ACID.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_SUPERHOTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_SUPERHOTSTEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_SUPERHOTSTEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_SUPERHOTSTEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_TRITIUM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_TRITIUM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_TRITIUM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_TRITIUM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_UF6.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_UF6.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_UF6.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_UF6.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_ULTRAHOTSTEAM.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_ULTRAHOTSTEAM.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_ULTRAHOTSTEAM.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_ULTRAHOTSTEAM.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_UNSATURATEDS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_UNSATURATEDS.png new file mode 100644 index 000000000..2874679cb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_UNSATURATEDS.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEFLUID.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEFLUID.png new file mode 100644 index 000000000..028463ab4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEFLUID.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEGAS.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEGAS.png new file mode 100644 index 000000000..881c6f338 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WASTEGAS.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank_WATER.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WATER.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_WATER.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_WATER.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_WATZ.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_WATZ.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_WATZ.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_WATZ.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_XENON.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_XENON.png similarity index 100% rename from src/main/resources/assets/hbm/textures/models/tank_XENON.png rename to src/main/resources/assets/hbm/textures/models/tank_label/tank_XENON.png diff --git a/src/main/resources/assets/hbm/textures/models/tank_label/tank_XPJUICE.png b/src/main/resources/assets/hbm/textures/models/tank_label/tank_XPJUICE.png new file mode 100644 index 000000000..c1cedc9b1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank_label/tank_XPJUICE.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 07980a6b6..c4974df8f 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4179", + "version":"1.0.27_X4193", "mcversion": "1.7.10", "url": "", "updateUrl": "",