Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Pheonix 2022-03-19 16:42:32 +00:00
commit 4086b8633d
69 changed files with 2922 additions and 1011 deletions

View File

@ -105,19 +105,24 @@ public class PowerNet implements IPowerNet {
if(this.subscribers.isEmpty())
return power;
List<IEnergyConnector> subList = new ArrayList(subscribers);
List<Long> weight = new ArrayList();
long totalReq = 0;
for(IEnergyConnector con : this.subscribers) {
for(IEnergyConnector con : subList) {
long req = con.getTransferWeight();
weight.add(req);
totalReq += req;
}
if(totalReq == 0)
return power;
long totalGiven = 0;
for(int i = 0; i < this.subscribers.size(); i++) {
IEnergyConnector con = this.subscribers.get(i);
for(int i = 0; i < subList.size(); i++) {
IEnergyConnector con = subList.get(i);
long req = weight.get(i);
double fraction = (double)req / (double)totalReq;

View File

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

View File

@ -52,6 +52,8 @@ public class ModBlocks {
public static Block test_conductor;
public static Block test_ct;
public static Block test_rail;
public static Block test_bb_bork;
public static Block test_bb_inf;
public static Block ore_uranium;
public static Block ore_uranium_scorched;
@ -714,6 +716,7 @@ public class ModBlocks {
public static Block substation;
public static Block cable_switch;
public static Block cable_detector;
public static Block cable_diode;
public static Block machine_detector;
public static Block rf_cable;
public static Block oil_duct_solid;
@ -1251,6 +1254,8 @@ public class ModBlocks {
test_conductor = new TestConductor(Material.iron).setBlockName("test_conductor").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cable_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");
test_bb_inf = new TestBB(Material.iron).setBlockName("test_bb_inf").setCreativeTab(null).setHardness(2.5F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":test_bb_inf");
ore_uranium = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium");
ore_uranium_scorched = new BlockOutgas(Material.rock, true, 5, true).setBlockName("ore_uranium_scorched").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_uranium_scorched");
@ -1829,6 +1834,7 @@ public class ModBlocks {
substation = new Substation(Material.iron).setBlockName("substation").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":substation");
cable_switch = new CableSwitch(Material.iron).setBlockName("cable_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode");
machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off");
oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt");
oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt");
@ -2256,6 +2262,8 @@ public class ModBlocks {
GameRegistry.registerBlock(test_conductor, test_conductor.getUnlocalizedName());
GameRegistry.registerBlock(test_ct, test_ct.getUnlocalizedName());
GameRegistry.registerBlock(test_rail, test_rail.getUnlocalizedName());
GameRegistry.registerBlock(test_bb_bork, test_bb_bork.getUnlocalizedName());
GameRegistry.registerBlock(test_bb_inf, test_bb_inf.getUnlocalizedName());
//Ores
GameRegistry.registerBlock(ore_uranium, ore_uranium.getUnlocalizedName());
@ -2929,6 +2937,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, ItemBlockBase.class, cable_diode.getUnlocalizedName());
GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName());
GameRegistry.registerBlock(rf_cable, rf_cable.getUnlocalizedName());
GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName());

View File

@ -155,7 +155,8 @@ public class Landmine extends BlockContainer implements IBomb {
world.newExplosion(null, x + 0.5, y + 0.5, z + 0.5, 2.5F, false, false);
}
if(this == ModBlocks.mine_he) {
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 10F, true, false, false);
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 3F, true, false, false);
world.newExplosion(null, x + 0.5, y + 2, z + 0.5, 15F, false, false);
}
if(this == ModBlocks.mine_shrap) {
ExplosionLarge.explode(world, x + 0.5, y + 0.5, z + 0.5, 1, true, false, false);

View File

@ -1,12 +1,17 @@
package com.hbm.blocks.machine;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ModBlocks;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.TileEntityDiFurnace;
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
import com.hbm.util.BobMathUtil;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
@ -25,13 +30,14 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class MachineBattery extends BlockContainer {
public class MachineBattery extends BlockContainer implements ILookOverlay {
private final Random field_149933_a = new Random();
private final Random field_149933_a = new Random();
private static boolean keepInventory;
public long maxPower;
@SideOnly(Side.CLIENT)
private IIcon iconTop;
@SideOnly(Side.CLIENT)
@ -41,7 +47,7 @@ public class MachineBattery extends BlockContainer {
super(p_i45386_1_);
this.maxPower = maxPower;
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister) {
@ -71,84 +77,73 @@ public class MachineBattery extends BlockContainer {
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":battery_dineutronium_side");
}
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata) {
if(side == 0 || side == 1)
return iconTop;
return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon);
}
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_)
{
return Item.getItemFromBlock(this);
}
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
return Item.getItemFromBlock(this);
}
@Override
public void onBlockAdded(World world, int x, int y, int z) {
super.onBlockAdded(world, x, y, z);
this.setDefaultDirection(world, x, y, z);
}
private void setDefaultDirection(World world, int x, int y, int z) {
if(!world.isRemote)
{
if(!world.isRemote) {
Block block1 = world.getBlock(x, y, z - 1);
Block block2 = world.getBlock(x, y, z + 1);
Block block3 = world.getBlock(x - 1, y, z);
Block block4 = world.getBlock(x + 1, y, z);
byte b0 = 3;
if(block1.func_149730_j() && !block2.func_149730_j())
{
if(block1.func_149730_j() && !block2.func_149730_j()) {
b0 = 3;
}
if(block2.func_149730_j() && !block1.func_149730_j())
{
if(block2.func_149730_j() && !block1.func_149730_j()) {
b0 = 2;
}
if(block3.func_149730_j() && !block4.func_149730_j())
{
if(block3.func_149730_j() && !block4.func_149730_j()) {
b0 = 5;
}
if(block4.func_149730_j() && !block3.func_149730_j())
{
if(block4.func_149730_j() && !block3.func_149730_j()) {
b0 = 4;
}
world.setBlockMetadataWithNotify(x, y, z, b0, 2);
}
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0)
{
if(i == 0) {
world.setBlockMetadataWithNotify(x, y, z, 2, 2);
}
if(i == 1)
{
if(i == 1) {
world.setBlockMetadataWithNotify(x, y, z, 5, 2);
}
if(i == 2)
{
if(i == 2) {
world.setBlockMetadataWithNotify(x, y, z, 3, 2);
}
if(i == 3)
{
if(i == 3) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(itemStack.hasDisplayName())
{
((TileEntityDiFurnace)world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName());
if(itemStack.hasDisplayName()) {
((TileEntityDiFurnace) world.getTileEntity(x, y, z)).setCustomName(itemStack.getDisplayName());
}
}
@ -156,17 +151,14 @@ public class MachineBattery extends BlockContainer {
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileEntityMachineBattery();
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote)
{
if(world.isRemote) {
return true;
} else if(!player.isSneaking())
{
} else if(!player.isSneaking()) {
TileEntityMachineBattery entity = (TileEntityMachineBattery) world.getTileEntity(x, y, z);
if(entity != null)
{
if(entity != null) {
FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_machine_battery, world, x, y, z);
}
return true;
@ -174,57 +166,70 @@ public class MachineBattery extends BlockContainer {
return false;
}
}
@Override
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_)
{
if (!keepInventory)
{
TileEntityMachineBattery tileentityfurnace = (TileEntityMachineBattery)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) {
if(!keepInventory) {
TileEntityMachineBattery tileentityfurnace = (TileEntityMachineBattery) p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_);
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(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage()));
itemstack.stackSize -= j1;
EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + 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;
p_149749_1_.spawnEntityInWorld(entityitem);
}
}
}
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;
p_149749_1_.spawnEntityInWorld(entityitem);
}
}
}
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
}
}
p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_);
}
}
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
}
super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_);
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(!(te instanceof TileEntityMachineBattery))
return;
TileEntityMachineBattery battery = (TileEntityMachineBattery) te;
List<String> text = new ArrayList();
text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE");
double percent = (double) battery.getPower() / (double) battery.getMaxPower();
int charge = (int) Math.floor(percent * 10_000D);
int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8);
text.add("&[" + color + "&]" + (charge / 100D) + "%");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

@ -132,6 +132,6 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver
for(int i = 0; i < cracker.tanks.length; i++)
text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x808000, text);
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

@ -1,17 +1,25 @@
package com.hbm.blocks.machine;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.storage.TileEntityMachineBattery;
import com.hbm.tileentity.machine.storage.TileEntityMachineFENSU;
import com.hbm.util.BobMathUtil;
import com.hbm.util.I18nUtil;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class MachineFENSU extends BlockDummyable {
public class MachineFENSU extends BlockDummyable implements ILookOverlay {
public MachineFENSU(Material mat) {
super(mat);
@ -58,4 +66,29 @@ public class MachineFENSU extends BlockDummyable {
}
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null)
return;
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(te instanceof TileEntityMachineBattery))
return;
TileEntityMachineBattery battery = (TileEntityMachineBattery) te;
List<String> text = new ArrayList();
text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE");
double percent = (double) battery.getPower() / (double) battery.getMaxPower();
int charge = (int) Math.floor(percent * 10_000D);
int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8);
text.add("&[" + color + "&]" + (charge / 100D) + "%");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

@ -118,6 +118,6 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay
for(int i = 0; i < cracker.tanks.length; i++)
text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x808000, text);
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

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

View File

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

View File

@ -0,0 +1,210 @@
package com.hbm.blocks.network;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.util.BobMathUtil;
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;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection;
public class CableDiode extends BlockContainer implements ILookOverlay, IToolable, ITooltipProvider {
public CableDiode(Material mat) {
super(mat);
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override
public int getRenderType() {
return renderID;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
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);
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
TileEntityDiode te = (TileEntityDiode)world.getTileEntity(x, y, z);
if(world.isRemote)
return true;
if(tool == ToolType.SCREWDRIVER) {
if(te.level < 11)
te.level++;
te.markDirty();
world.markBlockForUpdate(x, y, z);
return true;
}
if(tool == ToolType.HAND_DRILL) {
if(te.level > 1)
te.level--;
te.markDirty();
world.markBlockForUpdate(x, y, z);
return true;
}
return false;
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add(EnumChatFormatting.GOLD + "Limits throughput and restricts flow direction");
list.add(EnumChatFormatting.YELLOW + "Use screwdriver to increase throughput");
list.add(EnumChatFormatting.YELLOW + "Use hand drill to decrease throughput");
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
TileEntity te = world.getTileEntity(x, y, z);
if(!(te instanceof TileEntityDiode))
return;
TileEntityDiode diode = (TileEntityDiode) te;
List<String> text = new ArrayList();
text.add("Max.: " + BobMathUtil.getShortNumber(diode.getMaxPower()) + "HE/pulse");
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityDiode();
}
public static class TileEntityDiode extends TileEntity implements IEnergyUser {
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
level = nbt.getInteger("level");
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
nbt.setInteger("level", level);
}
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
this.writeToNBT(nbt);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
this.readFromNBT(pkt.func_148857_g());
}
int level = 1;
private ForgeDirection getDir() {
return ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite();
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
if(dir == getDir())
continue;
this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
}
}
}
private boolean recursionBrake = false;
private long subBuffer;
@Override
public long transferPower(long power) {
if(recursionBrake)
return power;
//this part turns "maxPower" from a glorified transfer weight into an actual transfer cap
long overShoot = Math.max(0, power - getMaxPower());
power = Math.min(power, getMaxPower());
recursionBrake = true;
this.subBuffer = power;
ForgeDirection dir = getDir();
this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
long ret = this.subBuffer;
this.subBuffer = 0;
recursionBrake = false;
return ret + overShoot;
}
@Override
public long getMaxPower() {
return (long) Math.pow(10, level);
}
@Override
public long getPower() {
return subBuffer;
}
@Override
public void setPower(long power) {
this.subBuffer = power;
}
}
}

