Merge remote-tracking branch 'HbmMods/master'

This commit is contained in:
Vaern 2022-03-27 13:21:52 -07:00
commit b1054fe10c
106 changed files with 10332 additions and 4954 deletions

View File

@ -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,76 @@ 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<Integer, IEnergyConductor> copy) {
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 && neighbor.getPowerNet() != null && this.canReevaluate() && neighbor.canReevaluate()) {
if(this.getPowerNet() == null) {
neighbor.getPowerNet().joinLink(this);
} else {
this.getPowerNet().joinNetworks(neighbor.getPowerNet());
}
}
}
}
/**
* 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<int[]> getConnectionPoints() {
List<int[]> 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;
}
}

View File

@ -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,7 @@ import net.minecraft.tileentity.TileEntity;
public class PowerNet implements IPowerNet {
private boolean valid = true;
private List<IEnergyConductor> links = new ArrayList();
private HashMap<Integer, IEnergyConductor> links = new HashMap();
private List<IEnergyConnector> subscribers = new ArrayList();
@Override
@ -23,8 +24,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 +42,14 @@ public class PowerNet implements IPowerNet {
conductor.getPowerNet().leaveLink(conductor);
conductor.setPowerNet(this);
this.getLinks().add(conductor);
this.links.put(conductor.getIdentity(), conductor);
return this;
}
@Override
public void leaveLink(IEnergyConductor conductor) {
conductor.setPowerNet(null);
this.getLinks().remove(conductor);
this.links.remove(conductor.getIdentity());
}
@Override
@ -69,7 +69,9 @@ public class PowerNet implements IPowerNet {
@Override
public List<IEnergyConductor> getLinks() {
return this.links;
List<IEnergyConductor> linkList = new ArrayList();
linkList.addAll(this.links.values());
return linkList;
}
@Override
@ -80,10 +82,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);
}
@ -135,5 +136,22 @@ public class PowerNet implements IPowerNet {
}
@Override
public void reevaluate() { }
public void reevaluate() {
HashMap<Integer, IEnergyConductor> copy = new HashMap(links);
for(IEnergyConductor link : copy.values()) {
this.leaveLink(link);
}
for(IEnergyConductor link : copy.values()) {
link.setPowerNet(null);
link.reevaluate(copy);
if(link.getPowerNet() == null) {
link.setPowerNet(new PowerNet().joinLink(link));
}
}
}
}

View File

@ -2,9 +2,9 @@ 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);
}

View File

@ -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,14 +17,14 @@ 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
* @param dir
* @return
*/
public default boolean canConnect(ForgeDirection dir) {
public default boolean canConnect(FluidType type, ForgeDirection dir) {
return dir != ForgeDirection.UNKNOWN;
}
@ -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 = false;
}

View File

@ -0,0 +1,13 @@
package api.hbm.fluid;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public interface IFluidUser extends IFluidConnector {
/*public default void updateStandardPipes(World world, int x, int y, int z) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS)
this.trySubscribe(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir);
}*/
}

View File

@ -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<IFluidConductor> getLinks();
public HashSet<IFluidConnector> 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();
}

View File

@ -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<IFluidConductor> links = new ArrayList();
private HashSet<IFluidConnector> 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<IFluidConductor> getLinks() {
return links;
}
@Override
public HashSet<IFluidConnector> 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<IFluidConnector> subList = new ArrayList(subscribers);
List<Long> 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;
}
}

View File

@ -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<? extends Enum> theEnum;
public boolean multiName;
private boolean multiTexture;
public BlockEnumMulti(Material mat, Class<? extends Enum> 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];
}
}

View File

@ -0,0 +1,8 @@
package com.hbm.blocks;
public class BlockEnums {
public static enum EnumStoneType {
SULFUR
}
}

View File

@ -1,6 +1,5 @@
package com.hbm.blocks;
import java.util.ArrayList;
import java.util.List;
import org.lwjgl.opengl.GL11;
@ -29,23 +28,24 @@ public interface ILookOverlay {
int pX = resolution.getScaledWidth() / 2 + 8;
int pZ = resolution.getScaledHeight() / 2;
List<String> exceptions = new ArrayList();
exceptions.add("x");
exceptions.add("y");
exceptions.add("z");
exceptions.add("items");
exceptions.add("id");
mc.fontRenderer.drawString(title, pX + 1, pZ - 9, bgCol);
mc.fontRenderer.drawString(title, pX, pZ - 10, titleCol);
for(String line : text) {
if(exceptions.contains(line))
continue;
mc.fontRenderer.drawStringWithShadow(line, pX, pZ, 0xFFFFFF);
pZ += 10;
try {
for(String line : text) {
int color = 0xFFFFFF;
if(line.startsWith("&[")) {
int end = line.lastIndexOf("&]");
color = Integer.parseInt(line.substring(2, end));
line = line.substring(end + 2);
}
mc.fontRenderer.drawStringWithShadow(line, pX, pZ, color);
pZ += 10;
}
} catch(Exception ex) {
mc.fontRenderer.drawStringWithShadow(ex.getClass().getSimpleName(), pX, pZ + 10, 0xff0000);
}
GL11.glDisable(GL11.GL_BLEND);

View File

@ -50,6 +50,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;
@ -132,6 +133,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;
@ -475,6 +479,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;
@ -1252,6 +1259,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");
@ -1338,6 +1346,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 BlockEnumMulti(Material.rock, BlockEnums.EnumStoneType.class, true, true).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");
@ -1677,6 +1688,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");
@ -2260,6 +2274,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());
@ -2374,6 +2389,11 @@ public class ModBlocks {
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());
@ -2826,6 +2846,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());
@ -2937,7 +2960,7 @@ public class ModBlocks {
GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName());
GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName());
GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName());
GameRegistry.registerBlock(cable_diode, cable_diode.getUnlocalizedName());
GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName());
GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName());
GameRegistry.registerBlock(rf_cable, rf_cable.getUnlocalizedName());
GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName());

View File

@ -0,0 +1,70 @@
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;
}
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;
}
}

View File

@ -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;
}
}

View File

@ -224,6 +224,12 @@ public class MachineBattery extends BlockContainer implements ILookOverlay {
List<String> text = new ArrayList();
text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE");
double percent = (double) battery.getPower() / (double) battery.getMaxPower();
int charge = (int) Math.floor(percent * 10_000D);
int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8);
text.add("&[" + color + "&]" + (charge / 100D) + "%");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

@ -83,6 +83,12 @@ public class MachineFENSU extends BlockDummyable implements ILookOverlay {
List<String> text = new ArrayList();
text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE");
double percent = (double) battery.getPower() / (double) battery.getMaxPower();
int charge = (int) Math.floor(percent * 10_000D);
int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8);
text.add("&[" + color + "&]" + (charge / 100D) + "%");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

@ -6,11 +6,9 @@ import org.lwjgl.input.Keyboard;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.oil.TileEntityMachineLiquefactor;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;

View File

@ -69,7 +69,9 @@ public class MachineSolidifier extends BlockDummyable implements ITooltipProvide
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
list.add(EnumChatFormatting.YELLOW + "beb");
list.add(EnumChatFormatting.YELLOW + "A universal machine fitted with cooling systems and other");
list.add(EnumChatFormatting.YELLOW + "versatile tools for turning fluids solid using various");
list.add(EnumChatFormatting.YELLOW + "processes such as freezing and petrochemical polymerization.");
} else {
list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" +
EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" +

View File

@ -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);
}
}

View File

@ -11,6 +11,8 @@ import com.hbm.util.I18nUtil;
import api.hbm.block.IToolable;
import api.hbm.energy.IEnergyUser;
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.BlockPistonBase;
import net.minecraft.block.material.Material;
@ -18,12 +20,12 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
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.EnumChatFormatting;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection;
@ -51,6 +53,12 @@ public class CableDiode extends BlockContainer implements ILookOverlay, IToolabl
return false;
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) {
return true;
}
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);

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -102,6 +102,12 @@ public class ArmorRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_legs, 1), new Object[] { "CCC", "DXD", "C C", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_legs });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_boots, 1), new Object[] { "C C", "DXD", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_boots });
//Bismuth fursui- I mean armor
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_helmet, 1), new Object[] { "GPP", "P ", "FPP", 'G', Items.gold_ingot, 'P', ModItems.plate_bismuth, 'F', ModItems.rag });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_plate, 1), new Object[] { "RWR", "PCP", "SFS", 'R', ModItems.crystal_rare, 'W', ModItems.wire_gold, 'P', ModItems.plate_bismuth, 'C', ModItems.laser_crystal_bismuth, 'S', ModItems.ring_starmetal, 'F', ModItems.rag });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_legs, 1), new Object[] { "FSF", " ", "FSF", 'F', ModItems.rag, 'S', ModItems.ring_starmetal });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bismuth_boots, 1), new Object[] { "W W", "P P", 'W', ModItems.wire_gold, 'P', ModItems.plate_bismuth });
//Euphemium armor
CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_helmet, 1), new Object[] { "EEE", "E E", 'E', ModItems.plate_euphemium });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.euphemium_plate, 1), new Object[] { "EWE", "EEE", "EEE", 'E', ModItems.plate_euphemium, 'W', ModItems.watch });

View File

@ -67,8 +67,6 @@ public class EntityMinecartTest extends EntityMinecartModBase
this.explodeCart(d0);
}
}
System.out.println(this.rotationYaw);
}
@Override

View File

