Merge remote-tracking branch 'HbmMods/master'
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
13
src/main/java/api/hbm/fluid/IFluidUser.java
Normal 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);
|
||||
}*/
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
|
||||
142
src/main/java/api/hbm/fluid/PipeNet.java
Normal 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;
|
||||
}
|
||||
}
|
||||
64
src/main/java/com/hbm/blocks/BlockEnumMulti.java
Normal 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];
|
||||
}
|
||||
}
|
||||
8
src/main/java/com/hbm/blocks/BlockEnums.java
Normal file
@ -0,0 +1,8 @@
|
||||
package com.hbm.blocks;
|
||||
|
||||
public class BlockEnums {
|
||||
|
||||
public static enum EnumStoneType {
|
||||
SULFUR
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
70
src/main/java/com/hbm/blocks/generic/BlockStalagmite.java
Normal 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;
|
||||
}
|
||||
}
|
||||
83
src/main/java/com/hbm/blocks/machine/BlockObserver.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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" +
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
58
src/main/java/com/hbm/blocks/test/TestPipe.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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 });
|
||||
|
||||
@ -67,8 +67,6 @@ public class EntityMinecartTest extends EntityMinecartModBase
|
||||
this.explodeCart(d0);
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println(this.rotationYaw);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -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) { }
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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));
|
||||
|
||||
|
||||
6
src/main/java/com/hbm/interfaces/IArmorModDash.java
Normal file
@ -0,0 +1,6 @@
|
||||
package com.hbm.interfaces;
|
||||
|
||||
public interface IArmorModDash {
|
||||
|
||||
public int getDashes();
|
||||
}
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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());
|
||||
|
||||
35
src/main/java/com/hbm/items/armor/ArmorBismuth.java
Normal 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];
|
||||
}
|
||||
|
||||
}
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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";
|
||||
}
|
||||
|
||||
19
src/main/java/com/hbm/items/armor/IArmorDisableModel.java
Normal 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
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
72
src/main/java/com/hbm/main/ModEventHandlerRenderer.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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"));
|
||||
|
||||
130
src/main/java/com/hbm/render/block/RenderTestPipe.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
57
src/main/java/com/hbm/render/model/ModelArmorBismuth.java
Normal 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();
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -206,8 +206,6 @@ public class TileEntityMachineShredder extends TileEntity implements ISidedInven
|
||||
return false;
|
||||
}
|
||||
|
||||
System.out.println("ass");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -257,7 +257,6 @@ public class InventoryUtil {
|
||||
|
||||
if(inv.stackSize <= 0) {
|
||||
inventory[j] = null;
|
||||
System.out.println("da yis");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
125
src/main/java/com/hbm/world/feature/OreCave.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
2960
src/main/resources/assets/hbm/models/armor/bismuth.obj
Normal file
664
src/main/resources/assets/hbm/models/blocks/pipe_neo.obj
Normal 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
|
||||
@ -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"]},
|
||||
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/player/dash.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/player/dashRecharge.ogg
Normal file
BIN
src/main/resources/assets/hbm/textures/armor/bismuth.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 655 B |
|
After Width: | Height: | Size: 697 B |
BIN
src/main/resources/assets/hbm/textures/blocks/observer_front.png
Normal file
|
After Width: | Height: | Size: 876 B |
@ -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
|
||||
]
|
||||
}
|
||||
}
|
||||
BIN
src/main/resources/assets/hbm/textures/blocks/observer_side.png
Normal file
|
After Width: | Height: | Size: 539 B |
BIN
src/main/resources/assets/hbm/textures/blocks/pipe_neo.png
Normal file
|
After Width: | Height: | Size: 246 B |
|
After Width: | Height: | Size: 98 B |
|
After Width: | Height: | Size: 270 B |
|
After Width: | Height: | Size: 278 B |
|
After Width: | Height: | Size: 262 B |
|
After Width: | Height: | Size: 267 B |
|
After Width: | Height: | Size: 342 B |
|
After Width: | Height: | Size: 798 B |
|
After Width: | Height: | Size: 372 B |
BIN
src/main/resources/assets/hbm/textures/items/bismuth_boots.png
Normal file
|
After Width: | Height: | Size: 257 B |
BIN
src/main/resources/assets/hbm/textures/items/bismuth_helmet.png
Normal file
|
After Width: | Height: | Size: 829 B |
BIN
src/main/resources/assets/hbm/textures/items/bismuth_legs.png
Normal file
|
After Width: | Height: | Size: 351 B |
BIN
src/main/resources/assets/hbm/textures/items/bismuth_plate.png
Normal file
|
After Width: | Height: | Size: 655 B |