View File

@ -0,0 +1,18 @@
package com.hbm.blocks.test;
import com.hbm.blocks.ModBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
public class TestBB extends Block {
public TestBB(Material mat) {
super(mat);
if(this == ModBlocks.test_bb_bork)
this.setBlockBounds(-1000F, -1000F, -1000F, 1001F, 1001F, 1001F);
else
this.setBlockBounds(Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY);
}
}

View File

@ -78,7 +78,7 @@ public class ArmorRecipes {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.ajro_boots, 1), new Object[] { ModItems.ajr_boots, KEY_RED, KEY_BLACK });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_helmet, 1), new Object[] { "SBS", " C ", " I ", 'S', Items.string, 'B', new ItemStack(Blocks.wool, 1, 15), 'C', ModItems.circuit_targeting_tier4, 'I', STAR.ingot() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate, 1), new Object[] { "N N", "MSM", "NCN", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_plate, 'C', ModItems.circuit_targeting_tier5 });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.ordinal()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.getID()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_legs, 1), new Object[] { "MBM", "NSN", "N N", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_legs, 'B', ModBlocks.block_starmetal });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_boots, 1), new Object[] { "N N", "BSB", 'N', ModItems.plate_armor_lunar, 'S', ModItems.starmetal_boots, 'B', ModBlocks.block_starmetal });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ModItems.plate_polymer, 'F', ModItems.gas_mask_filter });
@ -97,6 +97,10 @@ public class ArmorRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rpa_plate, 1), new Object[] { "P P", "MLM", "PKP", 'L', DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), 'K', ModItems.plate_kevlar, 'P', ModItems.plate_armor_ajr, 'M', ModItems.motor_desh });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rpa_legs, 1), new Object[] { "MPM", "KLK", "P P", 'L', DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), 'K', ModItems.plate_kevlar, 'P', ModItems.plate_armor_ajr, 'M', ModItems.motor_desh });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rpa_boots, 1), new Object[] { "KLK", "P P", 'L', DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2), 'K', ModItems.plate_kevlar, 'P', ModItems.plate_armor_ajr });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_helmet, 1), new Object[] { "DCD", "CXC", " F ", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_helmet, 'F', ModItems.gas_mask_filter });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.steamsuit_plate, 1), new Object[] { "C C", "DXD", "CFC", 'D', DESH.ingot(), 'C', CU.plate(), 'X', ModItems.steel_plate, 'F', ModItems.tank_steel });
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 });

View File

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

View File

@ -11,7 +11,9 @@ import com.hbm.explosion.vanillant.interfaces.IExplosionSFX;
import com.hbm.explosion.vanillant.interfaces.IPlayerProcessor;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.explosion.vanillant.standard.CustomDamageHandlerAmat;
import com.hbm.explosion.vanillant.standard.EntityProcessorStandard;
import com.hbm.explosion.vanillant.standard.ExplosionEffectAmat;
import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard;
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
@ -127,4 +129,16 @@ public class ExplosionVNT {
this.setSFX(new ExplosionEffectStandard());
return this;
}
public ExplosionVNT makeAmat() {
this.setBlockAllocator(new BlockAllocatorStandard(this.size < 15 ? 16 : 32));
this.setBlockProcessor(new BlockProcessorStandard()
.setNoDrop());
this.setEntityProcessor(new EntityProcessorStandard()
.withRangeMod(2F)
.withDamageMod(new CustomDamageHandlerAmat(50F)));
this.setPlayerProcessor(new PlayerProcessorStandard());
this.setSFX(new ExplosionEffectAmat());
return this;
}
}

View File

@ -0,0 +1,10 @@
package com.hbm.explosion.vanillant.interfaces;
import com.hbm.explosion.vanillant.ExplosionVNT;
import net.minecraft.entity.Entity;
public interface ICustomDamageHandler {
public void handleAttack(ExplosionVNT explosion, Entity entity, double distanceScaled);
}

View File

@ -0,0 +1,8 @@
package com.hbm.explosion.vanillant.interfaces;
import com.hbm.explosion.vanillant.ExplosionVNT;
public interface IEntityRangeMutator {
public float mutateRange(ExplosionVNT explosion, float range);
}

View File

@ -0,0 +1,25 @@
package com.hbm.explosion.vanillant.standard;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler;
import com.hbm.util.ContaminationUtil;
import com.hbm.util.ContaminationUtil.ContaminationType;
import com.hbm.util.ContaminationUtil.HazardType;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
public class CustomDamageHandlerAmat implements ICustomDamageHandler {
protected float radiation;
public CustomDamageHandlerAmat(float radiation) {
this.radiation = radiation;
}
@Override
public void handleAttack(ExplosionVNT explosion, Entity entity, double distanceScaled) {
if(entity instanceof EntityLivingBase)
ContaminationUtil.contaminate((EntityLivingBase)entity, HazardType.RADIATION, ContaminationType.CREATIVE, (float) (radiation * (1D - distanceScaled) * explosion.size));
}
}

View File

@ -4,7 +4,9 @@ import java.util.HashMap;
import java.util.List;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.interfaces.ICustomDamageHandler;
import com.hbm.explosion.vanillant.interfaces.IEntityProcessor;
import com.hbm.explosion.vanillant.interfaces.IEntityRangeMutator;
import net.minecraft.enchantment.EnchantmentProtection;
import net.minecraft.entity.Entity;
@ -17,6 +19,9 @@ import net.minecraftforge.event.ForgeEventFactory;
public class EntityProcessorStandard implements IEntityProcessor {
protected IEntityRangeMutator range;
protected ICustomDamageHandler damage;
@Override
public HashMap<EntityPlayer, Vec3> process(ExplosionVNT explosion, World world, double x, double y, double z, float size) {
@ -24,6 +29,10 @@ public class EntityProcessorStandard implements IEntityProcessor {
size *= 2.0F;
if(range != null) {
size = range.mutateRange(explosion, size);
}
double minX = x - (double) size - 1.0D;
double maxX = x + (double) size + 1.0D;
double minY = y - (double) size - 1.0D;
@ -67,10 +76,29 @@ public class EntityProcessorStandard implements IEntityProcessor {
if(entity instanceof EntityPlayer) {
affectedPlayers.put((EntityPlayer) entity, Vec3.createVectorHelper(deltaX * knockback, deltaY * knockback, deltaZ * knockback));
}
if(damage != null) {
damage.handleAttack(explosion, entity, distanceScaled);
}
}
}
}
return affectedPlayers;
}
public EntityProcessorStandard withRangeMod(float mod) {
range = new IEntityRangeMutator() {
@Override
public float mutateRange(ExplosionVNT explosion, float range) {
return range * mod;
}
};
return this;
}
public EntityProcessorStandard withDamageMod(ICustomDamageHandler damage) {
this.damage = damage;
return this;
}
}

View File

@ -0,0 +1,27 @@
package com.hbm.explosion.vanillant.standard;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.interfaces.IExplosionSFX;
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.world.World;
public class ExplosionEffectAmat implements IExplosionSFX {
@Override
public void doEffect(ExplosionVNT explosion, World world, double x, double y, double z, float size) {
if(size < 15)
world.playSoundEffect(x, y, z, "random.explode", 4.0F, (1.4F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F) * 0.7F);
else
world.playSoundEffect(x, y, z, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "amat");
data.setFloat("scale", size);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 200));
}
}

View File

@ -526,7 +526,7 @@ public class HazardRegistry {
HazardData data = new HazardData();
data.addEntry(new HazardEntry(RADIATION, base).addMod(new HazardModifierRTGRadiation(target)));
if(hot > 0) data.addEntry(new HazardEntry(HOT, hot));
if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, hot));
if(blinding > 0) data.addEntry(new HazardEntry(BLINDING, blinding));
HazardSystem.register(pellet, data);
}

View File

@ -1,6 +1,5 @@
package com.hbm.hazard.modifier;
import com.hbm.hazard.HazardRegistry;
import com.hbm.items.machine.ItemFuelRod;
import net.minecraft.entity.EntityLivingBase;

View File

@ -27,7 +27,7 @@ public class HazardModifierRBMKRadiation extends HazardModifier {
} else if(stack.getItem() instanceof ItemRBMKPellet) {
level = level + (target - level) * (ItemRBMKPellet.rectify(stack.getItemDamage()) / 4F);
level = level + (target - level) * ((ItemRBMKPellet.rectify(stack.getItemDamage()) % 5) / 4F);
if(ItemRBMKPellet.hasXenon(stack.getItemDamage()))
level += HazardRegistry.xe135 * HazardRegistry.nugget;

View File

@ -403,7 +403,7 @@ public class RecipesCommon {
}
public static class MetaBlock {
public Block block;
public int meta;
@ -415,6 +415,14 @@ public class RecipesCommon {
public MetaBlock(Block block) {
this(block, 0);
}
public int getID() {
final int prime = 31;
int result = 1;
result = prime * result + Block.getIdFromBlock(block);
result = prime * result + meta;
return result;
}
}
}

View File

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

View File

@ -1,6 +1,7 @@
package com.hbm.inventory.container;
import com.hbm.tileentity.machine.TileEntityStorageDrum;
import com.hbm.util.InventoryUtil;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
@ -47,10 +48,10 @@ public class ContainerStorageDrum extends Container {
var3 = var5.copy();
if(par2 <= drum.getSizeInventory() - 1) {
if(!this.mergeItemStack(var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) {
if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, drum.getSizeInventory(), this.inventorySlots.size(), true)) {
return null;
}
} else if(!this.mergeItemStack(var5, 0, drum.getSizeInventory(), false)) {
} else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, drum.getSizeInventory(), false)) {
return null;
}

View File