@ -1,80 +1,113 @@
package com.hbm.extprop;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.IExtendedEntityProperties;
public class HbmPlayerProps implements IExtendedEntityProperties {
public static final String key = "NTM_EXT_PLAYER";
public EntityPlayer player;
public boolean enableHUD = true;
public boolean enableBackpack = true;
private boolean[] keysPressed = new boolean[EnumKeybind.values().length];
public HbmPlayerProps(EntityPlayer player) {
this.player = player;
}
public static HbmPlayerProps registerData(EntityPlayer player) {
player.registerExtendedProperties(key, new HbmPlayerProps(player));
return (HbmPlayerProps) player.getExtendedProperties(key);
}
public static HbmPlayerProps getData(EntityPlayer player) {
HbmPlayerProps props = (HbmPlayerProps) player.getExtendedProperties(key);
return props != null ? props : registerData(player);
}
public boolean getKeyPressed(EnumKeybind key) {
return keysPressed[key.ordinal()];
}
public boolean isJetpackActive() {
return this.enableBackpack && getKeyPressed(EnumKeybind.JETPACK);
}
public void setKeyPressed(EnumKeybind key, boolean pressed) {
if(!getKeyPressed(key) && pressed) {
if(key == EnumKeybind.TOGGLE_JETPACK) {
this.enableBackpack = !this.enableBackpack;
if(this.enableBackpack)
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON");
else
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF");
}
if(key == EnumKeybind.TOGGLE_HEAD) {
this.enableHUD = !this.enableHUD;
if(this.enableHUD)
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON");
else
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF");
}
}
keysPressed[key.ordinal()] = pressed;
}
@Override
public void init(Entity entity, World world) { }
@Override
public void saveNBTData(NBTTagCompound compound) { }
@Override
public void loadNBTData(NBTTagCompound compound) { }
}
package com.hbm.extprop;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.common.IExtendedEntityProperties;
public class HbmPlayerProps implements IExtendedEntityProperties {
public static final String key = "NTM_EXT_PLAYER";
public EntityPlayer player;
public boolean enableHUD = true;
public boolean enableBackpack = true;
private boolean[] keysPressed = new boolean[EnumKeybind.values().length];
public static final int dashCooldownLength = 5;
public int dashCooldown = 0;
public int totalDashCount = 0;
public int stamina = 0;
public HbmPlayerProps(EntityPlayer player) {
this.player = player;
}
public static HbmPlayerProps registerData(EntityPlayer player) {
player.registerExtendedProperties(key, new HbmPlayerProps(player));
return (HbmPlayerProps) player.getExtendedProperties(key);
}
public static HbmPlayerProps getData(EntityPlayer player) {
HbmPlayerProps props = (HbmPlayerProps) player.getExtendedProperties(key);
return props != null ? props : registerData(player);
}
public boolean getKeyPressed(EnumKeybind key) {
return keysPressed[key.ordinal()];
}
public boolean isJetpackActive() {
return this.enableBackpack && getKeyPressed(EnumKeybind.JETPACK);
}
public void setKeyPressed(EnumKeybind key, boolean pressed) {
if(!getKeyPressed(key) && pressed) {
if(key == EnumKeybind.TOGGLE_JETPACK) {
this.enableBackpack = !this.enableBackpack;
if(this.enableBackpack)
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON");
else
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF");
}
if(key == EnumKeybind.TOGGLE_HEAD) {
this.enableHUD = !this.enableHUD;
if(this.enableHUD)
MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON");
else
MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF");
}
}
keysPressed[key.ordinal()] = pressed;
}
public void setDashCooldown(int cooldown) {
this.dashCooldown = cooldown;
return;
}
public int getDashCooldown() {
return this.dashCooldown;
}
public void setStamina(int stamina) {
this.stamina = stamina;
return;
}
public int getStamina() {
return this.stamina;
}
public void setDashCount(int count) {
this.totalDashCount = count;
return;
}
public int getDashCount() {
return this.totalDashCount;
}
@Override
public void init(Entity entity, World world) { }
@Override
public void saveNBTData(NBTTagCompound compound) { }
@Override
public void loadNBTData(NBTTagCompound compound) { }
}

View File

@ -8,8 +8,11 @@ import com.hbm.config.GeneralConfig;
import com.hbm.config.RadiationConfig;
import com.hbm.explosion.ExplosionNukeSmall;
import com.hbm.extprop.HbmLivingProps;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.extprop.HbmLivingProps.ContaminationEffect;
import com.hbm.handler.radiation.ChunkRadiationManager;
import com.hbm.interfaces.IArmorModDash;
import com.hbm.items.armor.ArmorFSB;
import com.hbm.lib.ModDamageSource;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
@ -31,11 +34,13 @@ import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class EntityEffectHandler {
@ -76,6 +81,8 @@ public class EntityEffectHandler {
handleRadiation(entity);
handleDigamma(entity);
handleLungDisease(entity);
handleDashing(entity);
}
private static void handleContamination(EntityLivingBase entity) {
@ -405,4 +412,99 @@ public class EntityEffectHandler {
}
}
}
private static void handleDashing(Entity entity) {
//AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEEEEEEEEEEE
if(entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)entity;
HbmPlayerProps props = HbmPlayerProps.getData(player);
props.setDashCount(0);
ArmorFSB chestplate = null;
int armorDashCount = 0;
int armorModDashCount = 0;
if(ArmorFSB.hasFSBArmor(player)) {
ItemStack plate = player.inventory.armorInventory[2];
chestplate = (ArmorFSB)plate.getItem();
}
if(chestplate != null)
armorDashCount = chestplate.dashCount;
for(int armorSlot = 0; armorSlot < 4; armorSlot++) {
ItemStack armorStack = player.inventory.armorInventory[armorSlot];
if(armorStack != null && armorStack.getItem() instanceof ItemArmor) {
for(int modSlot = 0; modSlot < 8; modSlot++) {
ItemStack mod = ArmorModHandler.pryMods(armorStack)[modSlot];
if(mod != null && mod.getItem() instanceof IArmorModDash) {
int count = ((IArmorModDash)mod.getItem()).getDashes();
armorModDashCount += count;
}
}
}
}
int dashCount = armorDashCount + armorModDashCount;
//System.out.println(dashCount);
if(dashCount * 30 < props.getStamina())
props.setStamina(dashCount * 30);
if(dashCount > 0) {
int perDash = 30;
props.setDashCount(dashCount);
int stamina = props.getStamina();
if(props.getDashCooldown() <= 0) {
if(!player.capabilities.isFlying && player.isSneaking() && stamina >= perDash) {
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);
stamina -= perDash;
}
} else {
props.setDashCooldown(props.getDashCooldown() - 1);
}
if(stamina < props.getDashCount() * perDash) {
stamina++;
if(stamina % perDash == perDash-1) {
player.playSound("hbm:player.dashRecharge", 1.0F, (1.0F + ((1F/12F)*(stamina/perDash))));
stamina++;
}
}
props.setStamina(stamina);
}
}
}
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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));

View File

@ -0,0 +1,6 @@
package com.hbm.interfaces;
public interface IArmorModDash {
public int getDashes();
}

View File

