mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
getting railed again
This commit is contained in:
parent
f254756c3d
commit
4c3945c924
11
changelog
11
changelog
@ -7,6 +7,10 @@
|
||||
* Will automatically do single ingredient 2x2 or 3x3 recipes like compressing ingots into blocks at up to 9 operations per tick
|
||||
* Input is strictly on the top and output on the bottom
|
||||
* The side acts as an output for the ingredients as a way to de-clog the funnel from leftover materials
|
||||
* Stealth missile
|
||||
* A missile that is not picked up by radars, turrets or ABMs
|
||||
* Marginally more powerful than a tier 1 HE missile
|
||||
* Somewhat expensive, takes a full minute to make in the assembler
|
||||
|
||||
## Changed
|
||||
* Updated russian localization
|
||||
@ -23,14 +27,19 @@
|
||||
* Now features proper animations for drawing the weapon, firing and reloading, as well as new sounds
|
||||
* Comes with a new and improved 3D model as well as a cylinder gap flash when firing
|
||||
* Is now part of the red room loot pool
|
||||
* Durability has been drastically increased
|
||||
* Powder box recipes now produce 8 boxes from the same amount of ingredients, making cyclotron recipes more affordable
|
||||
* Buffed the radiation-powered engine, all valid fuels now produce 10x more energy per tick
|
||||
* Removed tungsten and HSS bolts as dedicated items, they are now a single bolt item that uses the autogen system
|
||||
* Regular steel is now also a valid bolt material which will replace tungsten in many recipes where tungsten just doesn't make sense
|
||||
* Bolts Are now 1/8 of an ingot instead of 1/2 which makes some recipes marginally cheaper, as well as making them equal to GregTech bolts
|
||||
* Bolts are oredicted and interchangeable, as well as recycleable in the crucible
|
||||
* The N45 naval mine has been obliterated
|
||||
* The solar boiler's ray rendering is no longer bound by particle settings, instead it will be disabled when fast graphics are enabaled
|
||||
* The solar boiler's internal buffer has been reduced, its steam output is now capped at 10,000mB/t (which should be 20kHE/t or 0.8MHE/s)
|
||||
|
||||
## Fixed
|
||||
* Fixed afterburn upgrades not being craftable with bakelite
|
||||
* Fixed bismuth block not being properly oredicted
|
||||
* Powder detectors that are used in the same network as diodes should now be somewhat less wrong
|
||||
* Powder detectors that are used in the same network as diodes should now be somewhat less wrong
|
||||
* Fixed horrifying gamebreaking issue that would frequently cause crashes, corrupt worlds and bluescreen PCs where the red copper block and the advanced alloy block had inconsistent colors
|
||||
|
||||
@ -664,7 +664,6 @@ public class ModBlocks {
|
||||
public static Block nuke_custom;
|
||||
public static Block nuke_solinium;
|
||||
public static Block nuke_n2;
|
||||
public static Block nuke_n45;
|
||||
public static Block nuke_fstbmb;
|
||||
public static Block bomb_multi;
|
||||
|
||||
@ -1174,7 +1173,8 @@ public class ModBlocks {
|
||||
public static Block rail_large_straight;
|
||||
public static Block rail_large_straight_short;
|
||||
public static Block rail_large_curve;
|
||||
public static Block rail_large_curve_wide;
|
||||
public static Block rail_large_curve_7;
|
||||
public static Block rail_large_curve_9;
|
||||
public static Block rail_large_ramp;
|
||||
public static Block rail_large_buffer;
|
||||
public static Block rail_large_switch;
|
||||
@ -1803,7 +1803,6 @@ public class ModBlocks {
|
||||
nuke_custom = new NukeCustom(Material.iron).setBlockName("nuke_custom").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":custom");
|
||||
nuke_solinium = new NukeSolinium(Material.iron).setBlockName("nuke_solinium").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_solinium");
|
||||
nuke_n2 = new NukeN2(Material.iron).setBlockName("nuke_n2").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_n2");
|
||||
nuke_n45 = new NukeN45(Material.iron).setBlockName("nuke_n45").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":code");
|
||||
nuke_fstbmb = new NukeBalefire(Material.iron).setBlockName("nuke_fstbmb").setCreativeTab(MainRegistry.nukeTab).setHardness(5.0F).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":nuke_fstbmb");
|
||||
|
||||
bomb_multi = new BombMulti(Material.iron).setBlockName("bomb_multi").setCreativeTab(MainRegistry.nukeTab).setResistance(200.0F).setBlockTextureName(RefStrings.MODID + ":bomb_multi1");
|
||||
@ -2252,14 +2251,15 @@ public class ModBlocks {
|
||||
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
||||
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve_wide = new RailStandardCurveWide().setBlockName("rail_large_curve_wide").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer");
|
||||
rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_straight_short = new RailStandardStraightShort().setBlockName("rail_large_straight_short").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve = new RailStandardCurveBase().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve_7 = new RailStandardCurveWide7().setBlockName("rail_large_curve_7").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve_9 = new RailStandardCurveWide9().setBlockName("rail_large_curve_9").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer");
|
||||
rail_large_switch = new RailStandardSwitch().setBlockName("rail_large_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_switch_flipped = new RailStandardSwitchFlipped().setBlockName("rail_large_switch_flipped").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
|
||||
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
|
||||
crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon");
|
||||
@ -2994,7 +2994,6 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(nuke_fleija, nuke_fleija.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(nuke_solinium, nuke_solinium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(nuke_n2, nuke_n2.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(nuke_n45, nuke_n45.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(nuke_fstbmb, nuke_fstbmb.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(nuke_custom, nuke_custom.getUnlocalizedName());
|
||||
|
||||
@ -3561,7 +3560,8 @@ public class ModBlocks {
|
||||
register(rail_large_straight);
|
||||
register(rail_large_straight_short);
|
||||
register(rail_large_curve);
|
||||
register(rail_large_curve_wide);
|
||||
register(rail_large_curve_7);
|
||||
register(rail_large_curve_9);
|
||||
register(rail_large_ramp);
|
||||
register(rail_large_buffer);
|
||||
register(rail_large_switch);
|
||||
|
||||
@ -1,137 +0,0 @@
|
||||
package com.hbm.blocks.bomb;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.bomb.TileEntityNukeN45;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class NukeN45 extends BlockContainer implements IBomb {
|
||||
|
||||
private final Random field_149933_a = new Random();
|
||||
private static boolean keepInventory = false;
|
||||
|
||||
public NukeN45(Material p_i45386_1_) {
|
||||
super(p_i45386_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return new TileEntityNukeN45();
|
||||
}
|
||||
|
||||
@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) {
|
||||
ISidedInventory tileentityfurnace = (ISidedInventory) 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(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;
|
||||
|
||||
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()));
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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_);
|
||||
}
|
||||
|
||||
@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) {
|
||||
return true;
|
||||
} else if(!player.isSneaking()) {
|
||||
TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z);
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
|
||||
return Item.getItemFromBlock(ModBlocks.nuke_n45);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
TileEntityNukeN45 entity = (TileEntityNukeN45) world.getTileEntity(x, y, z);
|
||||
|
||||
if(entity.getType() == 100) {
|
||||
entity.primed = true;
|
||||
return BombReturnCode.TRIGGERED;
|
||||
} else if(!entity.primed && entity.getType() > 0) {
|
||||
int t = entity.getType();
|
||||
entity.clearSlots();
|
||||
entity.explode(world, x, y, z, t);
|
||||
return BombReturnCode.DETONATED;
|
||||
}
|
||||
|
||||
return BombReturnCode.ERROR_MISSING_COMPONENT;
|
||||
}
|
||||
|
||||
return BombReturnCode.UNDEFINED;
|
||||
}
|
||||
}
|
||||
@ -158,8 +158,6 @@ public abstract class BlockRailWaypointSystem extends BlockDummyable implements
|
||||
currentPos = nextNode;
|
||||
}
|
||||
|
||||
if(!world.isRemote) PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + distRemaining).color(EnumChatFormatting.RED).flush(), 1), new TargetPoint(world.provider.dimensionId, x, y, z, 50));
|
||||
|
||||
info.overshoot = distRemaining;
|
||||
info.pos = new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord);
|
||||
|
||||
|
||||
@ -22,9 +22,11 @@ import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRenderBlock {
|
||||
public class RailStandardCurveBase extends BlockDummyable implements IRailNTM, IRenderBlock {
|
||||
|
||||
protected int width = 4;
|
||||
|
||||
public RailStandardCurve() {
|
||||
public RailStandardCurveBase() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@ -59,8 +61,8 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
double turnRadius = 4D;
|
||||
double axisDist = 4.5D;
|
||||
double turnRadius = width;
|
||||
double axisDist = width + 0.5D;
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist;
|
||||
@ -105,7 +107,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend
|
||||
double angleOvershoot = effAngle - 90D;
|
||||
moveAngle -= angleOvershoot;
|
||||
double lengthOvershoot = angleOvershoot * length90Deg / 90D;
|
||||
info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle);
|
||||
info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * width + rot.offsetX * (width + 1), y, cZ - dir.offsetZ * width + rot.offsetZ * (width + 1))).yaw((float) moveAngle);
|
||||
return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius);
|
||||
}
|
||||
|
||||
@ -130,7 +132,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 4, 0, 4, 0};
|
||||
return new int[] {0, 0, width, 0, width, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -208,9 +210,10 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM, IRend
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderInventory(Tessellator tessellator, Block block, int metadata) {
|
||||
GL11.glScaled(0.2, 0.2, 0.2);
|
||||
GL11.glTranslated(2.5, -0.0625, -1.5);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glScaled(0.3, 0.3, 0.3);
|
||||
GL11.glRotated(45, 0, 1, 0);
|
||||
GL11.glRotated(60, 1, 0, 0);
|
||||
GL11.glTranslated(2, 0, 2);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
@ -1,239 +0,0 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RailStandardCurveWide extends BlockDummyable implements IRailNTM, IRenderBlock {
|
||||
|
||||
public RailStandardCurveWide() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
|
||||
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
int cX = pos[0];
|
||||
int cY = pos[1];
|
||||
int cZ = pos[2];
|
||||
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
double turnRadius = 6D;
|
||||
double axisDist = 6.5D;
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist;
|
||||
double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist;
|
||||
|
||||
Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ);
|
||||
dist = dist.normalize();
|
||||
dist.xCoord *= turnRadius;
|
||||
dist.zCoord *= turnRadius;
|
||||
|
||||
double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90;
|
||||
|
||||
if(speed == 0) {
|
||||
info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle);
|
||||
return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord);
|
||||
}
|
||||
|
||||
double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90;
|
||||
if(dir == Library.NEG_X) angleDeg -= 90;
|
||||
if(dir == Library.POS_X) angleDeg += 90;
|
||||
if(dir == Library.POS_Z) angleDeg += 180;
|
||||
angleDeg = MathHelper.wrapAngleTo180_double(angleDeg);
|
||||
double length90Deg = turnRadius * Math.PI / 2D;
|
||||
double angularChange = speed / length90Deg * 90D;
|
||||
|
||||
ForgeDirection moveDir = ForgeDirection.UNKNOWN;
|
||||
|
||||
if(Math.abs(motionX) > Math.abs(motionZ)) {
|
||||
moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X;
|
||||
} else {
|
||||
moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z;
|
||||
}
|
||||
|
||||
if(moveDir == dir || moveDir == rot.getOpposite()) {
|
||||
angularChange *= -1;
|
||||
}
|
||||
|
||||
double effAngle = angleDeg + angularChange;
|
||||
moveAngle += angularChange;
|
||||
|
||||
if(effAngle > 90) {
|
||||
double angleOvershoot = effAngle - 90D;
|
||||
moveAngle -= angleOvershoot;
|
||||
double lengthOvershoot = angleOvershoot * length90Deg / 90D;
|
||||
info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 6 + rot.offsetX * 7, y, cZ - dir.offsetZ * 6 + rot.offsetZ * 7)).yaw((float) moveAngle);
|
||||
return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius);
|
||||
}
|
||||
|
||||
if(effAngle < 0) {
|
||||
double angleOvershoot = -effAngle;
|
||||
moveAngle -= angleOvershoot;
|
||||
double lengthOvershoot = angleOvershoot * length90Deg / 90D;
|
||||
info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle);
|
||||
return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y + 0.1875, axisZ -rot.offsetZ * turnRadius);
|
||||
}
|
||||
|
||||
double radianChange = angularChange * Math.PI / 180D;
|
||||
dist.rotateAroundY((float) radianChange);
|
||||
|
||||
return Vec3.createVectorHelper(axisX + dist.xCoord, y + 0.1875, axisZ + dist.zCoord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrackGauge getGauge(World world, int x, int y, int z) {
|
||||
return TrackGauge.STANDARD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 6, 0, 6, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
dir = dir.getOpposite();
|
||||
|
||||
int dX = dir.offsetX;
|
||||
int dZ = dir.offsetZ;
|
||||
int rX = rot.offsetX;
|
||||
int rZ = rot.offsetZ;
|
||||
|
||||
return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) &&
|
||||
world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) &&
|
||||
world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) &&
|
||||
world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) &&
|
||||
world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) &&
|
||||
world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) &&
|
||||
world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) &&
|
||||
world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) &&
|
||||
world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) &&
|
||||
world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) &&
|
||||
world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) &&
|
||||
world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) &&
|
||||
world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
|
||||
BlockDummyable.safeRem = true;
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
dir = dir.getOpposite();
|
||||
|
||||
int dX = dir.offsetX;
|
||||
int dZ = dir.offsetZ;
|
||||
int rX = rot.offsetX;
|
||||
int rZ = rot.offsetZ;
|
||||
|
||||
world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3);
|
||||
|
||||
BlockDummyable.safeRem = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderInventory(Tessellator tessellator, Block block, int metadata) {
|
||||
GL11.glScaled(0.12, 0.12, 0.12);
|
||||
GL11.glTranslated(2.5, -0.0625, -3);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) {
|
||||
if(meta < 12) return;
|
||||
float rotation = 0;
|
||||
if(meta == 15) rotation = 90F / 180F * (float) Math.PI;
|
||||
if(meta == 12) rotation = 180F / 180F * (float) Math.PI;
|
||||
if(meta == 14) rotation = 270F / 180F * (float) Math.PI;
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
}
|
||||
}
|
||||
113
src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java
Normal file
113
src/main/java/com/hbm/blocks/rail/RailStandardCurveWide7.java
Normal file
@ -0,0 +1,113 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RailStandardCurveWide7 extends RailStandardCurveBase {
|
||||
|
||||
public RailStandardCurveWide7() {
|
||||
super();
|
||||
this.width = 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
dir = dir.getOpposite();
|
||||
|
||||
int dX = dir.offsetX;
|
||||
int dZ = dir.offsetZ;
|
||||
int rX = rot.offsetX;
|
||||
int rZ = rot.offsetZ;
|
||||
|
||||
return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) &&
|
||||
world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) &&
|
||||
world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) &&
|
||||
world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) &&
|
||||
world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) &&
|
||||
world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) &&
|
||||
world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) &&
|
||||
world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) &&
|
||||
world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) &&
|
||||
world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) &&
|
||||
world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) &&
|
||||
world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) &&
|
||||
world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
|
||||
BlockDummyable.safeRem = true;
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
dir = dir.getOpposite();
|
||||
|
||||
int dX = dir.offsetX;
|
||||
int dZ = dir.offsetZ;
|
||||
int rX = rot.offsetX;
|
||||
int rZ = rot.offsetZ;
|
||||
|
||||
world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 2, y, z + dZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX, y, z + dZ * 4 + rZ, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX * 2, y, z + dZ * 4 + rZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 2, y, z + dZ * 5 + rZ * 2, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 3, y, z + dZ * 5 + rZ * 3, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 4, y, z + dZ * 5 + rZ * 4, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 6 + rX * 4, y, z + dZ * 6 + rZ * 4, this, dir.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 5, y, z + dZ * 5 + rZ * 5, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 5 + rX * 6, y, z + dZ * 5 + rZ * 6, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 6 + rX * 5, y, z + dZ * 6 + rZ * 5, this, rot.ordinal(), 3);
|
||||
world.setBlock(x + dX * 6 + rX * 6, y, z + dZ * 6 + rZ * 6, this, rot.ordinal(), 3);
|
||||
|
||||
BlockDummyable.safeRem = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderInventory(Tessellator tessellator, Block block, int metadata) {
|
||||
GL11.glScaled(0.225, 0.225, 0.225);
|
||||
GL11.glRotated(45, 0, 1, 0);
|
||||
GL11.glRotated(60, 1, 0, 0);
|
||||
GL11.glTranslated(3, 0, 3);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide7, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) {
|
||||
if(meta < 12) return;
|
||||
float rotation = 0;
|
||||
if(meta == 15) rotation = 90F / 180F * (float) Math.PI;
|
||||
if(meta == 12) rotation = 180F / 180F * (float) Math.PI;
|
||||
if(meta == 14) rotation = 270F / 180F * (float) Math.PI;
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide7, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
}
|
||||
}
|
||||
148
src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java
Normal file
148
src/main/java/com/hbm/blocks/rail/RailStandardCurveWide9.java
Normal file
@ -0,0 +1,148 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RailStandardCurveWide9 extends RailStandardCurveBase {
|
||||
|
||||
public RailStandardCurveWide9() {
|
||||
super();
|
||||
this.width = 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
dir = dir.getOpposite();
|
||||
|
||||
int dX = dir.offsetX;
|
||||
int dZ = dir.offsetZ;
|
||||
int rX = rot.offsetX;
|
||||
int rZ = rot.offsetZ;
|
||||
|
||||
int[][] dim = new int[][] {
|
||||
{1, 0},
|
||||
{2, 0},
|
||||
{0, 1},
|
||||
{1, 1},
|
||||
{2, 1},
|
||||
{3, 1},
|
||||
{4, 1},
|
||||
{2, 2},
|
||||
{3, 2},
|
||||
{4, 2},
|
||||
{5, 2},
|
||||
{4, 3},
|
||||
{5, 3},
|
||||
{5, 4},
|
||||
{6, 3},
|
||||
{6, 4},
|
||||
{7, 4},
|
||||
{6, 5},
|
||||
{7, 5},
|
||||
{6, 6},
|
||||
{7, 6},
|
||||
{7, 7},
|
||||
{7, 8},
|
||||
{8, 6},
|
||||
{8, 7},
|
||||
{8, 8},
|
||||
};
|
||||
|
||||
for(int[] array : dim) {
|
||||
if(!world.getBlock(x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1]).isReplaceable(world, x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1])) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
|
||||
BlockDummyable.safeRem = true;
|
||||
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
dir = dir.getOpposite();
|
||||
|
||||
int dX = dir.offsetX;
|
||||
int dZ = dir.offsetZ;
|
||||
int rX = rot.offsetX;
|
||||
int rZ = rot.offsetZ;
|
||||
|
||||
int d = dir.ordinal();
|
||||
int r = rot.ordinal();
|
||||
|
||||
int[][] dim = new int[][] {
|
||||
{1, 0, d},
|
||||
{2, 0, d},
|
||||
{0, 1, r},
|
||||
{1, 1, d},
|
||||
{2, 1, d},
|
||||
{3, 1, d},
|
||||
{4, 1, d},
|
||||
{2, 2, r},
|
||||
{3, 2, r},
|
||||
{4, 2, r},
|
||||
{5, 2, d},
|
||||
{4, 3, r},
|
||||
{5, 3, r},
|
||||
{5, 4, r},
|
||||
{6, 3, d},
|
||||
{6, 4, d},
|
||||
{7, 4, d},
|
||||
{6, 5, r},
|
||||
{7, 5, r},
|
||||
{6, 6, r},
|
||||
{7, 6, r},
|
||||
{7, 7, r},
|
||||
{7, 8, r},
|
||||
{8, 6, d},
|
||||
{8, 7, d},
|
||||
{8, 8, d},
|
||||
};
|
||||
|
||||
for(int[] array : dim) {
|
||||
world.setBlock(x + dX * array[0] + rX * array[1], y, z + dZ * array[0] + rZ * array[1], this, array[2], 3);
|
||||
}
|
||||
|
||||
BlockDummyable.safeRem = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderInventory(Tessellator tessellator, Block block, int metadata) {
|
||||
GL11.glScaled(0.175, 0.175, 0.175);
|
||||
GL11.glRotated(45, 0, 1, 0);
|
||||
GL11.glRotated(60, 1, 0, 0);
|
||||
GL11.glTranslated(4, 0, 4);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide9, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderWorld(Tessellator tessellator, Block block, int meta, IBlockAccess world, int x, int y, int z) {
|
||||
if(meta < 12) return;
|
||||
float rotation = 0;
|
||||
if(meta == 15) rotation = 90F / 180F * (float) Math.PI;
|
||||
if(meta == 12) rotation = 180F / 180F * (float) Math.PI;
|
||||
if(meta == 14) rotation = 270F / 180F * (float) Math.PI;
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve_wide9, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
}
|
||||
}
|
||||
@ -223,6 +223,7 @@ public class EntityMappings {
|
||||
addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000);
|
||||
addEntity(EntityFallingBlockNT.class, "entity_falling_block_nt", 1000);
|
||||
addEntity(EntityBoatRubber.class, "entity_rubber_boat", 250, false);
|
||||
addEntity(EntityMissileStealth.class, "entity_missile_stealth", 1000);
|
||||
|
||||
addEntity(EntityItemWaste.class, "entity_item_waste", 100);
|
||||
addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100);
|
||||
|
||||
@ -108,7 +108,8 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements
|
||||
|
||||
for(Entity e : TileEntityMachineRadarNT.matchingEntities) {
|
||||
if(e.dimension != this.dimension) continue;
|
||||
if(!(e instanceof EntityMissileBaseNT)) continue;
|
||||
if(!(e instanceof EntityMissileBaseNT)) continue; //can only lock onto missiles
|
||||
if(e instanceof EntityMissileStealth) continue; //cannot lack onto missiles with stealth coating
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(e.posX - posX, e.posY - posY, e.posZ - posZ);
|
||||
|
||||
|
||||
@ -15,7 +15,6 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard;
|
||||
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import api.hbm.entity.IRadarDetectable;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -31,7 +30,7 @@ import net.minecraftforge.common.ForgeChunkManager;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Type;
|
||||
|
||||
public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT {
|
||||
public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectableNT {
|
||||
|
||||
public int startX;
|
||||
public int startZ;
|
||||
|
||||
@ -105,11 +105,6 @@ public class EntityMissileDoomsday extends EntityMissileBaseNT {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.doomsday";
|
||||
|
||||
@ -61,11 +61,6 @@ public class EntityMissileShuttle extends EntityMissileBaseNT {
|
||||
return new ItemStack(ModItems.missile_generic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.shuttle";
|
||||
|
||||
@ -0,0 +1,33 @@
|
||||
package com.hbm.entity.missile;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.inventory.OreDictManager.DictFrame;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityMissileStealth extends EntityMissileBaseNT {
|
||||
|
||||
public EntityMissileStealth(World world) { super(world); }
|
||||
public EntityMissileStealth(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDebris() {
|
||||
List<ItemStack> list = new ArrayList<ItemStack>();
|
||||
list.add(new ItemStack(ModItems.bolt, 4, Mats.MAT_STEEL.id));
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override public String getUnlocalizedName() { return "radar.target.tier1"; }
|
||||
@Override public int getBlipLevel() { return IRadarDetectableNT.TIER1; }
|
||||
@Override public boolean canBeSeenBy(Object radar) { return false; }
|
||||
|
||||
@Override public void onImpact() { this.explodeStandard(20F, 24, false, true); }
|
||||
@Override public ItemStack getDebrisRareDrop() { return DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC); }
|
||||
}
|
||||
@ -37,11 +37,6 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier0";
|
||||
|
||||
@ -25,11 +25,6 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier1";
|
||||
|
||||
@ -29,11 +29,6 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier2";
|
||||
|
||||
@ -31,11 +31,6 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier3";
|
||||
|
||||
@ -30,11 +30,6 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
||||
return list;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier4";
|
||||
|
||||
@ -131,7 +131,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
data.setInteger("color", 0x0000ff);
|
||||
data.setFloat("scale", 1.5F);
|
||||
data.setString("text", id + " (#" + train.ltuIndex + ")");
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50));
|
||||
//PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50));
|
||||
}
|
||||
}
|
||||
|
||||
@ -891,6 +891,6 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||
List<String> text = new ArrayList();
|
||||
ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway
|
||||
//ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
this.dataWatcher.addObject(10, new Integer(0));
|
||||
}
|
||||
|
||||
public int countVacantSlots() {
|
||||
public int countOccupiedSlots() {
|
||||
int slots = 0;
|
||||
|
||||
for(int i = 0; i < this.getSizeInventory(); i++) {
|
||||
@ -53,11 +53,9 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
this.slots[slot] = null;
|
||||
}
|
||||
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return itemstack;
|
||||
}
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -67,10 +65,8 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
if(this.slots[slot] != null) {
|
||||
ItemStack itemstack = this.slots[slot];
|
||||
this.slots[slot] = null;
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return itemstack;
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -82,8 +78,12 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
if(stack != null && stack.stackSize > this.getInventoryStackLimit()) {
|
||||
stack.stackSize = this.getInventoryStackLimit();
|
||||
}
|
||||
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
super.onUpdate();
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countOccupiedSlots());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -142,7 +142,7 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
}
|
||||
}
|
||||
|
||||
this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
this.dataWatcher.updateObject(10, this.countOccupiedSlots());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -291,6 +291,6 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
text.add("Front: " + this.coupledFront);
|
||||
text.add("Back: " + this.coupledBack);*/
|
||||
text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me()));
|
||||
ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text);
|
||||
//ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +83,7 @@ public class Gun44MagnumFactory {
|
||||
|
||||
GunConfiguration config = getBaseConfig();
|
||||
|
||||
config.durability = 4000;
|
||||
config.durability = 31_000;
|
||||
|
||||
config.name = "ifScope";
|
||||
config.manufacturer = EnumGunManufacturer.IF;
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.tileentity.bomb.TileEntityNukeN45;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.ICrafting;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerNukeN45 extends Container {
|
||||
|
||||
private TileEntityNukeN45 diFurnace;
|
||||
|
||||
public ContainerNukeN45(InventoryPlayer invPlayer, TileEntityNukeN45 tedf) {
|
||||
|
||||
diFurnace = tedf;
|
||||
|
||||
//Payload
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 44, 35));
|
||||
//Range up
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 116, 35));
|
||||
|
||||
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++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCraftingToCrafters(ICrafting crafting) {
|
||||
super.addCraftingToCrafters(crafting);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2)
|
||||
{
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if (var4 != null && var4.getHasStack())
|
||||
{
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if (par2 <= 1) {
|
||||
if (!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!this.mergeItemStack(var5, 0, 2, false))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (var5.stackSize == 0)
|
||||
{
|
||||
var4.putStack((ItemStack) null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return diFurnace.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
@ -1,73 +0,0 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerNukeN45;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.bomb.TileEntityNukeN45;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUINukeN45 extends GuiInfoContainer {
|
||||
|
||||
public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/weapon/gui_n45.png");
|
||||
private TileEntityNukeN45 diFurnace;
|
||||
|
||||
public GUINukeN45(InventoryPlayer invPlayer, TileEntityNukeN45 tedf) {
|
||||
super(new ContainerNukeN45(invPlayer, tedf));
|
||||
diFurnace = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 168;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
String[] text = new String[] { "The first slot holds the payload.",
|
||||
"Acceptable payloads:",
|
||||
" -Det Cord",
|
||||
" -TNT",
|
||||
" -Explosive Charge",
|
||||
" -Nuclear Charge",
|
||||
"Using detonator while in mine mode will",
|
||||
"arm the mine, set to explode when",
|
||||
"it detects a large entity nearby."};
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text);
|
||||
|
||||
String[] text1 = new String[] { "The second slot is for green machine",
|
||||
"upgrades. Entity detection range increases",
|
||||
"by 5 blocks for every level.",
|
||||
"When left empty, the mine can not be armed",
|
||||
"an will behave like a regular bomb." };
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1);
|
||||
|
||||
if(diFurnace.primed)
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 121, guiTop + 22, 6, 8, mouseX, mouseY, new String[]{ "Mine armed!" } );
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
if(diFurnace.primed) {
|
||||
drawTexturedModalRect(guiLeft + 121, guiTop + 22, 176, 0, 6, 8);
|
||||
}
|
||||
|
||||
this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2);
|
||||
this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3);
|
||||
}
|
||||
}
|
||||
@ -197,6 +197,7 @@ public class AssemblerRecipes {
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit_gold), new OreDictStack(STEEL.bolt(), 32) },1200);
|
||||
makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel), new ComparableStack(ModItems.circuit_gold, 1) },600);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400);
|
||||
|
||||
@ -1321,6 +1321,7 @@ public class ModItems {
|
||||
public static Item missile_schrabidium;
|
||||
public static Item missile_emp;
|
||||
public static Item missile_shuttle;
|
||||
public static Item missile_stealth;
|
||||
|
||||
public static Item mp_thruster_10_kerosene;
|
||||
public static Item mp_thruster_10_kerosene_tec;
|
||||
@ -3940,6 +3941,7 @@ public class ModItems {
|
||||
missile_schrabidium = new Item().setUnlocalizedName("missile_schrabidium").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_schrabidium");
|
||||
missile_emp = new Item().setUnlocalizedName("missile_emp").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_emp");
|
||||
missile_shuttle = new ItemMissileShuttle().setUnlocalizedName("missile_shuttle").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_shuttle");
|
||||
missile_stealth = new Item().setUnlocalizedName("missile_stealth").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_stealth");
|
||||
missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_carrier");
|
||||
missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz");
|
||||
missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander");
|
||||
@ -6862,6 +6864,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(missile_schrabidium, missile_schrabidium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_emp, missile_emp.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_shuttle, missile_shuttle.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_stealth, missile_stealth.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_carrier, missile_carrier.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_soyuz, missile_soyuz.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_soyuz_lander, missile_soyuz_lander.getUnlocalizedName());
|
||||
|
||||
@ -44,9 +44,9 @@ public class ItemTrain extends ItemEnumMulti {
|
||||
public static enum EnumTrainType {
|
||||
|
||||
// Engine Gauge Max Speed Accel. Eng. Brake Parking Brake
|
||||
CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"),
|
||||
CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s²", "<1m/s", "Yes"),
|
||||
CARGO_TRAM_TRAILER(TrainCargoTramTrailer.class, null, "Standard Gauge", "Yes", null, null, "No"),
|
||||
TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes");
|
||||
TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s²", "<1m/s", "Yes");
|
||||
|
||||
public Class<? extends EntityRailCarBase> train;
|
||||
public String engine;
|
||||
@ -78,20 +78,24 @@ public class ItemTrain extends ItemEnumMulti {
|
||||
try { train = type.train.getConstructor(World.class).newInstance(world); } catch(Exception e) { }
|
||||
|
||||
if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) {
|
||||
if(!world.isRemote) {
|
||||
train.setPosition(x + fx, y + fy, z + fz);
|
||||
BlockPos anchor = train.getCurrentAnchorPos();
|
||||
train.rotationYaw = entity.rotationYaw;
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0));
|
||||
|
||||
train.setPosition(x + fx, y + fy, z + fz);
|
||||
BlockPos anchor = train.getCurrentAnchorPos();
|
||||
train.rotationYaw = entity.rotationYaw;
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0));
|
||||
if(corePos != null) {
|
||||
train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan()));
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan()));
|
||||
train.rotationYaw = train.generateYaw(frontPos, backPos);
|
||||
world.spawnEntityInWorld(train);
|
||||
if(frontPos != null && backPos != null) {
|
||||
if(!world.isRemote) {
|
||||
train.rotationYaw = train.generateYaw(frontPos, backPos);
|
||||
world.spawnEntityInWorld(train);
|
||||
}
|
||||
stack.stackSize--;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
stack.stackSize--;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -185,7 +185,6 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeSolinium.class, new RenderNukeSolinium());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN2.class, new RenderNukeN2());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMan.class, new RenderNukeMan());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeN45.class, new RenderNukeN45());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBalefire.class, new RenderNukeFstbmb());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBombMulti.class, new RenderBombMulti());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeMike.class, new RenderNukeMike());
|
||||
@ -668,6 +667,7 @@ public class ClientProxy extends ServerProxy {
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileStealth.class, new RenderMissileGeneric());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric());
|
||||
RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric());
|
||||
|
||||
@ -518,8 +518,12 @@ public class CraftingManager {
|
||||
addShapelessAuto(new ItemStack(ModBlocks.rail_large_straight_short, 5), new Object[] { ModBlocks.rail_large_straight });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_buffer, 1), new Object[] { " S", "RS", 'R', ModBlocks.rail_large_straight, 'S', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve, 1), new Object[] { "R ", " R", 'R', ModBlocks.rail_large_straight });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_wide, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_7, 1), new Object[] { "RR", " R", 'R', ModBlocks.rail_large_straight });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_curve_9, 1), new Object[] { "RR ", " R", " R", 'R', ModBlocks.rail_large_straight });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_ramp, 1), new Object[] { " R ", "SSS", 'R', ModBlocks.rail_large_straight, 'S', KEY_SLAB });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.rail_large_switch, 1), new Object[] { "R R", " RR", " R", 'R', ModBlocks.rail_large_straight });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.rail_large_switch), new Object[] { ModBlocks.rail_large_switch_flipped });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.rail_large_switch_flipped), new Object[] { ModBlocks.rail_large_switch });
|
||||
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.bomb_multi), 1), new Object[] { "AAD", "CHF", "AAD", 'A', ModItems.wire_aluminium, 'C', ModItems.circuit_aluminium, 'H', ModItems.hull_small_aluminium, 'F', ModItems.fins_quad_titanium, 'D', KEY_WHITE });
|
||||
addShapelessAuto(new ItemStack(ModItems.powder_ice, 4), new Object[] { Items.snowball, KNO.dust(), REDSTONE.dust() });
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.main;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
@ -12,6 +13,10 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockAshes;
|
||||
import com.hbm.blocks.rail.IRailNTM;
|
||||
import com.hbm.blocks.rail.IRailNTM.MoveContext;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailCheckType;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailContext;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.entity.mob.EntityHunterChopper;
|
||||
import com.hbm.entity.projectile.EntityChopperMine;
|
||||
@ -64,6 +69,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace;
|
||||
import com.hbm.util.I18nUtil;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
import com.hbm.util.LoggingUtil;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
import com.hbm.wiaj.GuiWorldInAJar;
|
||||
import com.hbm.wiaj.cannery.CanneryBase;
|
||||
import com.hbm.wiaj.cannery.Jars;
|
||||
|
||||
@ -1047,6 +1047,7 @@ public class ResourceManager {
|
||||
//Missiles
|
||||
public static final IModelCustom missileV2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_v2.obj")).asDisplayList();
|
||||
public static final IModelCustom missileABM = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_abm.obj")).asDisplayList();
|
||||
public static final IModelCustom missileStealth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_stealth.obj"), false).asDisplayList();
|
||||
public static final IModelCustom missileStrong = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_strong.obj"));
|
||||
public static final IModelCustom missileHuge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/missile_huge.obj"));
|
||||
public static final IModelCustom missileNuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missileNeon.obj"));
|
||||
@ -1191,6 +1192,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png");
|
||||
public static final ResourceLocation missileV2_decoy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_decoy.png");
|
||||
public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png");
|
||||
public static final ResourceLocation missileStealth_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_stealth.png");
|
||||
public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png");
|
||||
public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png");
|
||||
public static final ResourceLocation missileStrong_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_inc.png");
|
||||
@ -1469,7 +1471,8 @@ public class ResourceManager {
|
||||
public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj"));
|
||||
public static final IModelCustom rail_standard_straight_short = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_short.obj"));
|
||||
public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj"));
|
||||
public static final IModelCustom rail_standard_curve_wide = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj"));
|
||||
public static final IModelCustom rail_standard_curve_wide7 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide.obj"));
|
||||
public static final IModelCustom rail_standard_curve_wide9 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend_wide9.obj"));
|
||||
public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj"));
|
||||
public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj"));
|
||||
public static final IModelCustom rail_standard_switch = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_switch.obj"));
|
||||
|
||||
@ -5,7 +5,6 @@ import com.hbm.items.weapon.ItemMissile.PartSize;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.tileentity.bomb.TileEntityCompactLauncher;
|
||||
import com.hbm.tileentity.bomb.TileEntityLaunchTable;
|
||||
import com.hbm.tileentity.bomb.TileEntityNukeN45;
|
||||
import com.hbm.tileentity.machine.TileEntityAMSBase;
|
||||
import com.hbm.tileentity.machine.TileEntityAMSEmitter;
|
||||
import com.hbm.tileentity.machine.TileEntityAMSLimiter;
|
||||
@ -127,11 +126,6 @@ public class AuxGaugePacket implements IMessage {
|
||||
if(m.id == 0)
|
||||
boiler.heat = m.value;
|
||||
}
|
||||
if (te instanceof TileEntityNukeN45) {
|
||||
TileEntityNukeN45 nuke = (TileEntityNukeN45)te;
|
||||
|
||||
nuke.primed = m.value == 1;
|
||||
}
|
||||
if (te instanceof TileEntityCompactLauncher) {
|
||||
TileEntityCompactLauncher launcher = (TileEntityCompactLauncher)te;
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.render.entity.rocket;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.entity.missile.EntityMissileAntiBallistic;
|
||||
import com.hbm.entity.missile.EntityMissileStealth;
|
||||
import com.hbm.entity.missile.EntityMissileTier1.*;
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
@ -28,6 +29,9 @@ public class RenderMissileGeneric extends Render {
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.missileABM.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
} else if(entity instanceof EntityMissileStealth) {
|
||||
bindTexture(ResourceManager.missileStealth_tex);
|
||||
ResourceManager.missileStealth.renderAll();
|
||||
} else {
|
||||
|
||||
if(entity instanceof EntityMissileGeneric)
|
||||
|
||||
@ -32,19 +32,21 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer {
|
||||
|
||||
//TODO: add a registry for missile rendering to be reused here and for the entity renderer
|
||||
if(toRender.getItem() == ModItems.missile_generic) {
|
||||
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
||||
bindTexture(ResourceManager.missileV2_HE_tex);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.missileV2.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
if(toRender.getItem() == ModItems.missile_decoy) {
|
||||
GL11.glScalef(1.0F, 1.0F, 1.0F);
|
||||
bindTexture(ResourceManager.missileV2_decoy_tex);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.missileV2.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
if(toRender.getItem() == ModItems.missile_stealth) {
|
||||
bindTexture(ResourceManager.missileStealth_tex);
|
||||
ResourceManager.missileStealth.renderAll();
|
||||
}
|
||||
if(toRender.getItem() == ModItems.missile_strong) {
|
||||
GL11.glScalef(1.5F, 1.5F, 1.5F);
|
||||
bindTexture(ResourceManager.missileStrong_HE_tex);
|
||||
|
||||
@ -1,113 +0,0 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.bomb.TileEntityNukeN45;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class RenderNukeN45 extends TileEntitySpecialRenderer {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f)
|
||||
{
|
||||
boolean standing = tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord - 1, tileEntity.zCoord).isNormalCube();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
bindTexture(ResourceManager.universal);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
//GL11.glScaled(2.0D, 2.0D, 2.0D);
|
||||
|
||||
if(standing) {
|
||||
ResourceManager.n45_stand.renderAll();
|
||||
}
|
||||
|
||||
double d = 0.25;
|
||||
|
||||
if(((TileEntityNukeN45)tileEntity).primed)
|
||||
d /= 4D;
|
||||
|
||||
GL11.glTranslated(0, standing ? 1D : 0.5D, 0);
|
||||
|
||||
ResourceManager.n45_globe.renderAll();
|
||||
|
||||
GL11.glRotated(90, 1, 0, 0);
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
ResourceManager.n45_knob.renderAll();
|
||||
GL11.glTranslated(0, -d, 0);
|
||||
ResourceManager.n45_rod.renderAll();
|
||||
GL11.glTranslated(0, d, 0);
|
||||
GL11.glRotated(45, 0, 0, 1);
|
||||
}
|
||||
|
||||
GL11.glRotated(45, 0, 0, 1);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
GL11.glRotated(-45, 1, 0, 0);
|
||||
ResourceManager.n45_knob.renderAll();
|
||||
GL11.glTranslated(0, -d, 0);
|
||||
ResourceManager.n45_rod.renderAll();
|
||||
GL11.glTranslated(0, d, 0);
|
||||
GL11.glRotated(45, 1, 0, 0);
|
||||
GL11.glRotated(90, 0, 0, 1);
|
||||
}
|
||||
|
||||
GL11.glRotated(-90, 0, 0, 1);
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
GL11.glRotated(45, 1, 0, 0);
|
||||
ResourceManager.n45_knob.renderAll();
|
||||
GL11.glTranslated(0, -d, 0);
|
||||
ResourceManager.n45_rod.renderAll();
|
||||
GL11.glTranslated(0, d, 0);
|
||||
GL11.glRotated(-45, 1, 0, 0);
|
||||
GL11.glRotated(90, 0, 0, 1);
|
||||
}
|
||||
|
||||
GL11.glRotated(45, 0, 0, 1);
|
||||
GL11.glRotated(-90, 1, 0, 0);
|
||||
|
||||
ResourceManager.n45_knob.renderAll();
|
||||
GL11.glTranslated(0, -d, 0);
|
||||
ResourceManager.n45_rod.renderAll();
|
||||
GL11.glTranslated(0, d, 0);
|
||||
|
||||
if(!standing) {
|
||||
int depth = 0;
|
||||
|
||||
for(int i = 0; i < 51; i++) {
|
||||
|
||||
if(!tileEntity.getWorldObj().getBlock(tileEntity.xCoord, tileEntity.yCoord - i - 1, tileEntity.zCoord).isNormalCube()) {
|
||||
depth++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(depth != 0 && depth < 51) {
|
||||
|
||||
GL11.glTranslated(0, -1D, 0);
|
||||
|
||||
for(int i = 0; i < depth + 1; i++) {
|
||||
|
||||
ResourceManager.n45_chain.renderAll();
|
||||
GL11.glTranslated(0, -1, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
@ -38,7 +38,7 @@ public class RenderSolarBoiler extends TileEntitySpecialRenderer {
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
if(te instanceof TileEntitySolarBoiler && Minecraft.getMinecraft().gameSettings.particleSetting < 2) {
|
||||
if(te instanceof TileEntitySolarBoiler && !Minecraft.getMinecraft().gameSettings.fancyGraphics) {
|
||||
TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te;
|
||||
|
||||
Tessellator tess = Tessellator.instance;
|
||||
|
||||
@ -128,7 +128,6 @@ public class TileMappings {
|
||||
put(TileEntityLandmine.class, "tileentity_landmine");
|
||||
put(TileEntityMachineKeyForge.class, "tileentity_key_forge");
|
||||
put(TileEntitySellafield.class, "tileentity_sellafield_core");
|
||||
put(TileEntityNukeN45.class, "tileentity_n45");
|
||||
put(TileEntityBlastDoor.class, "tileentity_blast_door");
|
||||
put(TileEntitySafe.class, "tileentity_safe");
|
||||
put(TileEntityMachineGasCent.class, "tileentity_gas_centrifuge");
|
||||
|
||||
@ -12,6 +12,7 @@ import com.hbm.entity.missile.EntityMissileAntiBallistic;
|
||||
import com.hbm.entity.missile.EntityMissileBaseNT;
|
||||
import com.hbm.entity.missile.EntityMissileDoomsday;
|
||||
import com.hbm.entity.missile.EntityMissileShuttle;
|
||||
import com.hbm.entity.missile.EntityMissileStealth;
|
||||
import com.hbm.entity.missile.EntityMissileTier0.*;
|
||||
import com.hbm.entity.missile.EntityMissileTier1.*;
|
||||
import com.hbm.entity.missile.EntityMissileTier2.*;
|
||||
@ -88,8 +89,9 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg
|
||||
missiles.put(new ComparableStack(ModItems.missile_nuclear), EntityMissileNuclear.class);
|
||||
missiles.put(new ComparableStack(ModItems.missile_nuclear_cluster), EntityMissileMirv.class);
|
||||
missiles.put(new ComparableStack(ModItems.missile_volcano), EntityMissileVolcano.class);
|
||||
|
||||
|
||||
missiles.put(new ComparableStack(ModItems.missile_doomsday), EntityMissileDoomsday.class);
|
||||
missiles.put(new ComparableStack(ModItems.missile_stealth), EntityMissileStealth.class);
|
||||
}
|
||||
|
||||
public ItemStack toRender;
|
||||
|
||||
@ -1,326 +0,0 @@
|
||||
package com.hbm.tileentity.bomb;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityNukeTorex;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.inventory.container.ContainerNukeN45;
|
||||
import com.hbm.inventory.gui.GUINukeN45;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.packet.AuxGaugePacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityNukeN45 extends TileEntity implements ISidedInventory, IGUIProvider {
|
||||
|
||||
public ItemStack slots[];
|
||||
private String customName;
|
||||
|
||||
public boolean primed = false;
|
||||
|
||||
public TileEntityNukeN45() {
|
||||
slots = new ItemStack[2];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSizeInventory() {
|
||||
return slots.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlot(int i) {
|
||||
return slots[i];
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack decrStackSize(int i, int j) {
|
||||
if(slots[i] != null)
|
||||
{
|
||||
if(slots[i].stackSize <= j)
|
||||
{
|
||||
ItemStack itemStack = slots[i];
|
||||
slots[i] = null;
|
||||
return itemStack;
|
||||
}
|
||||
ItemStack itemStack1 = slots[i].splitStack(j);
|
||||
if (slots[i].stackSize == 0)
|
||||
{
|
||||
slots[i] = null;
|
||||
}
|
||||
|
||||
return itemStack1;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlotOnClosing(int i) {
|
||||
if(slots[i] != null)
|
||||
{
|
||||
ItemStack itemStack = slots[i];
|
||||
slots[i] = null;
|
||||
return itemStack;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInventorySlotContents(int i, ItemStack itemStack) {
|
||||
slots[i] = itemStack;
|
||||
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit())
|
||||
{
|
||||
itemStack.stackSize = getInventoryStackLimit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInventoryName() {
|
||||
return this.hasCustomInventoryName() ? this.customName : "container.nukeN45";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasCustomInventoryName() {
|
||||
return this.customName != null && this.customName.length() > 0;
|
||||
}
|
||||
|
||||
public void setCustomName(String name) {
|
||||
this.customName = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInventoryStackLimit() {
|
||||
return 64;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this)
|
||||
{
|
||||
return false;
|
||||
}else{
|
||||
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openInventory() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeInventory() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
|
||||
return new int[0];
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInsertItem(int i, ItemStack itemStack, int j) {
|
||||
return this.isItemValidForSlot(i, itemStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
NBTTagList list = nbt.getTagList("items", 10);
|
||||
|
||||
primed = nbt.getBoolean("primed");
|
||||
|
||||
slots = new ItemStack[getSizeInventory()];
|
||||
|
||||
for(int i = 0; i < list.tagCount(); i++)
|
||||
{
|
||||
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
||||
byte b0 = nbt1.getByte("slot");
|
||||
if(b0 >= 0 && b0 < slots.length)
|
||||
{
|
||||
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
nbt.setBoolean("primed", primed);
|
||||
|
||||
for(int i = 0; i < slots.length; i++)
|
||||
{
|
||||
if(slots[i] != null)
|
||||
{
|
||||
NBTTagCompound nbt1 = new NBTTagCompound();
|
||||
nbt1.setByte("slot", (byte)i);
|
||||
slots[i].writeToNBT(nbt1);
|
||||
list.appendTag(nbt1);
|
||||
}
|
||||
}
|
||||
nbt.setTag("items", list);
|
||||
}
|
||||
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, primed ? 1 : 0, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150));
|
||||
|
||||
if(primed) {
|
||||
|
||||
if(getType() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
int rad = 0;
|
||||
|
||||
if(slots[1] != null) {
|
||||
|
||||
if(slots[1].getItem() == ModItems.upgrade_effect_1)
|
||||
rad = 5;
|
||||
if(slots[1].getItem() == ModItems.upgrade_effect_2)
|
||||
rad = 10;
|
||||
if(slots[1].getItem() == ModItems.upgrade_effect_3)
|
||||
rad = 15;
|
||||
}
|
||||
|
||||
if(rad == 0) {
|
||||
primed = false;
|
||||
return;
|
||||
}
|
||||
|
||||
List<Object> list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - rad, yCoord + 0.5 - rad, zCoord + 0.5 - rad, xCoord + 0.5 + rad, yCoord + 0.5 + rad, zCoord + 0.5 + rad));
|
||||
|
||||
for(Object o : list) {
|
||||
|
||||
Entity e = (Entity)o;
|
||||
|
||||
if(e instanceof EntityLivingBase && e.width * e.width * e.height >= 0.5 && !((EntityLivingBase)e).isPotionActive(Potion.invisibility.id)) {
|
||||
int t = getType();
|
||||
this.clearSlots();
|
||||
explode(worldObj, xCoord, yCoord, zCoord, t);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void explode(World world, int x, int y, int z, int type) {
|
||||
|
||||
if(!world.isRemote) {
|
||||
world.setBlockToAir(x, y, z);
|
||||
|
||||
//System.out.println(type);
|
||||
|
||||
switch(type) {
|
||||
case 1:
|
||||
world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 1.5F, true);
|
||||
break;
|
||||
case 2:
|
||||
world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 4.0F, true);
|
||||
break;
|
||||
case 3:
|
||||
ExplosionLarge.explode(world, x, y, z, 15, true, false, false);
|
||||
break;
|
||||
case 4:
|
||||
world.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(world, (int)(BombConfig.missileRadius * 0.75F), x + 0.5, y + 0.5, z + 0.5));
|
||||
EntityNukeTorex.statFac(world, x + 0.5, y + 0.5, z + 0.5, BombConfig.missileRadius * 0.75F);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
|
||||
if(!primed && slots[1] != null) {
|
||||
|
||||
if(slots[1].getItem() == ModItems.upgrade_effect_1 ||
|
||||
slots[1].getItem() == ModItems.upgrade_effect_2 ||
|
||||
slots[1].getItem() == ModItems.upgrade_effect_3)
|
||||
return 100;
|
||||
}
|
||||
|
||||
if(slots[0] != null) {
|
||||
|
||||
if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_cord))
|
||||
return 1;
|
||||
if(slots[0].getItem() == Item.getItemFromBlock(Blocks.tnt))
|
||||
return 2;
|
||||
if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_charge))
|
||||
return 3;
|
||||
if(slots[0].getItem() == Item.getItemFromBlock(ModBlocks.det_nuke))
|
||||
return 4;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void clearSlots() {
|
||||
for(int i = 0; i < slots.length; i++)
|
||||
{
|
||||
slots[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return TileEntity.INFINITE_EXTENT_AABB;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared()
|
||||
{
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerNukeN45(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUINukeN45(player.inventory, this);
|
||||
}
|
||||
|
||||
}
|
||||
@ -354,7 +354,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements
|
||||
|
||||
@Override
|
||||
public void provideInfo(UpgradeType type, int level, List<String> info, boolean extendedInfo) {
|
||||
info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_electric_furnace_off));
|
||||
info.add(IUpgradeInfoProvider.getStandardLabel(ModBlocks.machine_arc_welder));
|
||||
if(type == UpgradeType.SPEED) {
|
||||
info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_DELAY, "-" + (level * 100 / 6) + "%"));
|
||||
info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%"));
|
||||
|
||||
@ -21,7 +21,6 @@ import com.hbm.lib.Library;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.saveddata.SatelliteSavedData;
|
||||
import com.hbm.saveddata.satellites.Satellite;
|
||||
import com.hbm.saveddata.satellites.Satellite.Interfaces;
|
||||
import com.hbm.saveddata.satellites.SatelliteLaser;
|
||||
import com.hbm.tileentity.IConfigurableMachine;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
@ -30,18 +30,14 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui
|
||||
public HashSet<ChunkCoordinates> secondary = new HashSet();
|
||||
|
||||
public TileEntitySolarBoiler() {
|
||||
water = new FluidTank(Fluids.WATER, 16000, 0);
|
||||
steam = new FluidTank(Fluids.STEAM, 1600000, 1);
|
||||
water = new FluidTank(Fluids.WATER, 100, 0);
|
||||
steam = new FluidTank(Fluids.STEAM, 10_000, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
//if(worldObj.getTotalWorldTime() % 5 == 0) {
|
||||
fillFluidInit(Fluids.STEAM);
|
||||
//}
|
||||
|
||||
this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y);
|
||||
this.trySubscribe(water.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y);
|
||||
|
||||
@ -29,6 +29,7 @@ import com.hbm.tileentity.TileEntityMachineBase;
|
||||
import com.hbm.util.CompatExternal;
|
||||
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -642,6 +643,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple
|
||||
|
||||
if(targetMachines) {
|
||||
|
||||
if(e instanceof IRadarDetectableNT && !((IRadarDetectableNT)e).canBeSeenBy(this)) return false;
|
||||
if(e instanceof EntityMissileBaseNT) return true;
|
||||
if(e instanceof EntityMissileCustom) return true;
|
||||
if(e instanceof EntityMinecart) return true;
|
||||
@ -653,9 +655,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple
|
||||
|
||||
if(targetPlayers ) {
|
||||
|
||||
if(e instanceof FakePlayer)
|
||||
return false;
|
||||
|
||||
if(e instanceof FakePlayer) return false;
|
||||
if(e instanceof EntityPlayer) return true;
|
||||
for(Class c : CompatExternal.turretTargetPlayer) if(c.isAssignableFrom(e.getClass())) return true;
|
||||
}
|
||||
|
||||
@ -1292,9 +1292,9 @@ item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen
|
||||
item.bobmazon_materials.name=Bobmazon: Ressourcen
|
||||
item.bobmazon_tools.name=Bobmazon: Werkzeuge
|
||||
item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe
|
||||
item.bolt_compound.name=Verstärkte Turbinenwelle
|
||||
item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen
|
||||
item.bolt.name=%sbolzen
|
||||
item.bolt_compound.name=Verstärkte Turbinenwelle
|
||||
item.boltgun.name=Pneumatische Nietenpistole
|
||||
item.bomb_caller.name=Luftschlag Zielmarker
|
||||
item.bomb_waffle.name=Massenvernichtungswaffel
|
||||
item.guide_book.name=Handbuch
|
||||
@ -2316,18 +2316,10 @@ item.missile_nuclear_cluster.name=H-Rakete
|
||||
item.missile_rain.name=Schüttbombenregen
|
||||
item.missile_schrabidium.name=Schrabidiumrakete
|
||||
item.missile_shuttle.name=Reliant Robin Space Shuttle
|
||||
item.missile_skin_camo.name=Raketenskin: Camouflage
|
||||
item.missile_skin_desert.name=Raketenskin: Wüstencamouflage
|
||||
item.missile_skin_flames.name=Raketenskin: Krasse Flammen
|
||||
item.missile_skin_manly_pink.name=Raketenskin: Männliches Pink
|
||||
item.missile_skin_metal.name=Raketenskin: Metall
|
||||
item.missile_skin_orange_insulation.name=Raketenskin: Oranger Isolator
|
||||
item.missile_skin_sleek.name=Raketenskin: IF-R&D
|
||||
item.missile_skin_soviet_glory.name=Raketenskin: Sowjetischer Ruhm
|
||||
item.missile_skin_soviet_stank.name=Raketenskin: Sowjetischer Mief
|
||||
item.missile_soyuz.name=Soyuz-FG
|
||||
item.missile_soyuz_lander.name=Orbitalmodul
|
||||
item.missile_strong.name=Starke HE Rakete
|
||||
item.missile_stealth.name=Stealth-Rakete
|
||||
item.missile_taint.name=Verdorbene Rakete
|
||||
item.missile_volcano.name=Tectonic Missile
|
||||
item.missile_volcano.desc=Mit der Kraft von Kernwaffen können wir einen Vulkan beschwören!
|
||||
@ -4383,6 +4375,15 @@ tile.radiorec.name=UKW Radio
|
||||
tile.rail_booster.name=Hochgeschwindigkeits-Boosterschienen
|
||||
tile.rail_highspeed.name=Hochgeschwindigkeitsschienen
|
||||
tile.rail_narrow.name=Schmalspurschienen
|
||||
tile.rail_large_buffer.name=Normalspur-Prellbock (5m)
|
||||
tile.rail_large_curve.name=Normalspur-Kurve (5m)
|
||||
tile.rail_large_curve_7.name=Normalspur-Kurve (7m)
|
||||
tile.rail_large_curve_9.name=Normalspur-Kurve (9m)
|
||||
tile.rail_large_ramp.name=Normalspur-Rampe (5m)
|
||||
tile.rail_large_straight.name=Normalspur-Schiene (5m)
|
||||
tile.rail_large_straight_short.name=Normalspur-Schiene (1m)
|
||||
tile.rail_large_switch.name=Normalspur-Weiche (15m, Links)
|
||||
tile.rail_large_switch_flipped.name=Normalspur-Weiche (15m, Rechts)
|
||||
tile.rail_wood.name=Holzschienen
|
||||
tile.rbmk_absorber.name=RBMK Bor-Neutronenabsorber
|
||||
tile.rbmk_blank.name=RBMK Strukturteil
|
||||
|
||||
@ -1954,8 +1954,8 @@ item.bobmazon_machines.name=Bobmazon: Blocks and Machines
|
||||
item.bobmazon_materials.name=Bobmazon: Materials
|
||||
item.bobmazon_tools.name=Bobmazon: Tools
|
||||
item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives
|
||||
item.bolt_compound.name=Reinforced Turbine Shaft
|
||||
item.bolt.name=%s Bolt
|
||||
item.bolt_compound.name=Reinforced Turbine Shaft
|
||||
item.boltgun.name=Pneumatic Rivet Gun
|
||||
item.bomb_caller.name=Airstrike Designator
|
||||
item.bomb_waffle.name=Waffle of Mass Destruction
|
||||
@ -3058,27 +3058,10 @@ item.missile_nuclear_cluster.name=Thermonuclear Missile
|
||||
item.missile_rain.name=Bomblet Rain
|
||||
item.missile_schrabidium.name=Schrabidium Missile
|
||||
item.missile_shuttle.name=Reliant Robin Space Shuttle
|
||||
item.missile_skin_camo.name=Missile Skin: Camo
|
||||
item.missile_skin_color.desc=I can't find my missile anymore!
|
||||
item.missile_skin_desert.name=Missile Skin: Desert Camo
|
||||
item.missile_skin_desert.desc=Looks like sand, tastes like metal.
|
||||
item.missile_skin_flames.name=Missile Skin: Sick Flames
|
||||
item.missile_skin_flames.desc=Radical!
|
||||
item.missile_skin_manly_pink.name=Missile Skin: Manly Pink
|
||||
item.missile_skin_manly_pink.desc=Pink, the manliest color of them all.
|
||||
item.missile_skin_metal.name=Missile Skin: Metal
|
||||
item.missile_skin_metal.desc=Metal sheets and metal bolts, reinforced with metal.
|
||||
item.missile_skin_orange_insulation.name=Missile Skin: Orange Insulation
|
||||
item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not attempt to drink contents.
|
||||
item.missile_skin_sleek.name=Missile Skin: IF-R&D
|
||||
item.missile_skin_sleek.desc=Chevrons are cool!
|
||||
item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory
|
||||
item.missile_skin_soviet_glory.desc=услуга перевода недоступна
|
||||
item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank
|
||||
item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it.
|
||||
item.missile_soyuz.name=Soyuz-FG
|
||||
item.missile_soyuz_lander.name=Orbital Module
|
||||
item.missile_soyuz_lander.desc=Doubles as a crappy lander!
|
||||
item.missile_stealth.name=Stealth Missile
|
||||
item.missile_strong.name=Strong HE Missile
|
||||
item.missile_taint.name=Taint-Tipped Missile
|
||||
item.missile_volcano.name=Tectonic Missile
|
||||
@ -5382,6 +5365,15 @@ tile.radiobox.name=Rosenberg Pest Control Box
|
||||
tile.radiorec.name=FM Radio
|
||||
tile.rail_booster.name=High Speed Booster Rail
|
||||
tile.rail_highspeed.name=High Speed Rail
|
||||
tile.rail_large_buffer.name=Standard Gauge Buffer Stop Rail (5m)
|
||||
tile.rail_large_curve.name=Standard Gauge Curve Rail (5m)
|
||||
tile.rail_large_curve_7.name=Standard Gauge Curve Rail (7m)
|
||||
tile.rail_large_curve_9.name=Standard Gauge Curve Rail (9m)
|
||||
tile.rail_large_ramp.name=Standard Gauge Ramp Rail (5m)
|
||||
tile.rail_large_straight.name=Standard Gauge Rail (5m)
|
||||
tile.rail_large_straight_short.name=Standard Gauge Rail (1m)
|
||||
tile.rail_large_switch.name=Standard Gauge Switch Rail (15m, Left)
|
||||
tile.rail_large_switch_flipped.name=Standard Gauge Switch Rail (15m, Right)
|
||||
tile.rail_narrow.name=Narrow Gauge Cart Rail
|
||||
tile.rail_wood.name=Wooden Tracks
|
||||
tile.rbmk_absorber.name=RBMK Boron Neutron Absorber
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
384
src/main/resources/assets/hbm/models/missile_stealth.obj
Normal file
384
src/main/resources/assets/hbm/models/missile_stealth.obj
Normal file
@ -0,0 +1,384 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'MissileStealth.blend'
|
||||
# www.blender.org
|
||||
o Cylinder
|
||||
v 0.487139 0.500000 -0.281250
|
||||
v 0.487139 0.500000 0.281250
|
||||
v 0.000000 0.500000 0.562500
|
||||
v -0.487139 0.500000 0.281250
|
||||
v 0.000000 0.500000 -0.562500
|
||||
v -0.487139 0.500000 -0.281250
|
||||
v 0.000000 1.000000 -0.750000
|
||||
v -0.649519 1.000000 -0.375000
|
||||
v -0.649519 1.000000 0.375000
|
||||
v 0.000000 1.000000 0.750000
|
||||
v 0.649519 1.000000 0.375000
|
||||
v 0.649519 1.000000 -0.375000
|
||||
v 0.000000 7.000000 -0.750000
|
||||
v -0.649519 7.000000 -0.375000
|
||||
v -0.649519 7.000000 0.375000
|
||||
v 0.000000 7.000000 0.750000
|
||||
v 0.649519 7.000000 0.375000
|
||||
v 0.649519 7.000000 -0.375000
|
||||
v 0.000000 11.000000 0.000000
|
||||
v 0.755918 -0.020288 -1.295622
|
||||
v 0.255918 0.979712 -0.429596
|
||||
v 0.505918 -0.020288 -0.862609
|
||||
v 0.755918 1.479711 -1.295621
|
||||
v 0.255918 3.479711 -0.429596
|
||||
v 0.310045 0.979712 -0.398346
|
||||
v 0.310045 3.479711 -0.398346
|
||||
v 0.810045 -0.020288 -1.264372
|
||||
v 0.560045 -0.020288 -0.831359
|
||||
v 0.810045 1.479711 -1.264371
|
||||
v 0.689955 1.479712 1.333705
|
||||
v 0.439955 -0.020288 0.900692
|
||||
v 0.689955 -0.020288 1.333705
|
||||
v 0.189955 3.479711 0.467680
|
||||
v 0.189955 0.979712 0.467680
|
||||
v 0.244082 3.479711 0.436430
|
||||
v 0.744082 1.479712 1.302455
|
||||
v 0.494082 -0.020288 0.869442
|
||||
v 0.244082 0.979712 0.436430
|
||||
v 0.744082 -0.020288 1.302455
|
||||
v -1.500000 -0.020288 -0.006834
|
||||
v -0.500000 0.979712 -0.006834
|
||||
v -1.000000 -0.020288 -0.006834
|
||||
v -1.500000 1.479712 -0.006834
|
||||
v -0.500000 3.479712 -0.006834
|
||||
v -0.500000 0.979712 -0.069334
|
||||
v -0.500000 3.479712 -0.069334
|
||||
v -1.500000 -0.020288 -0.069334
|
||||
v -1.000000 -0.020288 -0.069334
|
||||
v -1.500000 1.479712 -0.069334
|
||||
v -0.744082 -0.020288 -1.302455
|
||||
v -0.244082 0.979712 -0.436430
|
||||
v -0.494082 -0.020288 -0.869442
|
||||
v -0.744082 1.479711 -1.302455
|
||||
v -0.244082 3.479711 -0.436430
|
||||
v -0.189955 0.979712 -0.467680
|
||||
v -0.189955 3.479711 -0.467680
|
||||
v -0.689956 -0.020288 -1.333705
|
||||
v -0.439955 -0.020288 -0.900692
|
||||
v -0.689956 1.479711 -1.333705
|
||||
v 1.500000 1.479712 0.069333
|
||||
v 1.000000 -0.020288 0.069334
|
||||
v 1.500000 -0.020288 0.069333
|
||||
v 0.500000 3.479711 0.069334
|
||||
v 0.500000 0.979712 0.069334
|
||||
v 0.500000 3.479711 0.006834
|
||||
v 1.500000 1.479712 0.006834
|
||||
v 1.000000 -0.020288 0.006834
|
||||
v 0.500000 0.979712 0.006834
|
||||
v 1.500000 -0.020288 0.006833
|
||||
v -0.755918 -0.020288 1.295621
|
||||
v -0.255918 0.979712 0.429596
|
||||
v -0.505918 -0.020288 0.862609
|
||||
v -0.755918 1.479712 1.295621
|
||||
v -0.255918 3.479712 0.429596
|
||||
v -0.310045 0.979712 0.398346
|
||||
v -0.310045 3.479712 0.398346
|
||||
v -0.810045 -0.020288 1.264371
|
||||
v -0.560045 -0.020288 0.831359
|
||||
v -0.810045 1.479712 1.264371
|
||||
vt 0.400000 0.047619
|
||||
vt 0.511111 0.000000
|
||||
vt 0.533333 0.047619
|
||||
vt 0.666667 0.047619
|
||||
vt 0.777778 -0.000000
|
||||
vt 0.800000 0.047619
|
||||
vt 0.133333 0.047619
|
||||
vt 0.244444 0.000000
|
||||
vt 0.266667 0.047619
|
||||
vt 0.644444 0.000000
|
||||
vt 0.022222 0.000000
|
||||
vt 0.111111 0.000000
|
||||
vt 0.850033 0.099935
|
||||
vt 0.800066 0.053571
|
||||
vt 0.850033 0.007208
|
||||
vt 0.266667 0.619048
|
||||
vt 0.000000 0.619048
|
||||
vt 0.000000 0.047619
|
||||
vt 0.533333 0.619048
|
||||
vt 0.133333 0.619048
|
||||
vt 0.666667 0.619048
|
||||
vt 0.400000 0.619048
|
||||
vt 0.377778 0.000000
|
||||
vt 0.600000 1.000000
|
||||
vt 0.800000 0.619048
|
||||
vt 0.733333 1.000000
|
||||
vt 0.066667 1.000000
|
||||
vt 0.200000 1.000000
|
||||
vt 0.333333 1.000000
|
||||
vt 0.466667 1.000000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.988889 0.392857
|
||||
vt 0.988889 0.250000
|
||||
vt 0.977778 0.202381
|
||||
vt 0.988889 0.202381
|
||||
vt 0.988889 0.583333
|
||||
vt 0.988889 0.107143
|
||||
vt 0.977778 0.107143
|
||||
vt 0.988889 0.107143
|
||||
vt 0.977778 0.202381
|
||||
vt 0.977778 0.107143
|
||||
vt 0.988889 0.392857
|
||||
vt 0.977778 0.583333
|
||||
vt 0.977778 0.392857
|
||||
vt 0.988889 0.250000
|
||||
vt 0.988889 0.202381
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.988889 0.392857
|
||||
vt 0.988889 0.250000
|
||||
vt 0.977778 0.202381
|
||||
vt 0.988889 0.202381
|
||||
vt 0.988889 0.583333
|
||||
vt 0.977778 0.107143
|
||||
vt 0.988889 0.107143
|
||||
vt 0.977778 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.988889 0.392857
|
||||
vt 0.988889 0.250000
|
||||
vt 0.988889 0.202381
|
||||
vt 0.977778 0.202381
|
||||
vt 0.988889 0.583333
|
||||
vt 0.977778 0.107143
|
||||
vt 0.988889 0.107143
|
||||
vt 0.988889 0.202381
|
||||
vt 0.977778 0.107143
|
||||
vt 0.988889 0.107143
|
||||
vt 0.988889 0.583333
|
||||
vt 0.977778 0.392857
|
||||
vt 0.988889 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.977778 0.202381
|
||||
vt 0.988889 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.977778 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.888889 0.250000
|
||||
vt 0.977778 0.250000
|
||||
vt 0.977778 0.392857
|
||||
vt 0.988889 0.392857
|
||||
vt 0.988889 0.250000
|
||||
vt 0.988889 0.202381
|
||||
vt 0.977778 0.202381
|
||||
vt 0.988889 0.583333
|
||||
vt 0.977778 0.107143
|
||||
vt 0.988889 0.107143
|
||||
vt 0.422222 0.000000
|
||||
vt 0.688889 0.000000
|
||||
vt 0.155556 0.000000
|
||||
vt 0.555556 -0.000000
|
||||
vt 0.949967 0.007208
|
||||
vt 0.999934 0.053571
|
||||
vt 0.949967 0.099935
|
||||
vt 0.288889 0.000000
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.977778 0.583333
|
||||
vt 0.988889 0.583333
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.977778 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.977778 0.583333
|
||||
vt 0.977778 0.583333
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.583333
|
||||
vt 0.800000 0.345238
|
||||
vt 0.977778 0.583333
|
||||
vn -0.4756 -0.3089 -0.8237
|
||||
vn -0.4756 -0.3089 0.8237
|
||||
vn 0.9511 -0.3089 0.0000
|
||||
vn -0.9511 -0.3089 0.0000
|
||||
vn 0.4756 -0.3089 0.8237
|
||||
vn -0.0000 -1.0000 0.0000
|
||||
vn 0.5000 0.0000 -0.8660
|
||||
vn 0.5000 0.0000 0.8660
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -0.5000 0.0000 0.8660
|
||||
vn -0.5000 0.0000 -0.8660
|
||||
vn 0.4756 -0.3089 -0.8237
|
||||
vn -0.9871 0.1603 0.0000
|
||||
vn -0.4935 0.1603 0.8548
|
||||
vn 0.4935 0.1603 0.8548
|
||||
vn 0.9871 0.1603 0.0000
|
||||
vn 0.4935 0.1603 -0.8548
|
||||
vn -0.4935 0.1603 -0.8548
|
||||
vn -0.8660 0.0000 -0.5000
|
||||
vn 0.8660 -0.0000 0.5000
|
||||
vn 0.4472 0.4472 -0.7746
|
||||
vn -0.4472 -0.4472 0.7746
|
||||
vn -0.4472 -0.4472 -0.7746
|
||||
vn 0.4472 0.4472 0.7746
|
||||
vn -0.8660 -0.0000 0.5000
|
||||
vn 0.8660 0.0000 -0.5000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -0.0000 0.0000 -1.0000
|
||||
vn -0.8944 0.4472 0.0000
|
||||
vn 0.8944 -0.4472 0.0000
|
||||
vn -0.4472 0.4472 -0.7746
|
||||
vn 0.4472 -0.4472 0.7746
|
||||
vn -0.8944 -0.4472 0.0000
|
||||
vn 0.8944 0.4472 -0.0000
|
||||
vn -0.4472 0.4472 0.7746
|
||||
vn 0.4472 -0.4472 -0.7746
|
||||
s off
|
||||
f 7/1/1 6/2/1 8/3/1
|
||||
f 9/4/2 3/5/2 10/6/2
|
||||
f 11/7/3 1/8/3 12/9/3
|
||||
f 8/3/4 4/10/4 9/4/4
|
||||
f 11/7/5 3/11/5 2/12/5
|
||||
f 2/13/6 3/14/6 4/15/6
|
||||
f 7/1/7 18/16/7 12/9/7
|
||||
f 11/7/8 16/17/8 10/18/8
|
||||
f 9/4/9 14/19/9 8/3/9
|
||||
f 12/9/10 17/20/10 11/7/10
|
||||
f 10/6/11 15/21/11 9/4/11
|
||||
f 8/3/12 13/22/12 7/1/12
|
||||
f 12/9/13 5/23/13 7/1/13
|
||||
f 14/19/14 15/21/14 19/24/14
|
||||
f 15/21/15 16/25/15 19/26/15
|
||||
f 16/17/16 17/20/16 19/27/16
|
||||
f 17/20/17 18/16/17 19/28/17
|
||||
f 18/16/18 13/22/18 19/29/18
|
||||
f 13/22/19 14/19/19 19/30/19
|
||||
f 23/31/20 20/32/20 22/33/20
|
||||
f 28/34/21 27/35/21 29/36/21
|
||||
f 23/37/7 27/35/7 20/38/7
|
||||
f 20/38/6 28/39/6 22/40/6
|
||||
f 24/41/22 29/36/22 23/37/22
|
||||
f 21/42/23 28/39/23 25/43/23
|
||||
f 38/44/24 31/45/24 34/46/24
|
||||
f 36/47/25 33/48/25 30/49/25
|
||||
f 39/50/6 31/45/6 37/51/6
|
||||
f 36/47/8 32/52/8 39/50/8
|
||||
f 31/53/26 32/52/26 30/49/26
|
||||
f 36/54/27 39/55/27 37/56/27
|
||||
f 43/57/28 40/58/28 42/59/28
|
||||
f 48/60/29 47/61/29 49/62/29
|
||||
f 43/63/9 47/61/9 40/64/9
|
||||
f 40/64/6 48/65/6 42/66/6
|
||||
f 44/67/30 49/62/30 43/63/30
|
||||
f 42/66/31 45/68/31 41/69/31
|
||||
f 53/70/26 50/71/26 52/72/26
|
||||
f 58/73/27 57/74/27 59/75/27
|
||||
f 53/76/12 57/74/12 50/77/12
|
||||
f 52/78/6 57/74/6 58/79/6
|
||||
f 54/80/32 59/75/32 53/76/32
|
||||
f 52/78/33 55/81/33 51/82/33
|
||||
f 67/83/34 64/84/34 68/85/34
|
||||
f 65/86/35 60/87/35 66/88/35
|
||||
f 67/83/6 62/89/6 61/90/6
|
||||
f 66/88/10 62/89/10 69/91/10
|
||||
f 61/92/28 62/89/28 60/87/28
|
||||
f 66/93/29 69/94/29 67/95/29
|
||||
f 73/96/21 70/97/21 72/98/21
|
||||
f 78/99/20 77/100/20 79/101/20
|
||||
f 73/102/11 77/100/11 70/103/11
|
||||
f 72/104/6 77/100/6 78/105/6
|
||||
f 74/106/36 79/101/36 73/102/36
|
||||
f 72/104/37 75/107/37 71/108/37
|
||||
f 7/1/1 5/109/1 6/2/1
|
||||
f 9/4/2 4/110/2 3/5/2
|
||||
f 11/7/3 2/111/3 1/8/3
|
||||
f 8/3/4 6/112/4 4/10/4
|
||||
f 11/7/5 10/18/5 3/11/5
|
||||
f 4/15/6 6/113/6 5/114/6
|
||||
f 5/114/6 1/115/6 4/15/6
|
||||
f 1/115/6 2/13/6 4/15/6
|
||||
f 7/1/7 13/22/7 18/16/7
|
||||
f 11/7/8 17/20/8 16/17/8
|
||||
f 9/4/9 15/21/9 14/19/9
|
||||
f 12/9/10 18/16/10 17/20/10
|
||||
f 10/6/11 16/25/11 15/21/11
|
||||
f 8/3/12 14/19/12 13/22/12
|
||||
f 12/9/13 1/116/13 5/23/13
|
||||
f 22/33/20 21/117/20 23/31/20
|
||||
f 21/117/20 24/118/20 23/31/20
|
||||
f 26/119/21 25/120/21 29/36/21
|
||||
f 25/120/21 28/34/21 29/36/21
|
||||
f 23/37/7 29/36/7 27/35/7
|
||||
f 20/38/6 27/35/6 28/39/6
|
||||
f 24/41/22 26/121/22 29/36/22
|
||||
f 21/42/23 22/40/23 28/39/23
|
||||
f 38/44/24 37/51/24 31/45/24
|
||||
f 36/47/25 35/122/25 33/48/25
|
||||
f 39/50/6 32/52/6 31/45/6
|
||||
f 36/47/8 30/49/8 32/52/8
|
||||
f 33/123/26 34/124/26 30/49/26
|
||||
f 34/124/26 31/53/26 30/49/26
|
||||
f 37/56/27 38/125/27 36/54/27
|
||||
f 38/125/27 35/126/27 36/54/27
|
||||
f 42/59/28 41/127/28 43/57/28
|
||||
f 41/127/28 44/128/28 43/57/28
|
||||
f 46/129/29 45/130/29 49/62/29
|
||||
f 45/130/29 48/60/29 49/62/29
|
||||
f 43/63/9 49/62/9 47/61/9
|
||||
f 40/64/6 47/61/6 48/65/6
|
||||
f 44/67/30 46/131/30 49/62/30
|
||||
f 42/66/31 48/65/31 45/68/31
|
||||
f 52/72/26 51/132/26 53/70/26
|
||||
f 51/132/26 54/133/26 53/70/26
|
||||
f 56/134/27 55/135/27 59/75/27
|
||||
f 55/135/27 58/73/27 59/75/27
|
||||
f 53/76/12 59/75/12 57/74/12
|
||||
f 52/78/6 50/77/6 57/74/6
|
||||
f 54/80/32 56/136/32 59/75/32
|
||||
f 52/78/33 58/79/33 55/81/33
|
||||
f 67/83/34 61/90/34 64/84/34
|
||||
f 65/86/35 63/137/35 60/87/35
|
||||
f 67/83/6 69/91/6 62/89/6
|
||||
f 66/88/10 60/87/10 62/89/10
|
||||
f 63/138/28 64/139/28 60/87/28
|
||||
f 64/139/28 61/92/28 60/87/28
|
||||
f 67/95/29 68/140/29 66/93/29
|
||||
f 68/140/29 65/141/29 66/93/29
|
||||
f 72/98/21 71/142/21 73/96/21
|
||||
f 71/142/21 74/143/21 73/96/21
|
||||
f 76/144/20 75/145/20 79/101/20
|
||||
f 75/145/20 78/99/20 79/101/20
|
||||
f 73/102/11 79/101/11 77/100/11
|
||||
f 72/104/6 70/103/6 77/100/6
|
||||
f 74/106/36 76/146/36 79/101/36
|
||||
f 72/104/37 78/105/37 75/107/37
|
||||
BIN
src/main/resources/assets/hbm/textures/items/missile_stealth.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/missile_stealth.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 253 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
Loading…
x
Reference in New Issue
Block a user