@ -1,6 +1,7 @@
package com.hbm.inventory.container;
import com.hbm.tileentity.machine.TileEntityWasteDrum;
import com.hbm.util.InventoryUtil;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
@ -10,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));
@ -51,11 +52,11 @@ public class ContainerWasteDrum extends Container {
ItemStack var5 = var4.getStack();
var3 = var5.copy();
if(par2 <= diFurnace.getSizeInventory() - 1) {
if(!this.mergeItemStack(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(!this.mergeItemStack(var5, 0, 0, false)) {
} else if(!InventoryUtil.mergeItemStack(this.inventorySlots, var5, 0, drum.getSizeInventory(), false)) {
return null;
}
@ -64,6 +65,8 @@ public class ContainerWasteDrum extends Container {
} else {
var4.onSlotChanged();
}
var4.onPickupFromSlot(p_82846_1_, var5);
}
return var3;
@ -71,6 +74,6 @@ public class ContainerWasteDrum extends Container {
@Override
public boolean canInteractWith(EntityPlayer player) {
return diFurnace.isUseableByPlayer(player);
return drum.isUseableByPlayer(player);
}
}

View File

@ -11,6 +11,7 @@ import com.hbm.interfaces.ICustomWarhead.SaltedFuel.HalfLifeType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.items.ItemEnums.EnumLegendaryType;
import com.hbm.items.armor.*;
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
import com.hbm.items.bomb.*;
import com.hbm.items.food.*;
import com.hbm.items.machine.*;
@ -2270,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;
@ -4890,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");
@ -4904,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");
@ -4923,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");
@ -4940,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");
@ -4957,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");
@ -4976,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");
@ -4997,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");
@ -5020,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);
@ -5038,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");
@ -5401,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");
@ -5465,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);
@ -7394,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());

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@ -8,7 +8,9 @@ import com.hbm.items.ModItems;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
public class ItemModPads extends ItemArmorMod {
@ -40,6 +42,13 @@ public class ItemModPads extends ItemArmorMod {
else
list.add(EnumChatFormatting.DARK_PURPLE + " " + stack.getDisplayName() + " (-" + Math.round((1F - damageMod) * 100) + "% fall dmg)");
}
@Override
public void modDamage(LivingHurtEvent event, ItemStack armor) {
if(event.source == DamageSource.fall)
event.ammount *= damageMod;
}
@Override
public void modUpdate(EntityLivingBase entity, ItemStack armor) {

View File

@ -64,9 +64,9 @@ public class ItemPlateFuel extends ItemFuelRod {
switch(this.function) {
case LOGARITHM: return (int) (Math.log10(flux + 1) * 0.5D * reactivity);
case SQUARE_ROOT: return (int) (Math.sqrt(flux) * this.reactivity / 10);
case NEGATIVE_QUADRATIC: return (int) (Math.max(flux - (flux * flux / 10000) / 100 * reactivity, 0));
case LINEAR: return (int) (flux / 100 * reactivity);
case SQUARE_ROOT: return (int) (Math.sqrt(flux) * this.reactivity / 10D);
case NEGATIVE_QUADRATIC: return (int) (Math.max((flux - (flux * flux / 10000D)) / 100D * reactivity, 0));
case LINEAR: return (int) (flux / 100D * reactivity);
case PASSIVE:
setLifeTime(stack, getLifeTime(stack) + reactivity);
return reactivity;

View File

@ -9,15 +9,11 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class ItemRBMKPellet extends ItemNuclearWaste {

View File

@ -239,7 +239,7 @@ public class ItemRBMKRod extends Item {
case PASSIVE: return selfRate * enrichment;
case LOG_TEN: return Math.log10(flux + 1) * 0.5D * reactivity;
case PLATEU: return (1 - Math.pow(Math.E, -flux / 25D)) * reactivity;
case ARCH: return Math.max(flux - (flux * flux / 10000D) / 100D * reactivity, 0D);
case ARCH: return Math.max((flux - (flux * flux / 10000D)) / 100D * reactivity, 0D);
case SIGMOID: return reactivity / (1 + Math.pow(Math.E, -(flux - 50D) / 10D));
case SQUARE_ROOT: return Math.sqrt(flux) * reactivity / 10D;
case LINEAR: return flux / 100D * reactivity;

View File

@ -16,6 +16,7 @@ import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.ExplosionNT;
import com.hbm.explosion.ExplosionNT.ExAttrib;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.interfaces.IBomb;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
@ -85,15 +86,12 @@ public class ItemDrop extends Item {
if (stack.getItem() != null && stack.getItem() == ModItems.cell_antimatter && WeaponConfig.dropCell) {
if (!entityItem.worldObj.isRemote) {
entityItem.worldObj.createExplosion(entityItem, entityItem.posX, entityItem.posY,
entityItem.posZ, 10.0F, true);
new ExplosionVNT(entityItem.worldObj, entityItem.posX, entityItem.posY, entityItem.posZ, 3F).makeAmat().explode();
}
}
if (stack.getItem() != null && stack.getItem() == ModItems.pellet_antimatter && WeaponConfig.dropCell) {
if (!entityItem.worldObj.isRemote) {
new ExplosionNT(entityItem.worldObj, entityItem, entityItem.posX, entityItem.posY, entityItem.posZ, 30).overrideResolution(64).addAttrib(ExAttrib.FIRE).addAttrib(ExAttrib.NOSOUND).explode();
ExplosionLarge.spawnParticles(entityItem.worldObj, entityItem.posX, entityItem.posY, entityItem.posZ, ExplosionLarge.cloudFunction(100));
entityItem.worldObj.playSoundEffect(entityItem.posX, entityItem.posY, entityItem.posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F);
new ExplosionVNT(entityItem.worldObj, entityItem.posX, entityItem.posY, entityItem.posZ, 20F).makeAmat().explode();
}
}
if (stack.getItem() != null && stack.getItem() == ModItems.cell_anti_schrabidium && WeaponConfig.dropCell) {

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
public class RefStrings {
public static final String MODID = "hbm";
public static final String NAME = "Hbm's Nuclear Tech Mod";
public static final String VERSION = "1.0.27 BETA (4172)";
public static final String VERSION = "1.0.27 BETA (4178)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -19,6 +19,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.Vec3;
@ -84,6 +85,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.BobMathUtil;
import com.hbm.util.SoundUtil;
import cpw.mods.fml.client.registry.ClientRegistry;
@ -93,6 +95,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
@ -654,6 +684,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderBlockCT());
RenderingRegistry.registerBlockHandler(new RenderDetCord());
RenderingRegistry.registerBlockHandler(new RenderBlockMultipass());
RenderingRegistry.registerBlockHandler(new RenderDiode());
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));
@ -664,30 +695,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() {
@ -745,7 +752,6 @@ public class ClientProxy extends ServerProxy {
@Deprecated
@Override
public void spawnParticle(double x, double y, double z, String type, float args[]) {
World world = Minecraft.getMinecraft().theWorld;
TextureManager man = Minecraft.getMinecraft().renderEngine;
@ -789,6 +795,7 @@ public class ClientProxy extends ServerProxy {
TextureManager man = Minecraft.getMinecraft().renderEngine;
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
int particleSetting = Minecraft.getMinecraft().gameSettings.particleSetting;
Random rand = world.rand;
String type = data.getString("type");
double x = data.getDouble("posX");
@ -1095,6 +1102,9 @@ public class ClientProxy extends ServerProxy {
if("jetpack".equals(type)) {
if(particleSetting == 2)
return;
Entity ent = world.getEntityByID(data.getInteger("player"));
if(ent instanceof EntityPlayer) {
@ -1132,35 +1142,47 @@ public class ClientProxy extends ServerProxy {
moZ -= look.zCoord * 0.1D;
}
Vec3 pos = Vec3.createVectorHelper(ix, iy, iz);
Vec3 thrust = Vec3.createVectorHelper(moX, moY, moZ);
thrust = thrust.normalize();
Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10);
MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true);
if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) {
if(particleSetting == 0) {
Vec3 pos = Vec3.createVectorHelper(ix, iy, iz);
Vec3 thrust = Vec3.createVectorHelper(moX, moY, moZ);
thrust = thrust.normalize();
Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10);
MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true);
Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord);
Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0);
for(int i = 0; i < (10 - delta.lengthVector()); i++) {
vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta));
if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) {
Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord);
Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0);
for(int i = 0; i < (10 - delta.lengthVector()); i++) {
vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta));
}
}
}
double motionX = BobMathUtil.safeClamp(p.motionX + moX, -5, 5);
double motionY = BobMathUtil.safeClamp(p.motionY + moY, -2, 2);
double motionZ = BobMathUtil.safeClamp(p.motionZ + moZ, -5, 5);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix + ox, iy, iz + oz, 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));
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 EntityFlameFX(world, ix + ox, iy, iz + oz, motionX * 2, motionY * 2, motionZ * 2));
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityFlameFX(world, ix - ox, iy, iz - oz, motionX * 2, motionY * 2, motionZ * 2));
if(particleSetting == 0) {
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix + ox, iy, iz + oz, motionX * 3, motionY * 3, motionZ * 3));
Minecraft.getMinecraft().effectRenderer.addEffect(new net.minecraft.client.particle.EntitySmokeFX(world, ix - ox, iy, iz - oz, motionX * 3, motionY * 3, motionZ * 3));
}
}
}
if("jetpack_bj".equals(type)) {
if(particleSetting == 2)
return;
Entity ent = world.getEntityByID(data.getInteger("player"));
if(ent instanceof EntityPlayer) {
@ -1180,22 +1202,24 @@ public class ClientProxy extends ServerProxy {
double ox = offset.xCoord;
double oz = offset.zCoord;
Vec3 pos = Vec3.createVectorHelper(ix, iy, iz);
Vec3 thrust = Vec3.createVectorHelper(0, -1, 0);
Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10);
MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true);
if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) {
if(particleSetting == 0) {
Vec3 pos = Vec3.createVectorHelper(ix, iy, iz);
Vec3 thrust = Vec3.createVectorHelper(0, -1, 0);
Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10);
MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true);
Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord);
Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0);
for(int i = 0; i < (10 - delta.lengthVector()); i++) {
vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta));
if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) {
Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord);
Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0);
for(int i = 0; i < (10 - delta.lengthVector()); i++) {
vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta));
}
}
}
@ -1210,6 +1234,9 @@ public class ClientProxy extends ServerProxy {
if("jetpack_dns".equals(type)) {
if(particleSetting == 2)
return;
Entity ent = world.getEntityByID(data.getInteger("player"));
if(ent instanceof EntityPlayer) {
@ -1227,22 +1254,24 @@ public class ClientProxy extends ServerProxy {
double ox = offset.xCoord;
double oz = offset.zCoord;
Vec3 pos = Vec3.createVectorHelper(ix, iy, iz);
Vec3 thrust = Vec3.createVectorHelper(0, -1, 0);
Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10);
MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true);
if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) {
if(particleSetting == 0) {
Vec3 pos = Vec3.createVectorHelper(ix, iy, iz);
Vec3 thrust = Vec3.createVectorHelper(0, -1, 0);
Vec3 target = pos.addVector(thrust.xCoord * 10, thrust.yCoord * 10, thrust.zCoord * 10);
MovingObjectPosition mop = player.worldObj.func_147447_a(pos, target, false, false, true);
Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord);
Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0);
for(int i = 0; i < (10 - delta.lengthVector()); i++) {
vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta));
if(mop != null && mop.typeOfHit == MovingObjectType.BLOCK && mop.sideHit == 1) {
Block b = world.getBlock(mop.blockX, mop.blockY, mop.blockZ);
int meta = world.getBlockMetadata(mop.blockX, mop.blockY, mop.blockZ);
Vec3 delta = Vec3.createVectorHelper(ix - mop.hitVec.xCoord, iy - mop.hitVec.yCoord, iz - mop.hitVec.zCoord);
Vec3 vel = Vec3.createVectorHelper(0.75 - delta.lengthVector() * 0.075, 0, 0);
for(int i = 0; i < (10 - delta.lengthVector()); i++) {
vel.rotateAroundY(world.rand.nextFloat() * (float)Math.PI * 2F);
Minecraft.getMinecraft().effectRenderer.addEffect(new EntityBlockDustFX(world, mop.hitVec.xCoord, mop.hitVec.yCoord + 0.1, mop.hitVec.zCoord, vel.xCoord, 0.1, vel.zCoord, b, meta));
}
}
}
@ -1372,7 +1401,7 @@ public class ClientProxy extends ServerProxy {
if("vomit".equals(type)) {
Entity e = world.getEntityByID(data.getInteger("entity"));
int count = data.getInteger("count");
int count = data.getInteger("count") / (particleSetting + 1);
if(e instanceof EntityLivingBase) {
@ -1453,12 +1482,13 @@ public class ClientProxy extends ServerProxy {
fx.setLift(data.getFloat("lift"));
fx.setBaseScale(data.getFloat("base"));
fx.setMaxScale(data.getFloat("max"));
fx.setLife(data.getInteger("life"));
fx.setLife(data.getInteger("life") / (particleSetting + 1));
Minecraft.getMinecraft().effectRenderer.addEffect(fx);
}
if("deadleaf".equals(type)) {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z));
if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean()))
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z));
}
if("anim".equals(type)) {
@ -1534,6 +1564,10 @@ public class ClientProxy extends ServerProxy {
}
}
}
if("amat".equals(type)) {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleAmatFlash(world, x, y, z, data.getFloat("scale")));
}
}
private HashMap<Integer, Long> vanished = new HashMap();