@ -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;
@ -349,7 +350,7 @@ public class OreDictManager {
/*
* 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);
@ -572,9 +573,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<? extends Enum> en) {
Enum[] vals = en.getEnumConstants();

View File

@ -2,6 +2,7 @@ package com.hbm.inventory.container;
import com.hbm.inventory.SlotMachineOutput;
import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import com.hbm.util.InventoryUtil;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
@ -11,116 +12,110 @@ import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerNukeFurnace extends Container {
private TileEntityNukeFurnace diFurnace;
private int dualCookTime;
private int dualPower;
private int lastItemBurnTime;
public ContainerNukeFurnace(InventoryPlayer invPlayer, TileEntityNukeFurnace tedf) {
dualCookTime = 0;
dualPower = 0;
lastItemBurnTime = 0;
diFurnace = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 56, 53));
this.addSlotToContainer(new Slot(tedf, 0, 56, 53) {
@Override
public int getSlotStackLimit() {
return 1;
}
});
this.addSlotToContainer(new Slot(tedf, 1, 56, 17));
this.addSlotToContainer(new SlotMachineOutput(tedf, 2, 116, 35));
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 9; j++)
{
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
}
}
for(int i = 0; i < 9; i++)
{
for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
}
}
@Override
public void addCraftingToCrafters(ICrafting crafting) {
super.addCraftingToCrafters(crafting);
crafting.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime);
crafting.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
{
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2);
if (var4 != null && var4.getHasStack())
{
if(var4 != null && var4.getHasStack()) {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if (par2 <= 2) {
if (!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true))
{
if(par2 <= 2) {
if(!this.mergeItemStack(var5, 3, this.inventorySlots.size(), true)) {
return null;
}
}
else if (!this.mergeItemStack(var5, 1, 2, false))
{
if (!this.mergeItemStack(var5, 0, 1, false))
} else {
if(TileEntityNukeFurnace.getFuelValue(var5) > 0) {
if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 1, false))
return null;
} else {
if(!this.mergeItemStack(var5, 1, 2, false))
return null;
}
}
if (var5.stackSize == 0)
{
if(var5.stackSize == 0) {
var4.putStack((ItemStack) null);
}
else
{
} else {
var4.onSlotChanged();
}
}
return var3;
}
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return diFurnace.isUseableByPlayer(player);
}
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
for(int i = 0; i < this.crafters.size(); i++)
{
ICrafting par1 = (ICrafting)this.crafters.get(i);
if(this.dualCookTime != this.diFurnace.dualCookTime)
{
for(int i = 0; i < this.crafters.size(); i++) {
ICrafting par1 = (ICrafting) this.crafters.get(i);
if(this.dualCookTime != this.diFurnace.dualCookTime) {
par1.sendProgressBarUpdate(this, 0, this.diFurnace.dualCookTime);
}
if(this.dualPower != this.diFurnace.dualPower)
{
if(this.dualPower != this.diFurnace.dualPower) {
par1.sendProgressBarUpdate(this, 1, this.diFurnace.dualPower);
}
}
this.dualCookTime = this.diFurnace.dualCookTime;
this.dualPower = this.diFurnace.dualPower;
}
@Override
public void updateProgressBar(int i, int j) {
if(i == 0)
{
if(i == 0) {
diFurnace.dualCookTime = j;
}
if(i == 1)
{
if(i == 1) {
diFurnace.dualPower = j;
}
}

View File

@ -48,7 +48,6 @@ public class ContainerStorageDrum extends Container {
var3 = var5.copy();
if(par2 <= drum.getSizeInventory() - 1) {
if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) {
return null;
}

View File

@ -11,10 +11,10 @@ import net.minecraft.item.ItemStack;
public class ContainerWasteDrum extends Container {
private TileEntityWasteDrum diFurnace;
private TileEntityWasteDrum drum;
public ContainerWasteDrum(InventoryPlayer invPlayer, TileEntityWasteDrum tedf) {
diFurnace = tedf;
drum = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 71, 18));
this.addSlotToContainer(new Slot(tedf, 1, 89, 18));
@ -52,11 +52,11 @@ public class ContainerWasteDrum extends Container {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if(par2 <= diFurnace.getSizeInventory() - 1) {
if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, diFurnace.getSizeInventory(), this.inventorySlots.size(), true)) {
if(par2 <= drum.getSizeInventory() - 1) {
if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) {
return null;
}
} else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, 0, false)) {
} else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, drum.getSizeInventory(), false)) {
return null;
}
@ -65,6 +65,8 @@ public class ContainerWasteDrum extends Container {
} else {
var4.onSlotChanged();
}
var4.onPickupFromSlot(p_82846_1_, var5);
}
return var3;
@ -72,6 +74,6 @@ public class ContainerWasteDrum extends Container {
@Override
public boolean canInteractWith(EntityPlayer player) {
return diFurnace.isUseableByPlayer(player);
return drum.isUseableByPlayer(player);
}
}

View File

@ -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);

View File

@ -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))

View File

@ -254,6 +254,9 @@ public class AnvilRecipes {
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(POLYMER.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)},
new AnvilOutput(new ItemStack(ModItems.plate_bismuth, 1))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 2), new OreDictStack(VOLCANIC.gem(), 1)},
new AnvilOutput(new ItemStack(ModItems.plate_euphemium, 4))).setTier(6));

View File

@ -11,6 +11,7 @@ import com.hbm.interfaces.ICustomWarhead.SaltedFuel.HalfLifeType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.items.ItemEnums.EnumLegendaryType;
import com.hbm.items.armor.*;
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
import com.hbm.items.bomb.*;
import com.hbm.items.food.*;
import com.hbm.items.machine.*;
@ -305,6 +306,7 @@ public class ModItems {
public static Item plate_kevlar;
public static Item plate_dineutronium;
public static Item plate_desh;
public static Item plate_bismuth;
public static Item photo_panel;
public static Item sat_base;
public static Item thruster_nuclear;
@ -2021,6 +2023,10 @@ public class ModItems {
public static Item rpa_plate;
public static Item rpa_legs;
public static Item rpa_boots;
public static Item bismuth_helmet;
public static Item bismuth_plate;
public static Item bismuth_legs;
public static Item bismuth_boots;
public static Item bj_helmet;
public static Item bj_plate;
public static Item bj_plate_jetpack;
@ -2265,6 +2271,7 @@ public class ModItems {
public static Item cape_radiation;
public static Item cape_gasmask;
public static Item cape_schrabidium;
public static Item cape_hidden;
/*public static Item cape_hbm;
public static Item cape_dafnik;
public static Item cape_lpkukin;
@ -2642,6 +2649,7 @@ public class ModItems {
plate_kevlar = new Item().setUnlocalizedName("plate_kevlar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_kevlar");
plate_dineutronium = new Item().setUnlocalizedName("plate_dineutronium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_dineutronium");
plate_desh = new Item().setUnlocalizedName("plate_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_desh");
plate_bismuth = new ItemCustomLore().setUnlocalizedName("plate_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_bismuth");
ingot_solinium = new Item().setUnlocalizedName("ingot_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_solinium");
nugget_solinium = new Item().setUnlocalizedName("nugget_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_solinium");
photo_panel = new Item().setUnlocalizedName("photo_panel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":photo_panel");
@ -4798,6 +4806,17 @@ public class ModItems {
schrabidium_plate = new ArmorFSB(MainRegistry.aMatSchrab, 7, 1, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setUnlocalizedName("schrabidium_plate").setTextureName(RefStrings.MODID + ":schrabidium_plate");
schrabidium_legs = new ArmorFSB(MainRegistry.aMatSchrab, 7, 2, RefStrings.MODID + ":textures/armor/schrabidium_2.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_legs").setTextureName(RefStrings.MODID + ":schrabidium_legs");
schrabidium_boots = new ArmorFSB(MainRegistry.aMatSchrab, 7, 3, RefStrings.MODID + ":textures/armor/schrabidium_1.png").cloneStats((ArmorFSB) schrabidium_helmet).setCap(4F).setMod(0.1F).setUnlocalizedName("schrabidium_boots").setTextureName(RefStrings.MODID + ":schrabidium_boots");
bismuth_helmet = new ArmorBismuth(MainRegistry.aMatBismuth, 7, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png").setCap(8F).setMod(0.3F)
.addResistance("fall", 0)
.addEffect(new PotionEffect(Potion.jump.id, 20, 6))
.addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 6))
.addEffect(new PotionEffect(Potion.regeneration.id, 20, 1))
.addEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0))
.setDashCount(3)
.setUnlocalizedName("bismuth_helmet").setTextureName(RefStrings.MODID + ":bismuth_helmet");
bismuth_plate = new ArmorBismuth(MainRegistry.aMatBismuth, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_2.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_plate").setTextureName(RefStrings.MODID + ":bismuth_plate");
bismuth_legs = new ArmorBismuth(MainRegistry.aMatBismuth, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_legs").setTextureName(RefStrings.MODID + ":bismuth_legs");
bismuth_boots = new ArmorBismuth(MainRegistry.aMatBismuth, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png").cloneStats((ArmorFSB) bismuth_helmet).setCap(8F).setMod(0.3F).setUnlocalizedName("bismuth_boots").setTextureName(RefStrings.MODID + ":bismuth_boots");
titanium_helmet = new ArmorFSB(MainRegistry.aMatTitan, 7, 0, RefStrings.MODID + ":textures/armor/titanium_1.png").setMod(0.85F).setUnlocalizedName("titanium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_helmet");
titanium_plate = new ArmorFSB(MainRegistry.aMatTitan, 7, 1, RefStrings.MODID + ":textures/armor/titanium_1.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_plate");
titanium_legs = new ArmorFSB(MainRegistry.aMatTitan, 7, 2, RefStrings.MODID + ":textures/armor/titanium_2.png").cloneStats((ArmorFSB) titanium_helmet).setUnlocalizedName("titanium_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":titanium_legs");
@ -4873,6 +4892,7 @@ public class ModItems {
.setBlastProtection(0.5F)
.addResistance("monoxide", 0F)
.addResistance("fall", 0)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("t45_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_helmet");
t45_plate = new ArmorT45(aMatT45, 2, 1, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_plate");
t45_legs = new ArmorT45(aMatT45, 2, 2, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_legs");
@ -4887,6 +4907,7 @@ public class ModItems {
.setBlastProtection(0.5F)
.addResistance("monoxide", 0F)
.addResistance("fall", 0)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("steamsuit_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_helmet");
steamsuit_plate = new ArmorDesh(aMatDesh, 2, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 360000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_plate");
steamsuit_legs = new ArmorDesh(aMatDesh, 2, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", Fluids.STEAM, 360000, 500, 50, 1).cloneStats((ArmorFSB) steamsuit_helmet).setUnlocalizedName("steamsuit_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":steamsuit_legs");
@ -4906,7 +4927,9 @@ public class ModItems {
.setJump("hbm:step.iron_jump")
.setFall("hbm:step.iron_land")
.addResistance("monoxide", 0F)
.addResistance("fall", 0).setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet");
.addResistance("fall", 0)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("ajr_helmet").setTextureName(RefStrings.MODID + ":ajr_helmet");
ajr_plate = new ArmorAJR(aMatAJR, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_plate").setTextureName(RefStrings.MODID + ":ajr_plate");
ajr_legs = new ArmorAJR(aMatAJR, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_legs").setTextureName(RefStrings.MODID + ":ajr_legs");
ajr_boots = new ArmorAJR(aMatAJR, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajr_helmet).setUnlocalizedName("ajr_boots").setTextureName(RefStrings.MODID + ":ajr_boots");
@ -4923,7 +4946,9 @@ public class ModItems {
.setJump("hbm:step.iron_jump")
.setFall("hbm:step.iron_land")
.addResistance("monoxide", 0F)
.addResistance("fall", 0).setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet");
.addResistance("fall", 0)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("ajro_helmet").setTextureName(RefStrings.MODID + ":ajro_helmet");
ajro_plate = new ArmorAJRO(aMatAJR, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_plate").setTextureName(RefStrings.MODID + ":ajro_plate");
ajro_legs = new ArmorAJRO(aMatAJR, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_legs").setTextureName(RefStrings.MODID + ":ajro_legs");
ajro_boots = new ArmorAJRO(aMatAJR, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) ajro_helmet).setUnlocalizedName("ajro_boots").setTextureName(RefStrings.MODID + ":ajro_boots");
@ -4940,7 +4965,9 @@ public class ModItems {
.setStep("hbm:step.powered")
.setJump("hbm:step.powered")
.setFall("hbm:step.powered")
.addResistance("fall", 0).setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet");
.addResistance("fall", 0)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("rpa_helmet").setTextureName(RefStrings.MODID + ":rpa_helmet");
rpa_plate = new ArmorRPA(aMatAJR, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_plate").setTextureName(RefStrings.MODID + ":rpa_plate");
rpa_legs = new ArmorRPA(aMatAJR, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_legs").setTextureName(RefStrings.MODID + ":rpa_legs");
rpa_boots = new ArmorRPA(aMatAJR, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 2500000, 10000, 2000, 25).cloneStats((ArmorFSB) rpa_helmet).setUnlocalizedName("rpa_boots").setTextureName(RefStrings.MODID + ":rpa_boots");
@ -4959,13 +4986,12 @@ public class ModItems {
.addEffect(new PotionEffect(HbmPotion.radx.id, 20, 0))
.setBlastProtection(0.5F)
.setProtectionLevel(500F)
//.setGravity(0.02D)
.setStep("hbm:step.metal")
.setJump("hbm:step.iron_jump")
.setFall("hbm:step.iron_land")
.addResistance("fall", 0).setUnlocalizedName("bj_helmet").setTextureName(RefStrings.MODID + ":bj_helmet");
bj_plate = new ArmorBJ(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate").setTextureName(RefStrings.MODID + ":bj_plate");
bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack");
bj_plate_jetpack = new ArmorBJJetpack(aMatBJ, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).hides(EnumPlayerPart.LEFT_ARM, EnumPlayerPart.RIGHT_ARM).setUnlocalizedName("bj_plate_jetpack").setTextureName(RefStrings.MODID + ":bj_plate_jetpack");
bj_legs = new ArmorBJ(aMatBJ, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs");
bj_boots = new ArmorBJ(aMatBJ, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_boots").setTextureName(RefStrings.MODID + ":bj_boots");
@ -4980,7 +5006,9 @@ public class ModItems {
.setHasCustomGeiger(true)
.addResistance("fall", 0.5F)
.addResistance("monoxide", 0F)
.addResistance("onFire", 0F).setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet");
.addResistance("onFire", 0F)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("hev_helmet").setTextureName(RefStrings.MODID + ":hev_helmet");
hev_plate = new ArmorHEV(aMatHEV, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_plate").setTextureName(RefStrings.MODID + ":hev_plate");
hev_legs = new ArmorHEV(aMatHEV, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_legs").setTextureName(RefStrings.MODID + ":hev_legs");
hev_boots = new ArmorHEV(aMatHEV, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) hev_helmet).setUnlocalizedName("hev_boots").setTextureName(RefStrings.MODID + ":hev_boots");
@ -5003,9 +5031,11 @@ public class ModItems {
.setProtectionLevel(1000F)
.addResistance("fall", 0F)
.addResistance("monoxide", 0F)
.setFireproof(true).setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet");
fau_plate = new ArmorDigamma(aMatFau, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate");
fau_legs = new ArmorDigamma(aMatFau, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_legs").setTextureName(RefStrings.MODID + ":fau_legs");
.setFireproof(true)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("fau_helmet").setTextureName(RefStrings.MODID + ":fau_helmet");
fau_plate = new ArmorDigamma(aMatFau, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setFullSetForHide().setUnlocalizedName("fau_plate").setTextureName(RefStrings.MODID + ":fau_plate");
fau_legs = new ArmorDigamma(aMatFau, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).hides(EnumPlayerPart.LEFT_LEG, EnumPlayerPart.RIGHT_LEG).setFullSetForHide().setUnlocalizedName("fau_legs").setTextureName(RefStrings.MODID + ":fau_legs");
fau_boots = new ArmorDigamma(aMatFau, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 2500, 0).cloneStats((ArmorFSB) fau_helmet).setUnlocalizedName("fau_boots").setTextureName(RefStrings.MODID + ":fau_boots");
ArmorMaterial aMatDNS = EnumHelper.addArmorMaterial("HBM_DNT_NANO", 150, new int[] { 3, 8, 6, 3 }, 100);
@ -5021,7 +5051,9 @@ public class ModItems {
.setStep("hbm:step.metal")
.setJump("hbm:step.iron_jump")
.setFall("hbm:step.iron_land")
.setFireproof(true).setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet");
.setFireproof(true)
.hides(EnumPlayerPart.HAT)
.setUnlocalizedName("dns_helmet").setTextureName(RefStrings.MODID + ":dns_helmet");
dns_plate = new ArmorDNT(aMatDNS, 7, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_plate").setTextureName(RefStrings.MODID + ":dns_plate");
dns_legs = new ArmorDNT(aMatDNS, 7, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_legs").setTextureName(RefStrings.MODID + ":dns_legs");
dns_boots = new ArmorDNT(aMatDNS, 7, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115).cloneStats((ArmorFSB) dns_helmet).setUnlocalizedName("dns_boots").setTextureName(RefStrings.MODID + ":dns_boots");
@ -5384,6 +5416,7 @@ public class ModItems {
cape_radiation = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_radiation").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_radiation");
cape_gasmask = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_gasmask").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_gasmask");
cape_schrabidium = new ArmorModel(MainRegistry.aMatSchrab, 9, 1).setUnlocalizedName("cape_schrabidium").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_schrabidium");
cape_hidden = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_hidden").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_unknown");
schrabidium_hammer = new WeaponSpecial(MainRegistry.tMatHammmer).setUnlocalizedName("schrabidium_hammer").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":schrabidium_hammer");
shimmer_sledge = new WeaponSpecial(MainRegistry.enumToolMaterialSledge).setUnlocalizedName("shimmer_sledge").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":shimmer_sledge_original");
@ -5448,7 +5481,7 @@ public class ModItems {
record_glass = new ItemModRecord("glass").setUnlocalizedName("record_glass").setCreativeTab(null).setTextureName(RefStrings.MODID + ":record_glass");
book_guide = new ItemGuideBook().setUnlocalizedName("book_guide").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":book_guide");
holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":holotape");
holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape");
holotape_damaged = new Item().setUnlocalizedName("holotape_damaged").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape_damaged");
polaroid = new ItemPolaroid().setUnlocalizedName("polaroid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":polaroid_" + MainRegistry.polaroidID);
@ -6012,6 +6045,7 @@ public class ModItems {
GameRegistry.registerItem(plate_kevlar, plate_kevlar.getUnlocalizedName());
GameRegistry.registerItem(plate_dalekanium, plate_dalekanium.getUnlocalizedName());
GameRegistry.registerItem(plate_desh, plate_desh.getUnlocalizedName());
GameRegistry.registerItem(plate_bismuth, plate_bismuth.getUnlocalizedName());
GameRegistry.registerItem(plate_euphemium, plate_euphemium.getUnlocalizedName());
GameRegistry.registerItem(plate_dineutronium, plate_dineutronium.getUnlocalizedName());
@ -7376,6 +7410,7 @@ public class ModItems {
GameRegistry.registerItem(cape_radiation, cape_radiation.getUnlocalizedName());
GameRegistry.registerItem(cape_gasmask, cape_gasmask.getUnlocalizedName());
GameRegistry.registerItem(cape_schrabidium, cape_schrabidium.getUnlocalizedName());
GameRegistry.registerItem(cape_hidden, cape_hidden.getUnlocalizedName());
//Tools
GameRegistry.registerItem(schrabidium_sword, schrabidium_sword.getUnlocalizedName());
@ -7883,6 +7918,10 @@ public class ModItems {
GameRegistry.registerItem(schrabidium_plate, schrabidium_plate.getUnlocalizedName());
GameRegistry.registerItem(schrabidium_legs, schrabidium_legs.getUnlocalizedName());
GameRegistry.registerItem(schrabidium_boots, schrabidium_boots.getUnlocalizedName());
GameRegistry.registerItem(bismuth_helmet, bismuth_helmet.getUnlocalizedName());
GameRegistry.registerItem(bismuth_plate, bismuth_plate.getUnlocalizedName());
GameRegistry.registerItem(bismuth_legs, bismuth_legs.getUnlocalizedName());
GameRegistry.registerItem(bismuth_boots, bismuth_boots.getUnlocalizedName());
GameRegistry.registerItem(euphemium_helmet, euphemium_helmet.getUnlocalizedName());
GameRegistry.registerItem(euphemium_plate, euphemium_plate.getUnlocalizedName());
GameRegistry.registerItem(euphemium_legs, euphemium_legs.getUnlocalizedName());

View File

@ -0,0 +1,35 @@
package com.hbm.items.armor;
import com.hbm.render.model.ModelArmorBismuth;
import com.hbm.render.model.ModelArmorRPA;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
public class ArmorBismuth extends ArmorFSB {
public ArmorBismuth(ArmorMaterial material, int layer, int slot, String texture) {
super(material, layer, slot, texture);
}
@SideOnly(Side.CLIENT)
ModelArmorBismuth[] models;
@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
if(models == null) {
models = new ModelArmorBismuth[4];
for(int i = 0; i < 4; i++)
models[i] = new ModelArmorBismuth(i);
}
return models[armorSlot];
}
}

View File

@ -2,12 +2,15 @@ package com.hbm.items.armor;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import org.lwjgl.opengl.GL11;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.radiation.ChunkRadiationManager;
import com.hbm.util.I18nUtil;
@ -40,7 +43,7 @@ import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
//Armor with full set bonus
public class ArmorFSB extends ItemArmor {
public class ArmorFSB extends ItemArmor implements IArmorDisableModel {
private String texture = "";
private ResourceLocation overlay = null;
@ -60,6 +63,7 @@ public class ArmorFSB extends ItemArmor {
public boolean customGeiger = false;
public boolean hardLanding = false;
public double gravity = 0;
public int dashCount = 0;
public String step;
public String jump;
public String fall;
@ -148,6 +152,11 @@ public class ArmorFSB extends ItemArmor {
this.gravity = gravity;
return this;
}
public ArmorFSB setDashCount(int dashCount) {
this.dashCount = dashCount;
return this;
}
public ArmorFSB setStep(String step) {
this.step = step;
@ -188,6 +197,7 @@ public class ArmorFSB extends ItemArmor {
this.customGeiger = original.customGeiger;
this.hardLanding = original.hardLanding;
this.gravity = original.gravity;
this.dashCount = original.dashCount;
this.step = original.step;
this.jump = original.jump;
this.fall = original.fall;
@ -270,6 +280,10 @@ public class ArmorFSB extends ItemArmor {
if(gravity != 0) {
list.add(EnumChatFormatting.BLUE + " " + I18nUtil.resolveKey("armor.gravity", gravity));
}
if(dashCount > 0) {
list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.dash", dashCount));
}
if(protectionYield != 100F) {
list.add(EnumChatFormatting.BLUE + " Protection applies to damage <" + protectionYield);
@ -448,6 +462,46 @@ public class ArmorFSB extends ItemArmor {
} catch(Exception x) {
}
}
/*
if(dashCount > 0) {
int perDash = 60;
HbmPlayerProps props = (HbmPlayerProps) player.getExtendedProperties("NTM_EXT_PLAYER");
props.setDashCount(dashCount);
int stamina = props.getStamina();
if(props.getDashCooldown() <= 0) {
if(!player.capabilities.isFlying && player.isSneaking() && stamina >= perDash) {
Vec3 lookingIn = player.getLookVec();
lookingIn.yCoord = 0;
lookingIn.normalize();
player.addVelocity(lookingIn.xCoord, 0, lookingIn.zCoord);
player.playSound("hbm:player.dash", 1.0F, 1.0F);
props.setDashCooldown(HbmPlayerProps.dashCooldownLength);
stamina -= perDash;
}
} else {
props.setDashCooldown(props.getDashCooldown() - 1);
}
if(stamina < props.getDashCount() * perDash) {
stamina++;
if(stamina % perDash == perDash-1) {
player.playSound("hbm:player.dashRecharge", 1.0F, (1.0F + ((1F/12F)*(stamina/perDash))));
stamina++;
}
}
props.setStamina(stamina);
} */
}
}
@ -579,4 +633,22 @@ public class ArmorFSB extends ItemArmor {
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
}
private HashSet<EnumPlayerPart> hidden = new HashSet();
private boolean needsFullSet = false;
public ArmorFSB hides(EnumPlayerPart... parts) {
Collections.addAll(hidden, parts);
return this;
}
public ArmorFSB setFullSetForHide() {
needsFullSet = true;
return this;
}
@Override
public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part) {
return hidden.contains(part) && (!needsFullSet || hasFSBArmorIgnoreCharge(player));
}
}