View File

@ -240,6 +240,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.red_wire_coated), 16), new Object[] { "WRW", "RIR", "WRW", 'W', ModItems.plate_polymer, 'I', MINGRADE.ingot(), 'R', ModItems.wire_red_copper });
addRecipeAuto(new ItemStack(ModBlocks.cable_switch, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.red_wire_coated });
addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated });
addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', ModItems.wire_red_copper, 'T', ModItems.coil_tungsten });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper });
addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() });

View File

@ -5,6 +5,7 @@ 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;
@ -71,6 +72,7 @@ import com.hbm.tileentity.bomb.TileEntityNukeCustom;
import com.hbm.tileentity.machine.*;
import com.hbm.tileentity.machine.rbmk.RBMKDials;
import com.hbm.util.ArmorUtil;
import com.hbm.world.feature.OreLayer;
import com.hbm.world.feature.SchistStratum;
import com.hbm.world.generator.CellularDungeonFactory;
@ -989,6 +991,8 @@ public class MainRegistry {
SchistStratum schist = new SchistStratum();
MinecraftForge.EVENT_BUS.register(schist); //DecorateBiomeEvent.Pre
//new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70);
OreDictManager oreMan = new OreDictManager();
MinecraftForge.EVENT_BUS.register(oreMan); //OreRegisterEvent

View File

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

View File

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

View File

@ -57,6 +57,7 @@ public class ResourceManager {
//Landmines
public static final IModelCustom mine_ap = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_ap.obj"));
public static final IModelCustom mine_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_he.obj"));
public static final IModelCustom mine_marelet = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/bombs/marelet.obj"));
public static final IModelCustom mine_fat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mine_fat.obj"));
//Oil Pumps
@ -342,7 +343,8 @@ public class ResourceManager {
//Landmines
public static final ResourceLocation mine_ap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_ap.png");
public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png");
//public static final ResourceLocation mine_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_he.png");
public static final ResourceLocation mine_marelet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/bombs/mine_marelet.png");
public static final ResourceLocation mine_shrap_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_shrap.png");
public static final ResourceLocation mine_fat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/mine_fat.png");

View File

@ -0,0 +1,145 @@
package com.hbm.particle;
import java.util.Random;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.World;
@SideOnly(Side.CLIENT)
public class ParticleAmatFlash extends EntityFX {
public ParticleAmatFlash(World world, double x, double y, double z, float scale) {
super(world, x, y, z);
this.particleMaxAge = 10;
this.particleScale = scale;
}
public int getFXLayer() {
return 3;
}
public void renderParticle(Tessellator tess, float interp, float x, float y, float z, float tx, float tz) {
float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) interp - interpPosX));
float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) interp - interpPosY));
float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ));
GL11.glTranslatef(pX, pY, pZ);
GL11.glScalef(0.2F * particleScale, 0.2F * particleScale, 0.2F * particleScale);
double intensity = (double) (this.particleAge + interp) / (double) this.particleMaxAge;
double inverse = 1.0D - intensity;
Tessellator tessellator = Tessellator.instance;
RenderHelper.disableStandardItemLighting();
Random random = new Random(432L);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glDepthMask(false);
GL11.glPushMatrix();
float scale = 0.5F;
for(int i = 0; i < 100; i++) {
GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F);
float vert1 = (random.nextFloat() * 20.0F + 5.0F + 1 * 10.0F) * (float) (intensity * scale);
float vert2 = (random.nextFloat() * 2.0F + 1.0F + 1 * 2.0F) * (float) (intensity * scale);
tessellator.startDrawing(6);
tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, (float) inverse);
tessellator.addVertex(0.0D, 0.0D, 0.0D);
tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F);
tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2);
tessellator.addVertex(0.866D * vert2, vert1, -0.5F * vert2);
tessellator.addVertex(0.0D, vert1, 1.0F * vert2);
tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2);
tessellator.draw();
}
GL11.glPopMatrix();
GL11.glDepthMask(true);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_BLEND);
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_ALPHA_TEST);
RenderHelper.enableStandardItemLighting();
/*GL11.glScalef(0.2F * particleScale, 0.2F * particleScale, 0.2F * particleScale);
double intensity = (double) this.particleAge / (double) this.particleMaxAge;
double inverse = 1.0D - intensity;
Tessellator tessellator = Tessellator.instance;
RenderHelper.disableStandardItemLighting();
Random random = new Random(432L);
GL11.glDisable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glDepthMask(false);
GL11.glPushMatrix();
float scale = 0.002F;
for(int i = 0; i < 300; i++) {
GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(random.nextFloat() * 360.0F, 0.0F, 1.0F, 0.0F);
float vert1 = (random.nextFloat() * 20.0F + 5.0F + 1 * 10.0F) * (float) (intensity * scale);
float vert2 = (random.nextFloat() * 2.0F + 1.0F + 1 * 2.0F) * (float) (intensity * scale);
tessellator.startDrawing(6);
tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, (float) inverse);
tessellator.addVertex(x + 0.0D, y + 0.0D, z + 0.0D);
tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 0.0F);
tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2);
tessellator.addVertex(0.866D * vert2, vert1, -0.5F * vert2);
tessellator.addVertex(0.0D, vert1, 1.0F * vert2);
tessellator.addVertex(-0.866D * vert2, vert1, -0.5F * vert2);
tessellator.draw();
}
GL11.glPopMatrix();
GL11.glDepthMask(true);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glDisable(GL11.GL_BLEND);
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_ALPHA_TEST);
RenderHelper.enableStandardItemLighting();*/
}
}

View File

@ -66,7 +66,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler {
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance;
int meta = world.getBlockMetadata(x, y, z);
//int meta = world.getBlockMetadata(x, y, z);
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));

View File

@ -0,0 +1,156 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.network.CableDiode;
import com.hbm.lib.Library;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
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 RenderDiode implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
GL11.glPushMatrix();
Tessellator tessellator = Tessellator.instance;
block.setBlockBoundsForItemRender();
renderer.setRenderBoundsFromBlock(block);
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
GL11.glTranslatef(-0.5F, -0.625F, -0.5F);
IIcon iiconPad = ModBlocks.hadron_coil_alloy.getIcon(0, 0);
IIcon iconCable = ModBlocks.red_cable.getIcon(0, 0);
tessellator.setColorOpaque_F(1, 1, 1);
for(int i = 0; i< 2; i++) {
if(i == 0) {
renderer.setRenderBounds( 0D, 0.875D, 0D, 1D, 1D, 1D);
} else {
renderer.setOverrideBlockTexture(iiconPad);
double radius = 0.375D;
renderer.setRenderBounds(0.5D - radius, 0.5D - radius, 0.5D - radius, 0.5D + radius, 0.5D + radius, 0.5D + radius);
}
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, -1.0F, 0.0F);
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, -1.0F);
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
tessellator.draw();
}
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
GL11.glRotated(180, 0, 1, 0);
tessellator.startDrawingQuads();
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posX", iconCable, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negX", iconCable, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negY", iconCable, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posZ", iconCable, tessellator, 0, false);
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negZ", iconCable, tessellator, 0, false);
tessellator.draw();
renderer.clearOverrideBlockTexture();
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 iiconPad = ModBlocks.hadron_coil_alloy.getIcon(0, 0);
IIcon iconCable = ModBlocks.red_cable.getIcon(0, 0);
int meta = world.getBlockMetadata(x, y, z);
tessellator.setColorOpaque_F(1, 1, 1);
double width = 0.875D;
renderer.setRenderBounds(
0D + (meta == 4 ? width : 0),
0D + (meta == 0 ? width : 0),
0D + (meta == 2 ? width : 0),
1D - (meta == 5 ? width : 0),
1D - (meta == 1 ? width : 0),
1D - (meta == 3 ? width : 0)
);
renderer.renderStandardBlock(block, x, y, z);
renderer.setOverrideBlockTexture(iiconPad);
double radius = 0.375D;
double minus = 0D;
renderer.setRenderBounds(
0.5D - radius + (meta == 4 ? minus : 0),
0.5D - radius + (meta == 0 ? minus : 0),
0.5D - radius + (meta == 2 ? minus : 0),
0.5D + radius - (meta == 5 ? minus : 0),
0.5D + radius - (meta == 1 ? minus : 0),
0.5D + radius - (meta == 3 ? minus : 0)
);
renderer.renderStandardBlock(block, x, y, z);
renderer.clearOverrideBlockTexture();
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1);
boolean pX = Library.canConnect(world, x + 1, y, z, Library.NEG_X);
boolean nX = Library.canConnect(world, x - 1, y, z, Library.POS_X);
boolean pY = Library.canConnect(world, x, y + 1, z, Library.NEG_Y);
boolean nY = Library.canConnect(world, x, y - 1, z, Library.POS_Y);
boolean pZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z);
boolean nZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z);
tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F);
//ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "Core", iconCable, tessellator, 0, true);
if(pX) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posX", iconCable, tessellator, 0, true);
if(nX) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negX", iconCable, tessellator, 0, true);
if(pY) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posY", iconCable, tessellator, 0, true);
if(nY) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negY", iconCable, tessellator, 0, true);
if(nZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "posZ", iconCable, tessellator, 0, true);
if(pZ) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.cable_neo, "negZ", iconCable, tessellator, 0, true);
tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F);
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
@Override
public int getRenderId() {
return CableDiode.renderID;
}
}

View File

@ -617,11 +617,20 @@ public class ItemRenderLibrary {
public void renderInventory() {
GL11.glScaled(6, 6, 6);
}
public void renderNonInv() {
GL11.glTranslated(0.25, 0.625, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glRotated(-15, 0, 0, 1);
}
public void renderCommon() {
GL11.glScaled(4, 4, 4);
bindTexture(ResourceManager.mine_he_tex);
ResourceManager.mine_he.renderAll();
}});
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.mine_marelet_tex); ResourceManager.mine_marelet.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glEnable(GL11.GL_CULL_FACE);
}
});
renderers.put(Item.getItemFromBlock(ModBlocks.mine_shrap), new ItemRenderBase() {
public void renderInventory() {
@ -1227,6 +1236,28 @@ public class ItemRenderLibrary {
bindTexture(ResourceManager.chemfac_tex); ResourceManager.chemfac.renderPart("Main");
GL11.glShadeModel(GL11.GL_FLAT);
}});
renderers.put(Item.getItemFromBlock(ModBlocks.red_pylon_large), new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -5, 0);
GL11.glScaled(2.25, 2.25, 2.25);
}
public void renderCommon() {
GL11.glScaled(0.5, 0.5, 0.5);
bindTexture(ResourceManager.pylon_large_tex); ResourceManager.pylon_large.renderAll();
}});
renderers.put(Item.getItemFromBlock(ModBlocks.substation), new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -2.5, 0);
GL11.glScaled(4.5, 4.5, 4.5);
}
public void renderCommon() {
GL11.glScaled(0.5, 0.5, 0.5);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.substation_tex); ResourceManager.substation.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
}});
}
private static void bindTexture(ResourceLocation res) {

View File

@ -11,39 +11,42 @@ import net.minecraft.tileentity.TileEntity;
public class RenderLandmine extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
{
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
@Override
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glRotatef(180, 0F, 1F, 0F);
Block block = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord);
if(block == ModBlocks.mine_ap) {
GL11.glTranslated(0, -0.075, 0);
GL11.glTranslated(0, -0.075, 0);
GL11.glScaled(1.5D, 1.5D, 1.5D);
bindTexture(ResourceManager.mine_ap_tex);
ResourceManager.mine_ap.renderAll();
ResourceManager.mine_ap.renderAll();
}
if(block == ModBlocks.mine_he) {
bindTexture(ResourceManager.mine_he_tex);
ResourceManager.mine_he.renderAll();
GL11.glRotatef(-90, 0F, 1F, 0F);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.mine_marelet_tex);
ResourceManager.mine_marelet.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
}
if(block == ModBlocks.mine_shrap) {
bindTexture(ResourceManager.mine_shrap_tex);
ResourceManager.mine_he.renderAll();
ResourceManager.mine_he.renderAll();
}
if(block == ModBlocks.mine_fat) {
GL11.glScaled(0.25D, 0.25D, 0.25D);
bindTexture(ResourceManager.mine_fat_tex);
ResourceManager.mine_fat.renderAll();
ResourceManager.mine_fat.renderAll();
}
GL11.glPopMatrix();
}
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}
}

View File