View File

@ -80,7 +80,7 @@ public class ArmorModel extends ItemArmor {
return this.modelHat;
}
}
if (this == ModItems.cape_test || this == ModItems.cape_radiation || this == ModItems.cape_gasmask || this == ModItems.cape_schrabidium) {
if (this == ModItems.cape_test || this == ModItems.cape_radiation || this == ModItems.cape_gasmask || this == ModItems.cape_schrabidium || this == ModItems.cape_hidden) {
if (armorSlot == 1) {
if (this.modelCloak == null) {
this.modelCloak = new ModelCloak();
@ -111,6 +111,9 @@ public class ArmorModel extends ItemArmor {
if (stack.getItem() == ModItems.cape_schrabidium) {
return "hbm:textures/models/capes/CapeSchrabidium.png";
}
if (stack.getItem() == ModItems.cape_hidden) {
return "hbm:textures/models/capes/CapeHidden.png";
}
return "hbm:textures/models/capes/CapeUnknown.png";
}

View File

@ -0,0 +1,19 @@
package com.hbm.items.armor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public interface IArmorDisableModel {
public boolean disablesPart(EntityPlayer player, ItemStack stack, EnumPlayerPart part);
public static enum EnumPlayerPart {
HEAD,
HAT,
BODY,
LEFT_ARM,
RIGHT_ARM,
LEFT_LEG,
RIGHT_LEG
}
}

View File

@ -1,42 +1,47 @@
package com.hbm.items.armor;
import java.util.List;
import java.util.UUID;
import com.google.common.collect.Multimap;
import com.hbm.handler.ArmorModHandler;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
public class ItemModV1 extends ItemArmorMod {
private static final UUID speed = UUID.fromString("1d11e63e-28c4-4e14-b09f-fe0bd1be708f");
public ItemModV1() {
super(ArmorModHandler.extra, false, true, false, false);
}
@Override
public Multimap getModifiers(ItemStack armor) {
Multimap multimap = super.getAttributeModifiers(armor);
multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "V1 SPEED", 0.5, 2));
return multimap;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add(EnumChatFormatting.RED + "BLOOD IS FUEL");
list.add("");
super.addInformation(stack, player, list, bool);
}
@Override
public void addDesc(List list, ItemStack stack, ItemStack armor) {
list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (BLOOD IS FUEL)");
}
}
package com.hbm.items.armor;
import java.util.List;
import java.util.UUID;
import com.google.common.collect.Multimap;
import com.hbm.handler.ArmorModHandler;
import com.hbm.interfaces.IArmorModDash;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
public class ItemModV1 extends ItemArmorMod implements IArmorModDash {
private static final UUID speed = UUID.fromString("1d11e63e-28c4-4e14-b09f-fe0bd1be708f");
public ItemModV1() {
super(ArmorModHandler.extra, false, true, false, false);
}
@Override
public Multimap getModifiers(ItemStack armor) {
Multimap multimap = super.getAttributeModifiers(armor);
multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "V1 SPEED", 0.5, 2));
return multimap;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
list.add(EnumChatFormatting.RED + "BLOOD IS FUEL");
list.add("");
super.addInformation(stack, player, list, bool);
}
@Override
public void addDesc(List list, ItemStack stack, ItemStack armor) {
list.add(EnumChatFormatting.RED + " " + stack.getDisplayName() + " (BLOOD IS FUEL)");
}
public int getDashes() {
return 3;
}
}

View File

@ -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

View File

@ -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 (4174)";
public static final String VERSION = "1.0.27 BETA (4186)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -84,7 +84,7 @@ import com.hbm.tileentity.machine.rbmk.*;
import com.hbm.tileentity.machine.storage.*;
import com.hbm.tileentity.network.*;
import com.hbm.tileentity.turret.*;
import com.hbm.util.SoundUtil;
import com.hbm.util.BobMathUtil;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
@ -93,6 +93,34 @@ import cpw.mods.fml.relauncher.ReflectionHelper;
public class ClientProxy extends ServerProxy {
@Override
public void registerRenderInfo() {
registerClientEventHandler(new ModEventHandlerClient());
registerClientEventHandler(new ModEventHandlerRenderer());
AdvancedModelLoader.registerModelHandler(new HmfModelLoader());
ResourceManager.loadAnimatedModels();
registerTileEntitySpecialRenderer();
registerItemRenderer();
registerEntityRenderer();
registerBlockRenderer();
RenderingRegistry.addNewArmourRendererPrefix("5");
RenderingRegistry.addNewArmourRendererPrefix("6");
RenderingRegistry.addNewArmourRendererPrefix("7");
RenderingRegistry.addNewArmourRendererPrefix("8");
RenderingRegistry.addNewArmourRendererPrefix("9");
//SoundUtil.addSoundCategory("ntmMachines");
}
private void registerClientEventHandler(Object handler) {
MinecraftForge.EVENT_BUS.register(handler);
FMLCommonHandler.instance().bus().register(handler);
}
@Override
public void registerTileEntitySpecialRenderer() {
//test crap
@ -651,6 +679,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderAnvil());
RenderingRegistry.registerBlockHandler(new RenderCrystal());
RenderingRegistry.registerBlockHandler(new RenderTestCable());
RenderingRegistry.registerBlockHandler(new RenderTestPipe());
RenderingRegistry.registerBlockHandler(new RenderBlockCT());
RenderingRegistry.registerBlockHandler(new RenderDetCord());
RenderingRegistry.registerBlockHandler(new RenderBlockMultipass());
@ -665,30 +694,6 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderPribris());
}
@Override
public void registerRenderInfo()
{
ModEventHandlerClient handler = new ModEventHandlerClient();
MinecraftForge.EVENT_BUS.register(handler);
FMLCommonHandler.instance().bus().register(handler);
AdvancedModelLoader.registerModelHandler(new HmfModelLoader());
ResourceManager.loadAnimatedModels();
registerTileEntitySpecialRenderer();
registerItemRenderer();
registerEntityRenderer();
registerBlockRenderer();
RenderingRegistry.addNewArmourRendererPrefix("5");
RenderingRegistry.addNewArmourRendererPrefix("6");
RenderingRegistry.addNewArmourRendererPrefix("7");
RenderingRegistry.addNewArmourRendererPrefix("8");
RenderingRegistry.addNewArmourRendererPrefix("9");
SoundUtil.addSoundCategory("ntmMachines");
}
@Override
public void registerMissileItems() {
@ -1158,12 +1163,19 @@ public class ClientProxy extends ServerProxy {
}
}
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, p.motionX + moX * 2, p.motionY + moY * 2, p.motionZ + moZ * 2));
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 2, p.motionY + moY * 2, p.motionZ + moZ * 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, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 3));
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, p.motionX + moX * 3, p.motionY + moY * 3, p.motionZ + moZ * 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));
}
}
}

View File

@ -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;
@ -72,7 +71,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;
@ -143,6 +142,7 @@ public class MainRegistry {
public static ArmorMaterial aMatSecurity = EnumHelper.addArmorMaterial("HBM_SECURITY", 100, new int[] { 3, 8, 6, 3 }, 15);
public static ArmorMaterial aMatCobalt = EnumHelper.addArmorMaterial("HBM_COBALT", 70, new int[] { 3, 8, 6, 3 }, 25);
public static ArmorMaterial aMatStarmetal = EnumHelper.addArmorMaterial("HBM_STARMETAL", 150, new int[] { 3, 8, 6, 3 }, 100);
public static ArmorMaterial aMatBismuth = EnumHelper.addArmorMaterial("HBM_BISMUTH", 100, new int[] { 3, 8, 6, 3 }, 100);
// Creative Tabs
@ -974,6 +974,9 @@ public class MainRegistry {
//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);
//new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70);
}
@EventHandler
@ -990,8 +993,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

View File

@ -62,6 +62,7 @@ import com.hbm.util.EntityDamageUtil;
import com.hbm.world.WorldProviderNTM;
import com.hbm.world.generator.TimedGenerator;
import api.hbm.energy.IEnergyConductor;
import cpw.mods.fml.common.eventhandler.Event.Result;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
@ -1160,6 +1161,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);

View File