@ -5,6 +5,7 @@ import java.util.HashMap;
import com.hbm.blocks.generic.BlockBobble.TileEntityBobble;
import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter;
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
import com.hbm.blocks.network.CableDiode.TileEntityDiode;
import com.hbm.tileentity.bomb.*;
import com.hbm.tileentity.conductor.*;
import com.hbm.tileentity.deco.*;
@ -289,6 +290,7 @@ public class TileMappings {
private static void putNetwork() {
put(TileEntityCableBaseNT.class, "tileentity_cable", "tileentity_wirecoated");
put(TileEntityCableSwitch.class, "tileentity_cable_switch");
put(TileEntityDiode.class, "tileentity_cable_diode");
put(TileEntityConnector.class, "tileentity_connector_redwire");
put(TileEntityPylon.class, "tileentity_pylon_redwire");

View File

@ -37,29 +37,32 @@ public class TileEntityLandmine extends TileEntity {
if (block == ModBlocks.mine_fat) {
range = 2.5D;
}
if(!isPrimed)
range *= 2;
List<Object> list = worldObj.getEntitiesWithinAABBExcludingEntity(null,
AxisAlignedBB.getBoundingBox(xCoord - range, yCoord - height, zCoord - range, xCoord + range, yCoord + height, zCoord + range));
AxisAlignedBB.getBoundingBox(xCoord - range, yCoord - height, zCoord - range, xCoord + range + 1, yCoord + height, zCoord + range + 1));
boolean flag = false;
for (Object o : list) {
if (o instanceof EntityLivingBase) {
for(Object o : list) {
if(o instanceof EntityLivingBase) {
flag = true;
if(isPrimed) {
((Landmine)block).explode(worldObj, xCoord, yCoord, zCoord);
//why did i do it like that?
((Landmine) block).explode(worldObj, xCoord, yCoord, zCoord);
}
return;
}
}
if(!isPrimed && !flag) {
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:item.techBoop", 2.0F, 1.0F);
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:weapon.fstbmbStart", 3.0F, 1.0F);
isPrimed = true;
}
}

View File

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

View File

@ -18,6 +18,7 @@ import com.hbm.util.InventoryUtil;
import api.hbm.energy.IEnergyUser;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
@ -266,6 +267,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa
if(te instanceof IInventory) {
IInventory inv = (IInventory) te;
//ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null;
for(int i = indices[2]; i <= indices[3]; i++) {
@ -276,7 +278,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa
for(int j = 0; j < inv.getSizeInventory(); j++) {
ItemStack target = inv.getStackInSlot(j);
if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize()) {
if(InventoryUtil.doesStackDataMatch(out, target) && target.stackSize < target.getMaxStackSize() && target.stackSize < inv.getInventoryStackLimit()) {
this.decrStackSize(i, 1);
target.stackSize++;
return;
@ -286,8 +288,9 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa
for(int j = 0; j < inv.getSizeInventory(); j++) {
if(inv.getStackInSlot(j) == null) {
inv.setInventorySlotContents(j, out.copy());
inv.getStackInSlot(j).stackSize = 1;
ItemStack copy = out.copy();
copy.stackSize = 1;
inv.setInventorySlotContents(j, copy);
this.decrStackSize(i, 1);
return;
}

View File

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

View File

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

View File

@ -37,7 +37,7 @@ public class TileEntityCableBaseNT extends TileEntity implements IEnergyConducto
IEnergyConductor conductor = (IEnergyConductor) te;
if(!conductor.canConnect(dir.getOpposite()))
break;
continue;
if(this.getPowerNet() == null && conductor.getPowerNet() != null) {
conductor.getPowerNet().joinLink(this);

View File

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

View File

@ -7,6 +7,7 @@ import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
@ -256,7 +257,6 @@ public class InventoryUtil {
if(inv.stackSize <= 0) {
inventory[j] = null;
System.out.println("da yis");
}
}
}
@ -447,4 +447,86 @@ public class InventoryUtil {
return true;
}
public static boolean mergeItemStack(List<Slot> slots, ItemStack stack, int start, int end, boolean reverse) {
boolean success = false;
int index = start;
if(reverse) {
index = end - 1;
}
Slot slot;
ItemStack current;
if(stack.isStackable()) {
while(stack.stackSize > 0 && (!reverse && index < end || reverse && index >= start)) {
slot = slots.get(index);
current = slot.getStack();
if(current != null) {
int max = Math.min(stack.getMaxStackSize(), slot.getSlotStackLimit());
int toRemove = Math.min(stack.stackSize, max);
if(slot.isItemValid(ItemStackUtil.carefulCopyWithSize(stack, toRemove)) && current.getItem() == stack.getItem() &&
(!stack.getHasSubtypes() || stack.getItemDamage() == current.getItemDamage()) && ItemStack.areItemStackTagsEqual(stack, current)) {
int currentSize = current.stackSize + stack.stackSize;
if(currentSize <= max) {
stack.stackSize = 0;
current.stackSize = currentSize;
slot.putStack(current);
success = true;
} else if(current.stackSize < max) {
stack.stackSize -= stack.getMaxStackSize() - current.stackSize;
current.stackSize = max;
slot.putStack(current);
success = true;
}
}
}
if(reverse) {
--index;
} else {
++index;
}
}
}
if(stack.stackSize > 0) {
if(reverse) {
index = end - 1;
} else {
index = start;
}
while((!reverse && index < end || reverse && index >= start) && stack.stackSize > 0) {
slot = slots.get(index);
current = slot.getStack();
if(current == null) {
int max = Math.min(stack.getMaxStackSize(), slot.getSlotStackLimit());
int toRemove = Math.min(stack.stackSize, max);
if(slot.isItemValid(ItemStackUtil.carefulCopyWithSize(stack, toRemove))) {
current = stack.splitStack(toRemove);
slot.putStack(current);
success = true;
}
}
if(reverse) {
--index;
} else {
++index;
}
}
}
return success;
}
}

View File

@ -15,6 +15,15 @@ public class ItemStackUtil {
return stack.copy();
}
public static ItemStack carefulCopyWithSize(ItemStack stack, int size) {
if(stack == null)
return null;
ItemStack copy = stack.copy();
copy.stackSize = size;
return copy;
}
/**
* Runs carefulCopy over the entire ItemStack array.
* @param array

View File

@ -0,0 +1,109 @@
package com.hbm.world.feature;
import java.util.Random;
import com.hbm.inventory.RecipesCommon.MetaBlock;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.PlayerInformPacket;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraft.world.gen.NoiseGeneratorPerlin;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent;
public class OreLayer {
private NoiseGeneratorPerlin noise;
private MetaBlock ore;
private Block target;
private float density;
/** 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 int threshold = 5;
/** 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 OreLayer(Block ore, float density) {
this(ore, 0, Blocks.stone, density);
}
public OreLayer(Block ore, int meta, Block target, float density) {
this.ore = new MetaBlock(ore, meta);
this.target = target;
this.density = density;
MinecraftForge.EVENT_BUS.register(this);
}
public OreLayer setThreshold(int threshold) {
this.threshold = threshold;
return this;
}
public OreLayer setRangeMult(int rangeMult) {
this.rangeMult = rangeMult;
return this;
}
public OreLayer setMaxRange(int maxRange) {
this.maxRange = maxRange;
return this;
}
public OreLayer 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), 4);
}
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++) {
if(event.rand.nextFloat() < density) {
Block genTarget = world.getBlock(x, y, z);
if(genTarget.isReplaceableOreGen(world, x, y, z, target)) {
world.setBlock(x, y, z, ore.block, ore.meta, 2);
}
}
}
}
}
}
}
}

View File

@ -1014,6 +1014,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)
@ -3024,6 +3025,7 @@ tile.broadcaster_pc.name=Korrupter Sender
tile.burning_earth.name=Brennendes Gras
tile.c4.name=C4
tile.cable_detector.name=Redstone-Stromschalter
tile.cable_diode.name=Rote Kupferdiode
tile.cable_switch.name=Stromschalter
tile.charge_c4.name=Abrissladung
tile.charge_dynamite.name=Zeitbombe

View File

@ -1225,6 +1225,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)
@ -3396,6 +3397,7 @@ tile.broadcaster_pc.name=Corrupted Broadcaster
tile.burning_earth.name=Burning Grass
tile.c4.name=C-4
tile.cable_detector.name=Redstone Power Switch
tile.cable_diode.name=Red Copper Diode
tile.cable_switch.name=Power Switch
tile.charge_c4.name=Demolition Charge
tile.charge_dynamite.name=Time Bomb

View File

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

View File

@ -0,0 +1,815 @@
# Blender v2.79 (sub 0) OBJ File: 'marelet.blend'
# www.blender.org
o Circle
v -0.000000 0.000000 -0.250000
v -0.095671 0.000000 -0.230970
v -0.176777 0.000000 -0.176777
v -0.230970 0.000000 -0.095671
v -0.250000 0.000000 0.000000
v -0.230970 0.000000 0.095671
v -0.176777 0.000000 0.176777
v -0.095671 0.000000 0.230970
v -0.000000 0.000000 0.250000
v 0.095671 0.000000 0.230970
v 0.176777 0.000000 0.176777
v 0.230970 0.000000 0.095671
v 0.250000 0.000000 -0.000000
v 0.230970 0.000000 -0.095671
v 0.176777 0.000000 -0.176777
v 0.095671 0.000000 -0.230970
v -0.000000 0.093750 -0.250000
v -0.095671 0.093750 -0.230970
v -0.176777 0.093750 -0.176777
v -0.230970 0.093750 -0.095671
v -0.250000 0.093750 0.000000
v -0.230970 0.093750 0.095671
v -0.176777 0.093750 0.176777
v -0.095671 0.093750 0.230970
v -0.000000 0.093750 0.250000
v 0.095671 0.093750 0.230970
v 0.176777 0.093750 0.176777
v 0.230970 0.093750 0.095671
v 0.250000 0.093750 -0.000000
v 0.230970 0.093750 -0.095671
v 0.176777 0.093750 -0.176777
v 0.095671 0.093750 -0.230970
v -0.000000 0.093750 -0.156250
v -0.059794 0.093750 -0.144356
v -0.110485 0.093750 -0.110485
v -0.144356 0.093750 -0.059794
v -0.156250 0.093750 -0.000000
v -0.144356 0.093750 0.059794
v -0.110485 0.093750 0.110485
v -0.059794 0.093750 0.144356
v -0.000000 0.093750 0.156250
v 0.059794 0.093750 0.144356
v 0.110485 0.093750 0.110485
v 0.144356 0.093750 0.059794
v 0.156250 0.093750 -0.000000
v 0.144356 0.093750 -0.059794
v 0.110485 0.093750 -0.110485
v 0.059794 0.093750 -0.144356
v -0.059794 0.125000 -0.144356
v -0.000000 0.125000 -0.156250
v -0.110485 0.125000 -0.110485
v -0.144356 0.125000 -0.059794
v -0.156250 0.125000 -0.000000
v -0.144356 0.125000 0.059794
v -0.110485 0.125000 0.110485
v -0.059794 0.125000 0.144356
v -0.000000 0.125000 0.156250
v 0.059794 0.125000 0.144356
v 0.110485 0.125000 0.110485
v 0.144356 0.125000 0.059794
v 0.156250 0.125000 -0.000000
v 0.144356 0.125000 -0.059794
v 0.110485 0.125000 -0.110485
v 0.059794 0.125000 -0.144356
v -0.018686 0.125000 -0.045111
v -0.000000 0.125000 -0.048828
v -0.034527 0.125000 -0.034527
v -0.045111 0.125000 -0.018686
v -0.048828 0.125000 -0.000000
v -0.045111 0.125000 0.018686
v -0.034527 0.125000 0.034527
v -0.018686 0.125000 0.045111
v -0.000000 0.125000 0.048828
v 0.018686 0.125000 0.045111
v 0.034527 0.125000 0.034527
v 0.045111 0.125000 0.018686
v 0.048828 0.125000 -0.000000
v 0.045111 0.125000 -0.018686
v 0.034527 0.125000 -0.034527
v 0.018686 0.125000 -0.045111
v -0.018686 0.156250 -0.045111
v -0.000000 0.156250 -0.048828
v -0.034527 0.156250 -0.034527
v -0.045111 0.156250 -0.018686
v -0.048828 0.156250 -0.000000
v -0.045111 0.156250 0.018686
v -0.034527 0.156250 0.034527
v -0.018686 0.156250 0.045111
v -0.000000 0.156250 0.048828
v 0.018686 0.156250 0.045111
v 0.034527 0.156250 0.034527
v 0.045111 0.156250 0.018686
v 0.048828 0.156250 -0.000000
v 0.045111 0.156250 -0.018686
v 0.034527 0.156250 -0.034527
v 0.018686 0.156250 -0.045111
v -0.062500 0.071843 -0.299278
v -0.062500 0.084642 -0.290316
v -0.078125 0.080805 -0.312078
v -0.078125 0.093604 -0.303116
v 0.062500 0.071843 -0.299278
v 0.062500 0.084642 -0.290316
v 0.078125 0.080805 -0.312078
v 0.078125 0.093604 -0.303116
v -0.078125 0.025957 -0.233746
v -0.062500 0.025957 -0.233746
v -0.062500 0.038756 -0.224784
v -0.078125 0.038756 -0.224784
v 0.078125 0.038756 -0.224784
v 0.078125 0.025957 -0.233746
v 0.062500 0.025957 -0.233746
v 0.062500 0.038756 -0.224784
v -0.007813 0.125000 -0.061035
v -0.007813 0.125000 0.061035
v -0.007813 0.140625 -0.061035
v -0.007813 0.140625 0.061035
v 0.007812 0.125000 -0.061035
v 0.007812 0.125000 0.061035
v 0.007812 0.140625 -0.061035
v 0.007812 0.140625 0.061035
v -0.023438 0.125000 -0.092285
v -0.023438 0.140625 -0.092285
v 0.023437 0.125000 -0.092285
v 0.023437 0.140625 -0.092285
v -0.023438 0.125000 0.092285
v -0.023438 0.140625 0.092285
v 0.023437 0.125000 0.092285
v 0.023437 0.140625 0.092285
v 0.023437 0.140625 0.076660
v 0.023437 0.125000 0.076660
v -0.023438 0.140625 0.076660
v -0.023438 0.125000 0.076660
v -0.007813 0.125000 0.107910
v -0.007813 0.140625 0.107910
v 0.007812 0.125000 0.107910
v 0.007812 0.140625 0.107910
v -0.000000 0.000000 -0.250000
v -0.095671 0.000000 -0.230970
v -0.176777 0.000000 -0.176777
v -0.230970 0.000000 -0.095671
v -0.250000 0.000000 0.000000
v -0.230970 0.000000 0.095671
v -0.176777 0.000000 0.176777
v -0.095671 0.000000 0.230970
v -0.000000 0.000000 0.250000
v 0.095671 0.000000 0.230970
v 0.176777 0.000000 0.176777
v 0.230970 0.000000 0.095671
v 0.250000 0.000000 -0.000000
v 0.230970 0.000000 -0.095671
v 0.176777 0.000000 -0.176777
v 0.095671 0.000000 -0.230970
v -0.059794 0.125000 -0.144356
v -0.000000 0.125000 -0.156250
v -0.110485 0.125000 -0.110485
v -0.144356 0.125000 -0.059794
v -0.156250 0.125000 -0.000000
v -0.144356 0.125000 0.059794
v -0.110485 0.125000 0.110485
v -0.059794 0.125000 0.144356
v -0.000000 0.125000 0.156250
v 0.059794 0.125000 0.144356
v 0.110485 0.125000 0.110485
v 0.144356 0.125000 0.059794
v 0.156250 0.125000 -0.000000
v 0.144356 0.125000 -0.059794
v 0.110485 0.125000 -0.110485
v 0.059794 0.125000 -0.144356
v -0.018686 0.125000 -0.045111
v -0.000000 0.125000 -0.048828
v -0.034527 0.125000 -0.034527
v -0.045111 0.125000 -0.018686
v -0.048828 0.125000 -0.000000
v -0.045111 0.125000 0.018686
v -0.034527 0.125000 0.034527
v -0.018686 0.125000 0.045111
v -0.000000 0.125000 0.048828
v 0.018686 0.125000 0.045111
v 0.034527 0.125000 0.034527
v 0.045111 0.125000 0.018686
v 0.048828 0.125000 -0.000000
v 0.045111 0.125000 -0.018686
v 0.034527 0.125000 -0.034527
v 0.018686 0.125000 -0.045111
v -0.018686 0.156250 -0.045111
v -0.000000 0.156250 -0.048828
v -0.034527 0.156250 -0.034527
v -0.045111 0.156250 -0.018686
v -0.048828 0.156250 -0.000000
v -0.045111 0.156250 0.018686
v -0.034527 0.156250 0.034527
v -0.018686 0.156250 0.045111
v -0.000000 0.156250 0.048828
v 0.018686 0.156250 0.045111
v 0.034527 0.156250 0.034527
v 0.045111 0.156250 0.018686
v 0.048828 0.156250 -0.000000
v 0.045111 0.156250 -0.018686
v 0.034527 0.156250 -0.034527
v 0.018686 0.156250 -0.045111
v -0.000000 0.093750 -0.250000
v -0.095671 0.093750 -0.230970
v -0.176777 0.093750 -0.176777
v -0.230970 0.093750 -0.095671
v -0.250000 0.093750 0.000000
v -0.230970 0.093750 0.095671
v -0.176777 0.093750 0.176777
v -0.095671 0.093750 0.230970
v -0.000000 0.093750 0.250000
v 0.095671 0.093750 0.230970
v 0.176777 0.093750 0.176777
v 0.230970 0.093750 0.095671
v 0.250000 0.093750 -0.000000
v 0.230970 0.093750 -0.095671
v 0.176777 0.093750 -0.176777
v 0.095671 0.093750 -0.230970
v -0.000000 0.093750 -0.156250
v -0.059794 0.093750 -0.144356
v -0.110485 0.093750 -0.110485
v -0.144356 0.093750 -0.059794
v -0.156250 0.093750 -0.000000
v -0.144356 0.093750 0.059794
v -0.110485 0.093750 0.110485
v -0.059794 0.093750 0.144356
v -0.000000 0.093750 0.156250
v 0.059794 0.093750 0.144356
v 0.110485 0.093750 0.110485
v 0.144356 0.093750 0.059794
v 0.156250 0.093750 -0.000000
v 0.144356 0.093750 -0.059794
v 0.110485 0.093750 -0.110485
v 0.059794 0.093750 -0.144356
v 0.217422 0.093750 0.115947
v 0.245242 0.093750 0.023918
v 0.235727 0.093750 -0.071753
v 0.135888 0.093750 0.072467
v 0.153277 0.093750 0.014949
v 0.147330 0.093750 -0.044846
v 0.135888 0.093750 -0.072467
v 0.153277 0.093750 -0.014949
v 0.147330 0.093750 0.044846
v 0.118953 0.093750 0.097813
v 0.217422 0.093750 -0.115947
v 0.245242 0.093750 -0.023918
v 0.235727 0.093750 0.071753
v 0.190325 0.093750 0.156500
v 0.127421 0.093750 -0.085140
v 0.150303 0.093750 -0.029897
v 0.150303 0.093750 0.029897
v 0.127421 0.093750 0.085140
v 0.203873 0.093750 -0.136224
v 0.240485 0.093750 -0.047835
v 0.240485 0.093750 0.047835
v 0.203873 0.093750 0.136224
vt 0.021128 0.848623
vt 0.002102 0.881181
vt 0.002102 0.848622
vt 0.024844 0.881181
vt 0.062003 0.913740
vt 0.024844 0.913740
vt 0.084745 0.881181
vt 0.084745 0.913740
vt 0.058287 0.848623
vt 0.028560 0.816064
vt 0.058287 0.816065
vt 0.028560 0.946298
vt 0.062003 0.881181
vt 0.021128 0.946298
vt 0.002102 0.913739
vt 0.065719 0.816064
vt 0.084745 0.848623
vt 0.065719 0.848623
vt 0.065719 0.946299
vt 0.084745 0.946299
vt 0.021128 0.816064
vt 0.002102 0.816064
vt 0.064819 0.101506
vt 0.075401 0.567673
vt 0.022198 0.660399
vt 0.119565 0.500000
vt 0.116848 1.000000
vt 0.116848 0.500000
vt 0.141304 0.500000
vt 0.138587 1.000000
vt 0.138587 0.500000
vt 0.122283 0.500000
vt 0.119565 1.000000
vt 0.103261 0.500000
vt 0.100543 1.000000
vt 0.100543 0.500000
vt 0.144022 1.000000
vt 0.141304 1.000000
vt 0.125000 0.500000
vt 0.122283 1.000000
vt 0.105978 0.500000
vt 0.103261 1.000000
vt 0.127717 0.500000
vt 0.125000 1.000000
vt 0.108696 0.500000
vt 0.105978 1.000000
vt 0.130435 1.000000
vt 0.127717 1.000000
vt 0.111413 0.500000
vt 0.108696 1.000000
vt 0.130435 0.500000
vt 0.133152 1.000000
vt 0.114130 1.000000
vt 0.111413 1.000000
vt 0.135870 0.500000
vt 0.133152 0.500000
vt 0.114130 0.500000
vt 0.135870 1.000000
vt 0.029848 0.595825
vt 0.022768 0.283972
vt 0.058360 0.221940
vt 0.028560 0.848623
vt 0.058287 0.946299
vt 0.002102 0.946298
vt 0.084745 0.816064
vt 0.011615 0.194232
vt 0.022198 0.101506
vt 0.036025 0.051323
vt 0.050991 0.051323
vt 0.075401 0.194232
vt 0.081129 0.315385
vt 0.081129 0.446520
vt 0.064819 0.660399
vt 0.050991 0.710582
vt 0.036025 0.710582
vt 0.011615 0.567672
vt 0.005887 0.446520
vt 0.005887 0.315385
vt 0.144022 0.500000
vt 0.022768 0.533794
vt 0.018937 0.452746
vt 0.018937 0.365020
vt 0.029848 0.221940
vt 0.039098 0.188369
vt 0.049110 0.188369
vt 0.065440 0.283971
vt 0.069271 0.365020
vt 0.069271 0.452746
vt 0.065440 0.533794
vt 0.058360 0.595825
vt 0.049110 0.629397
vt 0.039098 0.629397
vt 0.828804 0.500000
vt 0.771739 -0.000000
vt 0.828804 -0.000000
vt 0.429348 0.500000
vt 0.372283 -0.000000
vt 0.429348 -0.000000
vt 0.885870 0.500000
vt 0.885870 -0.000000
vt 0.486413 0.500000
vt 0.486413 -0.000000
vt 0.942935 0.500000
vt 0.942935 -0.000000
vt 0.543478 0.500000
vt 0.543478 -0.000000
vt 0.144022 0.500000
vt 0.086957 -0.000000
vt 0.144022 -0.000000
vt 1.000000 0.500000
vt 1.000000 -0.000000
vt 0.600543 0.500000
vt 0.600543 -0.000000
vt 0.201087 0.500000
vt 0.201087 -0.000000
vt 0.657609 0.500000
vt 0.657609 -0.000000
vt 0.258152 0.500000
vt 0.258152 -0.000000
vt 0.714674 0.500000
vt 0.714674 -0.000000
vt 0.315217 0.500000
vt 0.315217 -0.000000
vt 0.771739 0.500000
vt 0.372283 0.500000
vt 0.105978 0.880952
vt 0.103261 1.000000
vt 0.103261 0.880952
vt 0.127717 0.880952
vt 0.125000 1.000000
vt 0.125000 0.880952
vt 0.108696 0.880952
vt 0.105978 1.000000
vt 0.130435 0.880952
vt 0.127717 1.000000
vt 0.111413 0.880952
vt 0.108696 1.000000
vt 0.133152 0.880952
vt 0.130435 1.000000
vt 0.114130 0.880952
vt 0.111413 1.000000
vt 0.135870 0.880952
vt 0.133152 1.000000
vt 0.116848 0.880952
vt 0.114130 1.000000
vt 0.138587 0.880952
vt 0.135870 1.000000
vt 0.119565 0.880952
vt 0.116848 1.000000
vt 0.141304 0.880952
vt 0.138587 1.000000
vt 0.122283 0.880952
vt 0.119565 1.000000
vt 0.100543 1.000000
vt 0.100543 0.880952
vt 0.144022 0.880952
vt 0.141304 1.000000
vt 0.122283 1.000000
vt 0.133152 0.904762
vt 0.130435 1.000000
vt 0.130435 0.904762
vt 0.114130 0.904762
vt 0.111413 1.000000
vt 0.111413 0.904762
vt 0.135870 0.904762
vt 0.133152 1.000000
vt 0.116848 1.000000
vt 0.114130 1.000000
vt 0.138587 0.904762
vt 0.135870 1.000000
vt 0.116848 0.904762
vt 0.119565 1.000000
vt 0.141304 0.904762
vt 0.138587 1.000000
vt 0.122283 0.904762
vt 0.119565 0.904762
vt 0.100543 0.904762
vt 0.103261 1.000000
vt 0.100543 1.000000
vt 0.144022 0.904762
vt 0.141304 1.000000
vt 0.125000 0.904762
vt 0.122283 1.000000
vt 0.105978 0.904762
vt 0.103261 0.904762
vt 0.127717 0.904762
vt 0.125000 1.000000
vt 0.108696 0.904762
vt 0.105978 1.000000
vt 0.127717 1.000000
vt 0.108696 1.000000
vt 0.009109 0.867647
vt 0.030876 0.892060
vt 0.009109 0.892060
vt 0.054996 0.892060
vt 0.076764 0.867648
vt 0.076764 0.892060
vt 0.002879 0.892060
vt 0.082994 0.892060
vt 0.037603 0.867648
vt 0.034817 0.892060
vt 0.034817 0.867648
vt 0.051056 0.892060
vt 0.048270 0.867648
vt 0.051056 0.867648
vt 0.054996 0.867648
vt 0.030876 0.867648
vt 0.041543 0.867648
vt 0.037603 0.892060
vt 0.048270 0.892060
vt 0.044329 0.867648
vt 0.044329 0.892060
vt 0.674592 0.500000
vt 0.660326 1.000000
vt 0.660326 0.500000
vt 0.845788 0.500000
vt 0.831522 1.000000
vt 0.831522 0.500000
vt 0.788723 0.500000
vt 0.774457 1.000000
vt 0.774457 0.500000
vt 0.731658 0.500000
vt 0.717391 1.000000
vt 0.717391 0.500000
vt 0.688859 0.500000
vt 0.703125 1.000000
vt 0.688859 1.000000
vt 0.802989 0.500000
vt 0.817255 1.000000
vt 0.802989 1.000000
vt 0.745924 0.500000
vt 0.760190 1.000000
vt 0.745924 1.000000
vt 0.674592 1.000000
vt 0.860054 0.500000
vt 0.845788 1.000000
vt 0.788723 1.000000
vt 0.731658 1.000000
vt 0.703125 0.500000
vt 0.603261 1.000000
vt 0.603261 0.500000
vt 0.543478 1.000000
vt 0.543478 0.500000
vt 0.486413 0.500000
vt 0.486413 1.000000
vt 0.429348 1.000000
vt 0.429348 0.500000
vt 0.372283 1.000000
vt 0.372283 0.500000
vt 0.312500 0.500000
vt 0.312500 1.000000
vt 0.255435 1.000000
vt 0.255435 0.500000
vt 0.201087 1.000000
vt 0.201087 0.500000
vt 0.144022 1.000000
vt 0.144022 0.500000
vt 0.086957 0.500000
vt 0.086957 1.000000
vt 1.000000 0.500000
vt 0.945652 1.000000
vt 0.945652 0.500000
vt 0.888587 0.500000
vt 0.888587 1.000000
vt 0.860054 1.000000
vt 0.817255 0.500000
vt 0.760190 0.500000
vt 0.086957 0.500000
vt 0.144022 1.000000
vt 0.144022 1.000000
vt 0.002879 0.867647
vt 0.082994 0.867648
vt 0.041543 0.892060
vt 1.000000 1.000000
vn 0.0000 0.8192 0.5736
vn 0.0000 0.5736 -0.8192
vn 1.0000 -0.0000 0.0000
vn 0.0000 -0.5736 0.8192
vn 0.0000 -0.8192 -0.5736
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 0.9239 0.0000 -0.3827
vn -0.7071 0.0000 0.7071
vn -0.9239 0.0000 0.3827
vn 0.7071 0.0000 -0.7071
vn -0.3827 0.0000 0.9239
vn 0.3827 0.0000 -0.9239
vn 0.0000 0.0000 1.0000
vn -0.3827 0.0000 -0.9239
vn 0.0000 0.0000 -1.0000
vn 0.3827 0.0000 0.9239
vn -0.7071 0.0000 -0.7071
vn 0.7071 0.0000 0.7071
vn -0.9239 0.0000 -0.3827
vn 0.9239 0.0000 0.3827
vn 0.9732 0.0000 0.2297
vn -0.9732 0.0000 0.2297
vn 0.8944 0.0000 0.4472
vn -0.8944 0.0000 0.4472
s off
f 98/1/1 108/2/1 107/3/1
f 100/4/2 103/5/2 99/6/2
f 103/5/3 109/7/3 110/8/3
f 102/9/4 97/10/4 101/11/4
f 103/5/5 97/12/5 99/6/5
f 100/4/1 102/9/1 104/13/1
f 97/14/5 105/15/5 99/6/5
f 101/16/6 112/17/6 102/18/6
f 101/19/5 110/8/5 111/20/5
f 99/6/6 108/2/6 100/4/6
f 97/21/3 107/3/3 106/22/3
f 102/18/1 109/7/1 104/13/1
f 151/23/7 147/24/7 143/25/7
f 160/26/8 175/27/8 159/28/8
f 168/29/8 183/30/8 167/31/8
f 161/32/8 176/33/8 160/26/8
f 153/34/8 170/35/8 154/36/8
f 168/29/8 170/37/8 184/38/8
f 162/39/8 177/40/8 161/32/8
f 155/41/8 169/42/8 153/34/8
f 163/43/8 178/44/8 162/39/8
f 156/45/8 171/46/8 155/41/8
f 163/43/8 180/47/8 179/48/8
f 157/49/8 172/50/8 156/45/8
f 164/51/8 181/52/8 180/47/8
f 157/49/8 174/53/8 173/54/8
f 166/55/8 181/52/8 165/56/8
f 159/28/8 174/53/8 158/57/8
f 167/31/8 182/58/8 166/55/8
f 186/59/8 189/60/8 193/61/8
f 98/1/1 100/4/1 108/2/1
f 100/4/2 104/13/2 103/5/2
f 103/5/3 104/13/3 109/7/3
f 102/9/4 98/62/4 97/10/4
f 103/5/5 101/63/5 97/12/5
f 100/4/1 98/62/1 102/9/1
f 97/14/5 106/64/5 105/15/5
f 101/16/6 111/65/6 112/17/6
f 101/19/5 103/5/5 110/8/5
f 99/6/6 105/15/6 108/2/6
f 97/21/3 98/1/3 107/3/3
f 102/18/1 112/17/1 109/7/1
f 139/66/7 138/67/7 137/68/7
f 137/68/7 152/69/7 151/23/7
f 151/23/7 150/70/7 149/71/7
f 149/71/7 148/72/7 151/23/7
f 148/72/7 147/24/7 151/23/7
f 147/24/7 146/73/7 145/74/7
f 145/74/7 144/75/7 147/24/7
f 144/75/7 143/25/7 147/24/7
f 143/25/7 142/76/7 141/77/7
f 141/77/7 140/78/7 139/66/7
f 139/66/7 137/68/7 151/23/7
f 143/25/7 141/77/7 139/66/7
f 139/66/7 151/23/7 143/25/7
f 160/26/8 176/33/8 175/27/8
f 168/29/8 184/38/8 183/30/8
f 161/32/8 177/40/8 176/33/8
f 153/34/8 169/42/8 170/35/8
f 168/29/8 154/79/8 170/37/8
f 162/39/8 178/44/8 177/40/8
f 155/41/8 171/46/8 169/42/8
f 163/43/8 179/48/8 178/44/8
f 156/45/8 172/50/8 171/46/8
f 163/43/8 164/51/8 180/47/8
f 157/49/8 173/54/8 172/50/8
f 164/51/8 165/56/8 181/52/8
f 157/49/8 158/57/8 174/53/8
f 166/55/8 182/58/8 181/52/8
f 159/28/8 175/27/8 174/53/8
f 167/31/8 183/30/8 182/58/8
f 186/59/8 185/80/8 189/60/8
f 185/80/8 187/81/8 189/60/8
f 187/81/8 188/82/8 189/60/8
f 189/60/8 190/83/8 191/84/8
f 191/84/8 192/85/8 189/60/8
f 192/85/8 193/61/8 189/60/8
f 193/61/8 194/86/8 195/87/8
f 195/87/8 196/88/8 197/89/8
f 197/89/8 198/90/8 199/91/8
f 199/91/8 200/92/8 186/59/8
f 193/61/8 195/87/8 186/59/8
f 195/87/8 197/89/8 186/59/8
f 197/89/8 199/91/8 186/59/8
s 1
f 30/93/9 13/94/3 14/95/9
f 23/96/10 6/97/11 7/98/10
f 31/99/12 14/95/9 15/100/12
f 24/101/13 7/98/10 8/102/13
f 32/103/14 15/100/12 16/104/14
f 25/105/15 8/102/13 9/106/15
f 18/107/16 1/108/17 2/109/16
f 17/110/17 16/104/14 1/111/17
f 26/112/18 9/106/15 10/113/18
f 19/114/19 2/109/16 3/115/19
f 27/116/20 10/113/18 11/117/20
f 20/118/21 3/115/19 4/119/21
f 28/120/22 11/117/20 12/121/22
f 21/122/6 4/119/21 5/123/6
f 29/124/3 12/121/22 13/94/3
f 22/125/11 5/123/6 6/97/11
f 35/126/19 49/127/16 34/128/16
f 43/129/20 58/130/18 42/131/18
f 36/132/21 51/133/19 35/126/19
f 44/134/22 59/135/20 43/129/20
f 37/136/6 52/137/21 36/132/21
f 45/138/3 60/139/22 44/134/22
f 38/140/11 53/141/6 37/136/6
f 46/142/9 61/143/3 45/138/3
f 39/144/10 54/145/11 38/140/11
f 47/146/12 62/147/9 46/142/9
f 40/148/13 55/149/10 39/144/10
f 48/150/14 63/151/12 47/146/12
f 41/152/15 56/153/13 40/148/13
f 34/128/16 50/154/17 33/155/17
f 33/156/17 64/157/14 48/150/14
f 42/131/18 57/158/15 41/152/15
f 77/159/3 92/160/22 76/161/22
f 70/162/11 85/163/6 69/164/6
f 78/165/9 93/166/3 77/159/3
f 70/162/11 87/167/10 86/168/11
f 79/169/12 94/170/9 78/165/9
f 71/171/10 88/172/13 87/167/10
f 80/173/14 95/174/12 79/169/12
f 73/175/15 88/172/13 72/176/13
f 66/177/17 81/178/16 82/179/17
f 66/180/17 96/181/14 80/173/14
f 74/182/18 89/183/15 73/175/15
f 67/184/19 81/178/16 65/185/16
f 75/186/20 90/187/18 74/182/18
f 68/188/21 83/189/19 67/184/19
f 75/186/20 92/160/22 91/190/20
f 69/164/6 84/191/21 68/188/21
f 119/192/23 118/193/9 117/194/23
f 114/195/21 115/196/24 113/197/24
f 123/198/25 119/192/23 117/194/23
f 115/196/24 121/199/26 113/197/24
f 128/200/22 130/201/9 129/202/9
f 132/203/21 126/204/11 131/205/21
f 114/195/21 131/205/21 116/206/21
f 129/202/9 118/193/9 120/207/9
f 136/208/18 127/209/22 128/200/22
f 125/210/11 134/211/13 126/204/11
f 133/212/13 136/208/18 134/211/13
f 246/213/8 227/214/8 211/215/8
f 243/216/8 230/217/8 214/218/8
f 244/219/8 229/220/8 213/221/8
f 245/222/8 228/223/8 212/224/8
f 254/225/8 236/226/8 250/227/8
f 252/228/8 238/229/8 248/230/8
f 253/231/8 237/232/8 249/233/8
f 254/225/8 242/234/8 246/213/8
f 251/235/8 239/236/8 243/216/8
f 252/228/8 240/237/8 244/219/8
f 253/231/8 241/238/8 245/222/8
f 233/239/8 228/223/8 236/226/8
f 211/215/8 226/240/8 210/241/8
f 210/241/8 225/242/8 209/243/8
f 208/244/8 225/242/8 224/245/8
f 208/244/8 223/246/8 207/247/8
f 207/247/8 222/248/8 206/249/8
f 205/250/8 222/248/8 221/251/8
f 205/250/8 220/252/8 204/253/8
f 204/253/8 219/254/8 203/255/8
f 203/255/8 218/256/8 202/257/8
f 201/258/8 218/256/8 217/259/8
f 201/260/8 232/261/8 216/262/8
f 215/263/8 232/261/8 231/264/8
f 251/235/8 231/264/8 247/265/8
f 235/266/8 230/217/8 238/229/8
f 234/267/8 229/220/8 237/232/8
f 30/93/9 29/124/3 13/94/3
f 23/96/10 22/125/11 6/97/11
f 31/99/12 30/93/9 14/95/9
f 24/101/13 23/96/10 7/98/10
f 32/103/14 31/99/12 15/100/12
f 25/105/15 24/101/13 8/102/13
f 18/107/16 17/268/17 1/108/17
f 17/110/17 32/103/14 16/104/14
f 26/112/18 25/105/15 9/106/15
f 19/114/19 18/107/16 2/109/16
f 27/116/20 26/112/18 10/113/18
f 20/118/21 19/114/19 3/115/19
f 28/120/22 27/116/20 11/117/20
f 21/122/6 20/118/21 4/119/21
f 29/124/3 28/120/22 12/121/22
f 22/125/11 21/122/6 5/123/6
f 35/126/19 51/133/19 49/127/16
f 43/129/20 59/135/20 58/130/18
f 36/132/21 52/137/21 51/133/19
f 44/134/22 60/139/22 59/135/20
f 37/136/6 53/141/6 52/137/21
f 45/138/3 61/143/3 60/139/22
f 38/140/11 54/145/11 53/141/6
f 46/142/9 62/147/9 61/143/3
f 39/144/10 55/149/10 54/145/11
f 47/146/12 63/151/12 62/147/9
f 40/148/13 56/153/13 55/149/10
f 48/150/14 64/157/14 63/151/12
f 41/152/15 57/158/15 56/153/13
f 34/128/16 49/127/16 50/154/17
f 33/156/17 50/269/17 64/157/14
f 42/131/18 58/130/18 57/158/15
f 77/159/3 93/166/3 92/160/22
f 70/162/11 86/168/11 85/163/6
f 78/165/9 94/170/9 93/166/3
f 70/162/11 71/171/10 87/167/10
f 79/169/12 95/174/12 94/170/9
f 71/171/10 72/176/13 88/172/13
f 80/173/14 96/181/14 95/174/12
f 73/175/15 89/183/15 88/172/13
f 66/177/17 65/185/16 81/178/16
f 66/180/17 82/270/17 96/181/14
f 74/182/18 90/187/18 89/183/15
f 67/184/19 83/189/19 81/178/16
f 75/186/20 91/190/20 90/187/18
f 68/188/21 84/191/21 83/189/19
f 75/186/20 76/161/22 92/160/22
f 69/164/6 85/163/6 84/191/21
f 119/192/23 120/207/9 118/193/9
f 114/195/21 116/206/21 115/196/24
f 123/198/25 124/271/25 119/192/23
f 115/196/24 122/272/26 121/199/26
f 128/200/22 127/209/22 130/201/9
f 132/203/21 125/210/11 126/204/11
f 114/195/21 132/203/21 131/205/21
f 129/202/9 130/201/9 118/193/9
f 136/208/18 135/273/18 127/209/22
f 125/210/11 133/212/13 134/211/13
f 133/212/13 135/273/18 136/208/18
f 246/213/8 242/234/8 227/214/8
f 243/216/8 239/236/8 230/217/8
f 244/219/8 240/237/8 229/220/8
f 245/222/8 241/238/8 228/223/8
f 254/225/8 233/239/8 236/226/8
f 252/228/8 235/266/8 238/229/8
f 253/231/8 234/267/8 237/232/8
f 254/225/8 250/227/8 242/234/8
f 251/235/8 247/265/8 239/236/8
f 252/228/8 248/230/8 240/237/8
f 253/231/8 249/233/8 241/238/8
f 233/239/8 212/224/8 228/223/8
f 211/215/8 227/214/8 226/240/8
f 210/241/8 226/240/8 225/242/8
f 208/244/8 209/243/8 225/242/8
f 208/244/8 224/245/8 223/246/8
f 207/247/8 223/246/8 222/248/8
f 205/250/8 206/249/8 222/248/8
f 205/250/8 221/251/8 220/252/8
f 204/253/8 220/252/8 219/254/8
f 203/255/8 219/254/8 218/256/8
f 201/258/8 202/257/8 218/256/8
f 201/260/8 217/274/8 232/261/8
f 215/263/8 216/262/8 232/261/8
f 251/235/8 215/263/8 231/264/8
f 235/266/8 214/218/8 230/217/8
f 234/267/8 213/221/8 229/220/8

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

View File

@ -3,7 +3,7 @@
"modid": "hbm",
"name": "Hbm's Nuclear Tech",
"description": "A mod that adds weapons, nuclear themed stuff and machines",
"version":"1.0.27_X4172",
"version":"1.0.27_X4178",
"mcversion": "1.7.10",
"url": "",
"updateUrl": "",