@ -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;
@ -244,6 +245,16 @@ public class ModEventHandlerClient {
tess.draw();
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);
}
}
}
@ -798,52 +809,6 @@ public class ModEventHandlerClient {
}
}
/*private static final ResourceLocation digammaStar = new ResourceLocation("hbm:textures/misc/star_digamma.png");
@SideOnly(Side.CLIENT)
public void onRenderDigammaStar(RenderWorldLastEvent event) {
World world = Minecraft.getMinecraft().theWorld;
if(world.provider.dimensionId != 0)
return;
GL11.glPushMatrix();
GL11.glDepthMask(false);
GL11.glEnable(3553);
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_ALPHA_TEST);
OpenGlHelper.glBlendFunc(770, 1, 1, 0);
float partialTicks = event.partialTicks;
GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(world.getCelestialAngle(partialTicks) * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(140.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(-40.0F, 0.0F, 0.0F, 1.0F);
FMLClientHandler.instance().getClient().renderEngine.bindTexture(digammaStar);
float var12 = 2.5F;
double dist = 150D;
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV(-var12, dist, -var12, 0.0D, 0.0D);
tessellator.addVertexWithUV(var12, dist, -var12, 0.0D, 1.0D);
tessellator.addVertexWithUV(var12, dist, var12, 1.0D, 1.0D);
tessellator.addVertexWithUV(-var12, dist, var12, 1.0D, 0.0D);
tessellator.draw();
GL11.glDepthMask(true);
GL11.glDisable(3042);
GL11.glEnable(GL11.GL_ALPHA_TEST);
GL11.glPopMatrix();
}*/
@SubscribeEvent(priority = EventPriority.HIGHEST)
public void preRenderEventFirst(RenderLivingEvent.Pre event) {

View File

@ -0,0 +1,72 @@
package com.hbm.main;
import com.hbm.items.armor.IArmorDisableModel;
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.event.RenderPlayerEvent;
public class ModEventHandlerRenderer {
private static boolean[] partsHidden = new boolean[7];
@SubscribeEvent(priority = EventPriority.LOWEST, receiveCanceled = true)
public void onRenderPlayerPre(RenderPlayerEvent.Pre event) {
EntityPlayer player = event.entityPlayer;
RenderPlayer renderer = event.renderer;
for(int j = 0; j < 7; j++) {
partsHidden[j] = false;
}
for(int i = 1; i < 5; i++) {
ItemStack stack = player.getEquipmentInSlot(i);
if(stack != null && stack.getItem() instanceof IArmorDisableModel) {
IArmorDisableModel disable = (IArmorDisableModel) stack.getItem();
for(int j = 0; j < 7; j++) {
EnumPlayerPart type = EnumPlayerPart.values()[j];
ModelRenderer box = getBoxFromType(renderer, type);
if(disable.disablesPart(player, stack, type) && !box.isHidden) {
partsHidden[j] = true;
box.isHidden = true;
}
}
}
}
}
@SubscribeEvent(priority = EventPriority.HIGHEST, receiveCanceled = true)
public void onRenderPlayerPost(RenderPlayerEvent.Post event) {
RenderPlayer renderer = event.renderer;
for(int j = 0; j < 7; j++) {
EnumPlayerPart type = EnumPlayerPart.values()[j];
if(partsHidden[j]) {
getBoxFromType(renderer, type).isHidden = false;
}
}
}
private static ModelRenderer getBoxFromType(RenderPlayer renderer, EnumPlayerPart part) {
switch(part) {
case BODY: return renderer.modelBipedMain.bipedBody;
case HAT: return renderer.modelBipedMain.bipedHeadwear;
case HEAD: return renderer.modelBipedMain.bipedHead;
case LEFT_ARM: return renderer.modelBipedMain.bipedLeftArm;
case LEFT_LEG: return renderer.modelBipedMain.bipedLeftLeg;
case RIGHT_ARM: return renderer.modelBipedMain.bipedRightArm;
case RIGHT_LEG: return renderer.modelBipedMain.bipedRightLeg;
default: return null;
}
}
}

View File

@ -647,6 +647,7 @@ public class ResourceManager {
public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj"));
public static final IModelCustom armor_steamsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/steamsuit.obj"));
public static final IModelCustom armor_remnant = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/remnant.obj"));
public static final IModelCustom armor_bismuth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bismuth.obj"));
public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj"));
public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj"));
public static final IModelCustom armor_solstice = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/solstice.obj"));
@ -765,11 +766,13 @@ public class ResourceManager {
public static final ResourceLocation rpa_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/rpa_arm.png");
public static final ResourceLocation mod_tesla = new ResourceLocation(RefStrings.MODID, "textures/armor/mod_tesla.png");
public static final ResourceLocation armor_bismuth_tex = new ResourceLocation(RefStrings.MODID, "textures/armor/bismuth.png");
public static final ResourceLocation wings_murk = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_murk.png");
public static final ResourceLocation wings_bob = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_bob.png");
public static final ResourceLocation wings_black = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_black.png");
public static final ResourceLocation wings_solstice = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_solstice.png");
public static final ResourceLocation wings_solstice = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_solstice.png");
public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png");
public static final ResourceLocation goggles = new ResourceLocation(RefStrings.MODID, "textures/armor/goggles.png");
@ -1176,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"));

View File

@ -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;
}
}

View File

@ -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) {

View File

@ -1236,6 +1236,28 @@ public class ItemRenderLibrary {
bindTexture(ResourceManager.chemfac_tex); ResourceManager.chemfac.renderPart("Main");
GL11.glShadeModel(GL11.GL_FLAT);
}});
renderers.put(Item.getItemFromBlock(ModBlocks.red_pylon_large), new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -5, 0);
GL11.glScaled(2.25, 2.25, 2.25);
}
public void renderCommon() {
GL11.glScaled(0.5, 0.5, 0.5);
bindTexture(ResourceManager.pylon_large_tex); ResourceManager.pylon_large.renderAll();
}});
renderers.put(Item.getItemFromBlock(ModBlocks.substation), new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -2.5, 0);
GL11.glScaled(4.5, 4.5, 4.5);
}
public void renderCommon() {
GL11.glScaled(0.5, 0.5, 0.5);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.substation_tex); ResourceManager.substation.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
}});
}
private static void bindTexture(ResourceLocation res) {

View File

@ -0,0 +1,57 @@
package com.hbm.render.model;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import com.hbm.render.loader.ModelRendererObj;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.entity.Entity;
public class ModelArmorBismuth extends ModelArmorBase {
public ModelArmorBismuth(int type) {
super(type);
head = new ModelRendererObj(ResourceManager.armor_bismuth, "Head");
body = new ModelRendererObj(ResourceManager.armor_bismuth, "Body");
leftArm = new ModelRendererObj(ResourceManager.armor_bismuth, "LeftArm").setRotationPoint(-5.0F, 2.0F, 0.0F);
rightArm = new ModelRendererObj(ResourceManager.armor_bismuth, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F);
leftLeg = new ModelRendererObj(ResourceManager.armor_bismuth, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F);
rightLeg = new ModelRendererObj(ResourceManager.armor_bismuth, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F);
leftFoot = new ModelRendererObj(ResourceManager.armor_bismuth, "LeftFoot").setRotationPoint(1.9F, 12.0F, 0.0F);
rightFoot = new ModelRendererObj(ResourceManager.armor_bismuth, "RightFoot").setRotationPoint(-1.9F, 12.0F, 0.0F);
}
@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.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.armor_bismuth_tex);
if(type == 0) {
head.render(par7);
}
if(type == 1) {
leftArm.render(par7);
rightArm.render(par7);
body.render(par7);
}
if(type == 2) {
leftLeg.render(par7);
rightLeg.render(par7);
}
if(type == 3) {
leftFoot.render(par7);
rightFoot.render(par7);
}
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
}

View File

@ -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;
}
}

View File

@ -1,198 +1,317 @@
package com.hbm.render.util;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import com.hbm.lib.RefStrings;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
public class RenderScreenOverlay {
private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png");
private static final RenderItem itemRenderer = RenderItem.getInstance();
private static long lastSurvey;
private static float prevResult;
private static float lastResult;
public static void renderRadCounter(ScaledResolution resolution, float in, Gui gui) {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_ALPHA_TEST);
float radiation = 0;
radiation = lastResult - prevResult;
if(System.currentTimeMillis() >= lastSurvey + 1000) {
lastSurvey = System.currentTimeMillis();
prevResult = lastResult;
lastResult = in;
}
int length = 74;
int maxRad = 1000;
int bar = getScaled(in, maxRad, 74);
//if(radiation >= 1 && radiation <= 999)
// bar -= (1 + Minecraft.getMinecraft().theWorld.rand.nextInt(3));
int posX = 16;
int posY = resolution.getScaledHeight() - 18 - 2;
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
gui.drawTexturedModalRect(posX, posY, 0, 0, 94, 18);
gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 19, bar, 16);
if(radiation >= 25) {
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 36, 36, 18, 18);
} else if(radiation >= 10) {
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 18, 36, 18, 18);
} else if(radiation >= 2.5) {
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 0, 36, 18, 18);
}
if(radiation > 1000) {
Minecraft.getMinecraft().fontRenderer.drawString(">1000 RAD/s", posX, posY - 8, 0xFF0000);
} else if(radiation >= 1) {
Minecraft.getMinecraft().fontRenderer.drawString(((int)Math.round(radiation)) + " RAD/s", posX, posY - 8, 0xFF0000);
} else if(radiation > 0) {
Minecraft.getMinecraft().fontRenderer.drawString("<1 RAD/s", posX, posY - 8, 0xFF0000);
}
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
private static int getScaled(double cur, double max, double scale) {
return (int) Math.min(cur / max * scale, scale);
}
public static void renderCustomCrosshairs(ScaledResolution resolution, Gui gui, Crosshair cross) {
if(cross == Crosshair.NONE) {
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
return;
}
int size = cross.size;
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0);
gui.drawTexturedModalRect(resolution.getScaledWidth() / 2 - (size / 2), resolution.getScaledHeight() / 2 - (size / 2), cross.x, cross.y, size, size);
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
public static void renderAmmo(ScaledResolution resolution, Gui gui, Item ammo, int count, int max, int dura, boolean renderCount) {
GL11.glPushMatrix();
Minecraft mc = Minecraft.getMinecraft();
int pX = resolution.getScaledWidth() / 2 + 62 + 36;
int pZ = resolution.getScaledHeight() - 21;
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
gui.drawTexturedModalRect(pX, pZ + 16, 94, 0, 52, 3);
gui.drawTexturedModalRect(pX + 1, pZ + 16, 95, 3, 50 - dura, 3);
String cap = max == -1 ? ("") : ("" + max);
if(renderCount)
Minecraft.getMinecraft().fontRenderer.drawString(count + " / " + cap, pX + 16, pZ + 6, 0xFFFFFF);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
RenderHelper.enableGUIStandardItemLighting();
itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(ammo), pX, pZ);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
public static void renderAmmoAlt(ScaledResolution resolution, Gui gui, Item ammo, int count) {
GL11.glPushMatrix();
Minecraft mc = Minecraft.getMinecraft();
int pX = resolution.getScaledWidth() / 2 + 62 + 36 + 18;
int pZ = resolution.getScaledHeight() - 21 - 16;
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
Minecraft.getMinecraft().fontRenderer.drawString(count + "x", pX + 16, pZ + 6, 0xFFFFFF);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
RenderHelper.enableGUIStandardItemLighting();
itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(ammo), pX, pZ);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
public enum Crosshair {
NONE(0, 0, 0),
CROSS(1, 55, 16),
CIRCLE(19, 55, 16),
SEMI(37, 55, 16),
KRUCK(55, 55, 16),
DUAL(1, 73, 16),
SPLIT(19, 73, 16),
CLASSIC(37, 73, 16),
BOX(55, 73, 16),
L_CROSS(0, 90, 32),
L_KRUCK(32, 90, 32),
L_CLASSIC(64, 90, 32),
L_CIRCLE(96, 90, 32),
L_SPLIT(0, 122, 32),
L_ARROWS(32, 122, 32),
L_BOX(64, 122, 32),
L_CIRCUMFLEX(96, 122, 32),
L_RAD(0, 154, 32);
public int x;
public int y;
public int size;
private Crosshair(int x, int y, int size) {
this.x = x;
this.y = y;
this.size = size;
}
}
}
package com.hbm.render.util;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.interfaces.Spaghetti;
import com.hbm.lib.RefStrings;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
public class RenderScreenOverlay {
private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png");
private static final RenderItem itemRenderer = RenderItem.getInstance();
private static long lastSurvey;
private static float prevResult;
private static float lastResult;
private static float fadeOut = 0F;
public static void renderRadCounter(ScaledResolution resolution, float in, Gui gui) {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_ALPHA_TEST);
float radiation = 0;
radiation = lastResult - prevResult;
if(System.currentTimeMillis() >= lastSurvey + 1000) {
lastSurvey = System.currentTimeMillis();
prevResult = lastResult;
lastResult = in;
}
int length = 74;
int maxRad = 1000;
int bar = getScaled(in, maxRad, 74);
//if(radiation >= 1 && radiation <= 999)
// bar -= (1 + Minecraft.getMinecraft().theWorld.rand.nextInt(3));
int posX = 16;
int posY = resolution.getScaledHeight() - 18 - 2;
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
gui.drawTexturedModalRect(posX, posY, 0, 0, 94, 18);
gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 19, bar, 16);
if(radiation >= 25) {
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 36, 36, 18, 18);
} else if(radiation >= 10) {
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 18, 36, 18, 18);
} else if(radiation >= 2.5) {
gui.drawTexturedModalRect(posX + length + 2, posY - 18, 0, 36, 18, 18);
}
if(radiation > 1000) {
Minecraft.getMinecraft().fontRenderer.drawString(">1000 RAD/s", posX, posY - 8, 0xFF0000);
} else if(radiation >= 1) {
Minecraft.getMinecraft().fontRenderer.drawString(((int)Math.round(radiation)) + " RAD/s", posX, posY - 8, 0xFF0000);
} else if(radiation > 0) {
Minecraft.getMinecraft().fontRenderer.drawString("<1 RAD/s", posX, posY - 8, 0xFF0000);
}
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
private static int getScaled(double cur, double max, double scale) {
return (int) Math.min(cur / max * scale, scale);
}
public static void renderCustomCrosshairs(ScaledResolution resolution, Gui gui, Crosshair cross) {
if(cross == Crosshair.NONE) {
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
return;
}
int size = cross.size;
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
GL11.glEnable(GL11.GL_BLEND);
OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0);
gui.drawTexturedModalRect(resolution.getScaledWidth() / 2 - (size / 2), resolution.getScaledHeight() / 2 - (size / 2), cross.x, cross.y, size, size);
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0);
GL11.glDisable(GL11.GL_BLEND);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
public static void renderAmmo(ScaledResolution resolution, Gui gui, Item ammo, int count, int max, int dura, boolean renderCount) {
GL11.glPushMatrix();
Minecraft mc = Minecraft.getMinecraft();
int pX = resolution.getScaledWidth() / 2 + 62 + 36;
int pZ = resolution.getScaledHeight() - 21;
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
gui.drawTexturedModalRect(pX, pZ + 16, 94, 0, 52, 3);
gui.drawTexturedModalRect(pX + 1, pZ + 16, 95, 3, 50 - dura, 3);
String cap = max == -1 ? ("") : ("" + max);
if(renderCount)
Minecraft.getMinecraft().fontRenderer.drawString(count + " / " + cap, pX + 16, pZ + 6, 0xFFFFFF);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
RenderHelper.enableGUIStandardItemLighting();
itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(ammo), pX, pZ);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
public static void renderAmmoAlt(ScaledResolution resolution, Gui gui, Item ammo, int count) {
GL11.glPushMatrix();
Minecraft mc = Minecraft.getMinecraft();
int pX = resolution.getScaledWidth() / 2 + 62 + 36 + 18;
int pZ = resolution.getScaledHeight() - 21 - 16;
Minecraft.getMinecraft().renderEngine.bindTexture(misc);
Minecraft.getMinecraft().fontRenderer.drawString(count + "x", pX + 16, pZ + 6, 0xFFFFFF);
GL11.glDisable(GL11.GL_BLEND);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
RenderHelper.enableGUIStandardItemLighting();
itemRenderer.renderItemAndEffectIntoGUI(mc.fontRenderer, mc.getTextureManager(), new ItemStack(ammo), pX, pZ);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
GL11.glPopMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
}
@Spaghetti ("like a fella once said, aint that a kick in the head")
public static void renderDashBar(ScaledResolution resolution, Gui gui, HbmPlayerProps props) {
GL11.glPushMatrix();
GL11.glEnable(GL11.GL_BLEND);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(false);
OpenGlHelper.glBlendFunc(770, 771, 1, 0);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glDisable(GL11.GL_ALPHA_TEST);
Minecraft mc = Minecraft.getMinecraft();
int width = 30;
int posX = 16;//(int)(resolution.getScaledWidth()/2 - ((props.getDashCount()*(width+2))/2));
int posY = resolution.getScaledHeight() - 40 - 2;
mc.renderEngine.bindTexture(misc);
gui.drawTexturedModalRect(posX-10, posY, 107, 18, 7, 10);
int stamina = props.getStamina();
int dashes = props.getDashCount();
//int count = props.getDashCount();
//int x3count = count / 3;
int rows = dashes / 3;
int finalColumns = dashes % 3;
for(int y = 0; y < rows; y++) {
for(int x = 0; x < 3; x++) {
if(y == rows && x > finalColumns)
break;
gui.drawTexturedModalRect(posX + (width+2)*x, posY - 12*y, 76, 48, width, 10);
int staminaDiv = stamina / 30;
int staminaMod = stamina % 30;
int barID = (3*y)+x;
int barStatus = 1; //0 = red, 1 = normal, 2 = greyed, 3 = dashed, 4 = ascended
int barSize = width;
if(staminaDiv < barID) {
barStatus = 3;
} else if(staminaDiv == barID) {
barStatus = 2;
barSize = (int)((float)(stamina % 30) * (width/30F) );
if(barID == 0)
barStatus = 0;
}
gui.drawTexturedModalRect(posX + (width+2)*x, posY - 12*y, 76, 18+(10*barStatus), barSize, 10);
if(staminaDiv == barID && staminaMod >= 27) {
fadeOut = 1F;
}
if(fadeOut > 0 && staminaDiv-1 == barID) {
GL11.glColor4f(1F, 1F, 1F, fadeOut);
int bar = barID;
if(stamina % 30 >= 25)
bar++;
int yPos = y;
if(bar / 3 != y)
y++;
bar = bar % 3;
gui.drawTexturedModalRect(posX + (width+2)*bar, posY - 12*y, 76, 58, width, 10);
fadeOut -= 0.04F;
GL11.glColor4f(1F, 1F, 1F, 1F);
}
}
}
/*for(int x = 0; x < props.getDashCount(); x++) {
int status = 3;
gui.drawTexturedModalRect(posX + (24)*x, posY, 76, 48, 24, 10);
int staminaDiv = stamina / 60;
if(staminaDiv > x) {
status = 1;
} else if(staminaDiv == x) {
width = (int)( (float)(stamina % 60) * (width/60F) );
status = 2;
if(staminaDiv == 0)
status = 0;
}
/*if(staminaDiv-1 == x && (stamina % 60 < 20 && stamina % 60 != 0)) {
status = 4;
}
/*if(((staminaDiv == x && stamina % 60 >= 55) || (staminaDiv-1 == x && stamina % 60 <= 5)) && !(stamina == props.totalDashCount * 60)) {
status = 4;
}
gui.drawTexturedModalRect(posX + (24)*x, posY, 76, 18+(10*status), width, 10);
if(staminaDiv == x && stamina % 60 >= 57) {
fadeOut = 1F;
}
if(fadeOut > 0 && staminaDiv-1 == x) {
GL11.glColor4f(1F, 1F, 1F, fadeOut);
int bar = x;
if(stamina % 60 >= 50)
bar++;
System.out.println(bar);
gui.drawTexturedModalRect(posX + 24*bar, posY, 76, 58, width, 10);
fadeOut -= 0.04F;
GL11.glColor4f(1F, 1F, 1F, 1F);
}
}*/
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthMask(true);
GL11.glPopMatrix();
mc.renderEngine.bindTexture(Gui.icons);
}
public enum Crosshair {
NONE(0, 0, 0),
CROSS(1, 55, 16),
CIRCLE(19, 55, 16),
SEMI(37, 55, 16),
KRUCK(55, 55, 16),
DUAL(1, 73, 16),
SPLIT(19, 73, 16),
CLASSIC(37, 73, 16),
BOX(55, 73, 16),
L_CROSS(0, 90, 32),
L_KRUCK(32, 90, 32),
L_CLASSIC(64, 90, 32),
L_CIRCLE(96, 90, 32),
L_SPLIT(0, 122, 32),
L_ARROWS(32, 122, 32),
L_BOX(64, 122, 32),
L_CIRCUMFLEX(96, 122, 32),
L_RAD(0, 154, 32);
public int x;
public int y;
public int size;
private Crosshair(int x, int y, int size) {
this.x = x;
this.y = y;
this.size = size;
}
}
}

View File

@ -184,6 +184,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");

View File

@ -390,8 +390,9 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements
for(int j = 0; j < inv.getSizeInventory(); j++) {
if(inv.getStackInSlot(j) == null) {
inv.setInventorySlotContents(j, out.copy());
inv.getStackInSlot(j).stackSize = 1;
ItemStack copy = out.copy();
copy.stackSize = 1;
inv.setInventorySlotContents(j, copy);
this.decrStackSize(i, 1);
return;
}

View File

@ -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;
}
/**

View File

@ -206,8 +206,6 @@ public class TileEntityMachineShredder extends TileEntity implements ISidedInven
return false;
}
System.out.println("ass");
return true;
}

View File

@ -66,9 +66,17 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery {
if(mode == 1 || mode == 2) {
if(te instanceof IEnergyConnector) {
IEnergyConnector con = (IEnergyConnector) te;
long max = 10_000_000_000_000_000L;
long toTransfer = Math.min(max, this.power);
long remainder = this.power - toTransfer;
this.power = toTransfer;
long oldPower = this.power;
long transfer = this.power - con.transferPower(this.power);
this.power = oldPower - transfer;
power += remainder;
}
}

View File

@ -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;
}
}
}

View File

@ -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;
}
}

View File

@ -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.NONE;
@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;
}
}

View File

@ -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<int[]> getConnectionPoints() {
List<int[]> 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;
}
}

View File

@ -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<int[]> getConnectionPoints() {
return new ArrayList(connected);
}
public abstract ConnectionType getConnectionType();
public abstract Vec3[] getMountPos();
public abstract double getMaxWireLength();

View File

@ -1,9 +1,10 @@
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 +46,16 @@ 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();
}
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());
}
}
public List<int[]> getConnectionPoints() {
List<int[]> 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;
}
}

View File

@ -15,6 +15,17 @@ import net.minecraftforge.common.util.ForgeDirection;
public class BobMathUtil {
public static double safeClamp(double val, double min, double max) {
val = MathHelper.clamp_double(val, min, max);
if(val == Double.NaN) {
val = (min + max) / 2D;
}
return val;
}
public static Vec3 interpVec(Vec3 vec1, Vec3 vec2, float interp) {
return Vec3.createVectorHelper(
interp(vec1.xCoord, vec2.xCoord, interp),

View File

@ -257,7 +257,6 @@ public class InventoryUtil {
if(inv.stackSize <= 0) {
inventory[j] = null;
System.out.println("da yis");
}
}
}

View File

@ -10,9 +10,15 @@ import net.minecraft.client.audio.SoundCategory;
import net.minecraft.client.settings.GameSettings;
import net.minecraftforge.common.util.EnumHelper;
/**
* This class is dedicated to the retard who thought making sound categories into enums and setting everything useful to private was a good idea.
* Fuck you.
* @author hbm
*
*/
public class SoundUtil {
public static void addSoundCategory(String name) {
/*public static void addSoundCategory(String name) {
try {
SoundCategory category = EnumHelper.addEnum(SoundCategory.class, name.toUpperCase(), new Class[] { String.class, int.class }, new Object[] { name, SoundCategory.values().length });
@ -40,5 +46,5 @@ public class SoundUtil {
} catch(Exception e) {
e.printStackTrace();
}
}
}*/
}

View File

@ -86,7 +86,7 @@ public class AncientTomb {
int iy = world.getHeightValue(ix, iz) - 3;
for(int j = iy; j < iy + 7; j++) {
world.setBlock(ix, j, iz, ModBlocks.deco_steel);
world.setBlock(ix, j, iz, ModBlocks.deco_steel, 0, 2);
}
}

View File

@ -0,0 +1,125 @@
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;
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;
}
@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;
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;
break;
}
}
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);
}
}
}
}
}
}
}
}
}
}

View File

@ -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
@ -1014,6 +1015,7 @@ item.cape_codered_.name=codered_s Cape
item.cape_dafnik.name=Dafniks Cape
item.cape_gasmask.name=Cape (Gasmaske)
item.cape_hbm.name=Hbms Cape
item.cape_hidden.name=Hidden Cape
item.cape_lpkukin.name=LPkukins Cape
item.cape_nostalgia.name=DrNostalgias Cape
item.cape_radiation.name=Cape (Radioaktiv)
@ -3552,6 +3554,8 @@ tile.solar_mirror.name=Heliostatspiegel
tile.soyuz_capsule.name=Landekapsel
tile.soyuz_launcher.name=Soyuz-Startplatform
tile.spikes.name=Stacheln
tile.stalactite.sulfur.name=Schwefelhaltiger Stalaktit
tile.stalagmite.sulfur.name=Schwefelhaltiger Stalagmit
tile.steel_beam.name=Stahlträger
tile.steel_corner.name=Stahlwand (Ecke)
tile.steel_grate.name=Stahlgitter
@ -3563,6 +3567,7 @@ 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.sulfur.name=Schwefelhaltiger Stein
tile.struct_iter_core.name=Fusionsreaktor-Kernkomponente
tile.struct_launcher.name=Startrampe-Komponentenblock
tile.struct_launcher_core.name=Kompaktrampe-Kernkomponente

View File

@ -120,6 +120,7 @@ achievement.ZIRNOXBoom=CIRNOX
armor.blastProtection=Damage modifier of %s against explosions
armor.cap=Hard damage cap of %s
armor.damageModifier=Damage modifier of %s against %s
armor.dash=Grants %s dashes
armor.electricJetpack=Ion Jetpack
armor.explosionImmune=Cannot take any damage except from explosions
armor.fastFall=Fast Fall
@ -305,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
@ -1082,7 +1084,11 @@ item.billet_zirconium.name=Zirconium Billet
item.bio_wafer.name=Algae Wafer
item.biomass.name=Biomass
item.biomass_compressed.name=Compressed Biomass
item.bismuth_boots.name=Bismuth Sandals
item.bismuth_helmet.name=Bismuth Headdress
item.bismuth_legs.name=Bismuth Kneeguards
item.bismuth_pickaxe.name=Bismuth Pickaxe
item.bismuth_plate.name=Bismuth Shoulderpads, Necklace & Loincloth
item.bismuth_tool.name=Magnetic Extractor
item.bj_boots.name=Lunar Studded Boots
item.bj_helmet.name=Eyepatch with Thermal Sensor
@ -1220,6 +1226,7 @@ item.cape_codered_.name=codered_'s Cape
item.cape_dafnik.name=Dafnik's Cape
item.cape_gasmask.name=Cape (Gas Mask)
item.cape_hbm.name=Hbm's Cape
item.cape_hidden.name=Hidden Cape
item.cape_lpkukin.name=LPkukin's Cape
item.cape_nostalgia.name=DrNostalgia's Cape
item.cape_radiation.name=Cape (Radiation)
@ -1832,7 +1839,7 @@ 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_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
@ -2427,6 +2434,8 @@ item.plate_armor_fau.name=Fau Armor Plating
item.plate_armor_hev.name=Reactive Armor Plating
item.plate_armor_lunar.name=Lunar Plating
item.plate_armor_titanium.name=Titanium Armor Plate
item.plate_bismuth.name=Bismuth Compound Plate
item.plate_bismuth.desc=Guys, It's Bismuth's alchemical symbol, I swear.
item.plate_combine_steel.name=CMB Steel Plate
item.plate_copper.name=Copper Plate
item.plate_dalekanium.name=Angry Metal
@ -3918,6 +3927,8 @@ 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.sulfur.name=Sulfurous Stalactite
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
@ -3929,6 +3940,7 @@ 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.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

View File

@ -1305,6 +1305,7 @@ container.generator=Ядерный реактор
tile.red_wire_coated.name=Медный кабель с покрытием
tile.cable_switch.name=Рубильник
tile.cable_detector.name=Редстоун-рубильник
tile.cable_diode.name=Диод из красной меди
tile.machine_deuterium.name=Дейтериевый экстрактор
container.machine_deuterium=Дейтериевый экстрактор
tile.machine_battery_potato.name=Картофельная батарея
@ -4181,6 +4182,7 @@ tile.tektite.name=Тектит
item.cape_radiation.name=Плащ (Радиация)
item.cape_gasmask.name=Плащ (Противогаз)
item.cape_schrabidium.name=Плащ (Шрабидий)
item.cape_hidden.name=Скрытый плащ
item.cape_hbm.name=Hbm's Cape
item.cape_dafnik.name=Dafnik's Cape
item.cape_lpkukin.name=LPkukin's Cape
@ -4989,7 +4991,6 @@ tile.mush_block_stem.name=Giant Glowing Mushroom Stem
tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus.
tile.pane_acrylic.name=Acrylic Pane
tile.pane_actinium.name=Actinium Glass Pane
tile.reinforced_ducrete.name=Heavy Rebar Reinforced DUCRETE
tile.storage_aux_fdd.name=Auxiliary Floppy Disk Drive
tile.storage_aux_optical_bd=Auxiliary Elite Optical Drive
tile.storage_aux_optical_cd=Auxiliary Basic Optical Drive

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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}]},
@ -199,6 +199,8 @@
"player.vomit": {"category": "player", "sounds": [{"name": "player/vomit", "stream": false}]},
"player.cough": {"category": "player", "sounds": ["player/cough1", "player/cough2", "player/cough3", "player/cough4"]},
"player.dash": {"category": "player", "sounds": [{"name": "player/dash", "stream": false}]},
"player.dashRecharge": {"category": "player", "sounds": [{"name": "player/dashRecharge", "stream": false}]},
"potatos.random": {"category": "player", "sounds": ["potatos/randResponse0", "potatos/randResponse1", "potatos/randResponse2", "potatos/randResponse3", "potatos/randResponse4", "potatos/randResponse5", "potatos/randResponse6", "potatos/randResponse7"]},

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 876 B

View File

@ -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
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 539 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Some files were not shown because too many files have changed in this diff Show More