Merge branch 'HbmMods:master' into deimos

This commit is contained in:
TheVitya2127 2026-07-25 21:29:35 +04:00 committed by GitHub
commit a0b9acd011
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
154 changed files with 5998 additions and 704 deletions

View File

@ -1,7 +1,41 @@
## Added
* New Chicago Pile
* Assembled multiblock, similar to the PWR
* Requires new chicago pile graphite bricks
* Assembled with a hand drill out of a box made from graphite bricks, at least 5x5x5, and at most 15x15x15 blocks large
* Drilling the assembled reactor will add channels at the selected locations
* Drilling along the reactor's orientation will add a fuel channel
* Drilling perpendicular to fuel channels will add a ventilation channel
* Drilling vertically will add a control rod channel
* Fuel insertion is now done with a dedicated fuel loader which can be operated by hand or automated with hopper IO and redstone
* Ventilation channels need chicago pile vents which are powered with compressed air at 1 PU
* Chicago pile control rods can either be fully withdrawn with redstone or fine tuned with RoR
* Additionally, channels can be drilled by right clicking a pile addon device with the hand drill, the addon doesn't need to be removed beforehand
* This is mainly for convenience when disassembling and reassembling the reactor, which requires all channels to be drilled again
* Piles that overheat will explode, throwing flaming graphite everywhere
## Changed ## Changed
* Updated all oil well GUI textures * Updated all oil well GUI textures
* There's now only two upgrade slots instead of three * There's now only two upgrade slots instead of three
* All legacy pixel gauges have been replaced with smooth ones (watz, ZIRNOX, CCGT) making them more accurate * All legacy pixel gauges have been replaced with smooth ones (watz, ZIRNOX, CCGT) making them more accurate
* Updated the diesel generator's GUI
* The diesel gen now also has an in-GUI button for turning it on and off like the industrial combustion engine
* MS-ESv1.1 `split` instruction now supports variable substitution
* Multiblocks now display a wireframe preview of how much space they take up
* This preview is green if it can be placed and red if it can not
* On some machines, this preview might not be perfect, but the check on whether it can be placed should always be accurate
* This makes it easier to anticipate how much space a machine takes up, as well as lining up large parts like fusion reactor components which were notoriously hard to place down right
* Updated the small pylon model
* The small pylon now has a steel variant
* Items in the battery socket which previously didn't show up in the socket's model are now rendered
* Reduced the cost for the heavy stirling engine
## Fixed ## Fixed
* Fixed held block being placed when not sneaking when opening the cable diode's GUI * Fixed held block being placed when not sneaking when opening the cable diode's GUI
* Fixed an issue where the diesel generator's fuel capacity is the original 4,000mB instead of the intended new 16,000mB
* This means that explosive barrels and universal barrels can now be loaded into the diesel generator
* Fixed RoR terminal's `set` command not working
* Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible
* This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons
* Fixed some issues regarding the new crane structure
* Fixed skeletonizer ashes floating over the floor after landing

View File

@ -5,6 +5,9 @@ import com.hbm.handler.ThreeInts;
import com.hbm.interfaces.ICopiable; import com.hbm.interfaces.ICopiable;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IPersistentNBT;
import com.hbm.util.Clock;
import com.hbm.util.EntityDamageUtil;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.world.gen.nbt.INBTBlockTransformable; import com.hbm.world.gen.nbt.INBTBlockTransformable;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
@ -13,6 +16,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@ -32,10 +36,14 @@ import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent; import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import net.minecraft.client.renderer.Tessellator;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.Set;
import org.lwjgl.opengl.GL11;
public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable, INBTBlockTransformable { public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable, INBTBlockTransformable {
@ -595,4 +603,272 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl
return meta; return meta;
} }
public int[][] getAllDimensions() {
return new int[][] { getDimensions() };
}
public double[][] getAABBExtras() {
return new double[0][0];
}
@SideOnly(Side.CLIENT)
public void drawPlacementHighlight(EntityPlayer player, float interp) {
MovingObjectPosition mop = EntityDamageUtil.getMouseOver(player, 5.0D);
if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) {
double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) interp;
double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) interp;
double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) interp;
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
int o = -getOffset();
int pY = mop.blockY + getHeightOffset();
// Orientation
ForgeDirection facing = ForgeDirection.NORTH;
if(i == 0) facing = ForgeDirection.getOrientation(2);
if(i == 1) facing = ForgeDirection.getOrientation(5);
if(i == 2) facing = ForgeDirection.getOrientation(3);
if(i == 3) facing = ForgeDirection.getOrientation(4);
ForgeDirection sideHit = ForgeDirection.getOrientation(mop.sideHit);
facing = getDirModified(facing);
double originX = mop.blockX + facing.offsetX * o + sideHit.offsetX;
double originY = pY + sideHit.offsetY;
double originZ = mop.blockZ + facing.offsetZ * o + sideHit.offsetZ;
boolean canPlace = checkRequirement(player.worldObj, mop.blockX + sideHit.offsetX, pY + sideHit.offsetY, mop.blockZ + sideHit.offsetZ, facing, o);
Tessellator tess = Tessellator.instance;
GL11.glPushMatrix();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_TEXTURE_2D);
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
GL11.glLineWidth(2.0F);
GL11.glDepthMask(false);
tess.startDrawing(GL11.GL_LINES);
tess.setBrightness(240);
double timer = (Clock.get_ms() % (1000D * Math.PI)) / 250D;
double sine = Math.sin(timer);
int color = (int) (255 * (sine * 0.25 + 0.75));
if(canPlace) {
tess.setColorRGBA(0, color, 0, 255);
} else {
tess.setColorRGBA(color, 0, 0, 255);
}
// Gets the list of different dimensions that each XLmultiblock has,
// and generates the list of blocks that needs to be highlighted.
// Each XL multiblock has the getAllDimensions overridden in its own
// class. Each NEEDS it or it will show the incorect shape.
List<BlockPos> blocks = new java.util.ArrayList<>();
Set<BlockPos> set = new java.util.HashSet<>();
for(int[] dims : getAllDimensions()) {
// Some of the multiblocks have offsets for the placements, so
// this allows for the ones that dont need it to have a bunch of
// 0s at the end.
int offFwd = dims.length > 6 ? dims[6] : 0;
int offUp = dims.length > 7 ? dims[7] : 0;
int offLat = dims.length > 8 ? dims[8] : 0;
int worldOffX;
int worldOffY;
int worldOffZ;
worldOffY = offUp;
worldOffX = facing.offsetX * offFwd + facing.getRotation(ForgeDirection.UP).offsetX * offLat;
worldOffZ = facing.offsetZ * offFwd + facing.getRotation(ForgeDirection.UP).offsetZ * offLat;
int[] rot = MultiblockHandlerXR.rotate(dims, facing);
for(int bx = -rot[4] + worldOffX; bx <= rot[5] + worldOffX; bx++) {
for(int by = -rot[1] + worldOffY; by <= rot[0] + worldOffY; by++) {
for(int bz = -rot[2] + worldOffZ; bz <= rot[3] + worldOffZ; bz++) {
BlockPos bp = new BlockPos(MathHelper.floor_double(originX) + bx, MathHelper.floor_double(originY) + by, MathHelper.floor_double(originZ) + bz);
blocks.add(bp);
set.add(bp);
}
}
}
}
// This looks for the blocks nearby and draws lines between the
// vertexes to make different shaped boxes.
// Most of this was taken from Mellow (Thanks mellow) -Wolf
for(BlockPos pos : blocks) {
boolean px = set.contains(pos.add(1, 0, 0));
boolean nx = set.contains(pos.add(-1, 0, 0));
boolean ppy = set.contains(pos.add(0, 1, 0));
boolean ny = set.contains(pos.add(0, -1, 0));
boolean ppz = set.contains(pos.add(0, 0, 1));
boolean nz = set.contains(pos.add(0, 0, -1));
double minX = pos.getX() - dX;
double maxX = pos.getX() + 1 - dX;
double minY = pos.getY() - dY;
double maxY = pos.getY() + 1 - dY;
double minZ = pos.getZ() - dZ;
double maxZ = pos.getZ() + 1 - dZ;
if(!ppy) {
if(!nx) {
tess.addVertex(minX, maxY, minZ);
tess.addVertex(minX, maxY, maxZ);
}
if(!ppz) {
tess.addVertex(minX, maxY, maxZ);
tess.addVertex(maxX, maxY, maxZ);
}
if(!px) {
tess.addVertex(maxX, maxY, maxZ);
tess.addVertex(maxX, maxY, minZ);
}
if(!nz) {
tess.addVertex(maxX, maxY, minZ);
tess.addVertex(minX, maxY, minZ);
}
}
if(!ny) {
if(!nx) {
tess.addVertex(minX, minY, minZ);
tess.addVertex(minX, minY, maxZ);
}
if(!ppz) {
tess.addVertex(minX, minY, maxZ);
tess.addVertex(maxX, minY, maxZ);
}
if(!px) {
tess.addVertex(maxX, minY, maxZ);
tess.addVertex(maxX, minY, minZ);
}
if(!nz) {
tess.addVertex(maxX, minY, minZ);
tess.addVertex(minX, minY, minZ);
}
}
if(!nz) {
if(!nx) {
tess.addVertex(minX, minY, minZ);
tess.addVertex(minX, maxY, minZ);
}
if(!ppy) {
tess.addVertex(minX, maxY, minZ);
tess.addVertex(maxX, maxY, minZ);
}
if(!px) {
tess.addVertex(maxX, maxY, minZ);
tess.addVertex(maxX, minY, minZ);
}
if(!ny) {
tess.addVertex(maxX, minY, minZ);
tess.addVertex(minX, minY, minZ);
}
}
if(!ppz) {
if(!nx) {
tess.addVertex(minX, minY, maxZ);
tess.addVertex(minX, maxY, maxZ);
}
if(!ppy) {
tess.addVertex(minX, maxY, maxZ);
tess.addVertex(maxX, maxY, maxZ);
}
if(!px) {
tess.addVertex(maxX, maxY, maxZ);
tess.addVertex(maxX, minY, maxZ);
}
if(!ny) {
tess.addVertex(maxX, minY, maxZ);
tess.addVertex(minX, minY, maxZ);
}
}
if(!nx) {
if(!nz) {
tess.addVertex(minX, minY, minZ);
tess.addVertex(minX, maxY, minZ);
}
if(!ppy) {
tess.addVertex(minX, maxY, minZ);
tess.addVertex(minX, maxY, maxZ);
}
if(!ppz) {
tess.addVertex(minX, maxY, maxZ);
tess.addVertex(minX, minY, maxZ);
}
if(!ny) {
tess.addVertex(minX, minY, maxZ);
tess.addVertex(minX, minY, minZ);
}
}
if(!px) {
if(!nz) {
tess.addVertex(maxX, minY, minZ);
tess.addVertex(maxX, maxY, minZ);
}
if(!ppy) {
tess.addVertex(maxX, maxY, minZ);
tess.addVertex(maxX, maxY, maxZ);
}
if(!ppz) {
tess.addVertex(maxX, maxY, maxZ);
tess.addVertex(maxX, minY, maxZ);
}
if(!ny) {
tess.addVertex(maxX, minY, maxZ);
tess.addVertex(maxX, minY, minZ);
}
}
}
tess.setColorRGBA(0, 0, color, 255);
// boo-yeah
for(double[] extra : this.getAABBExtras()) {
ForgeDirection rot = facing.getRotation(ForgeDirection.UP);
double cX = MathHelper.floor_double(originX) - dX + 0.5;
double cY = MathHelper.floor_double(originY) - dY;
double cZ = MathHelper.floor_double(originZ) - dZ + 0.5;
double upr = extra[0];
double lwr = extra[1];
double fwd = extra[2];
double bwd = extra[3];
double lft = extra[4];
double rgt = extra[5];
double x0 = cX + fwd * facing.offsetX + lft * rot.offsetX;
double x1 = cX + bwd * facing.offsetX + rgt * rot.offsetX;
double y0 = cY + lwr;
double y1 = cY + upr;
double z0 = cZ + fwd * facing.offsetZ + lft * rot.offsetZ;
double z1 = cZ + bwd * facing.offsetZ + rgt * rot.offsetZ;
tess.addVertex(x0, y0, z0); tess.addVertex(x0, y0, z1);
tess.addVertex(x1, y0, z0); tess.addVertex(x1, y0, z1);
tess.addVertex(x0, y0, z0); tess.addVertex(x1, y0, z0);
tess.addVertex(x0, y0, z1); tess.addVertex(x1, y0, z1);
tess.addVertex(x0, y1, z0); tess.addVertex(x0, y1, z1);
tess.addVertex(x1, y1, z0); tess.addVertex(x1, y1, z1);
tess.addVertex(x0, y1, z0); tess.addVertex(x1, y1, z0);
tess.addVertex(x0, y1, z1); tess.addVertex(x1, y1, z1);
tess.addVertex(x0, y0, z0); tess.addVertex(x0, y1, z0);
tess.addVertex(x1, y0, z0); tess.addVertex(x1, y1, z0);
tess.addVertex(x0, y0, z1); tess.addVertex(x0, y1, z1);
tess.addVertex(x1, y0, z1); tess.addVertex(x1, y1, z1);
}
tess.draw();
tess.setTranslation(0, 0, 0);
GL11.glDepthMask(true);
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, OpenGlHelper.lastBrightnessX, OpenGlHelper.lastBrightnessY);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
}
} }

View File

@ -745,6 +745,7 @@ public class ModBlocks {
public static Block red_connector; public static Block red_connector;
public static Block red_connector_super; public static Block red_connector_super;
public static Block red_pylon; public static Block red_pylon;
public static Block red_pylon_steel;
public static Block red_pylon_medium_wood; public static Block red_pylon_medium_wood;
public static Block red_pylon_medium_wood_transformer; public static Block red_pylon_medium_wood_transformer;
public static Block red_pylon_medium_steel; public static Block red_pylon_medium_steel;
@ -1020,6 +1021,8 @@ public class ModBlocks {
public static Block machine_radgen; public static Block machine_radgen;
public static Block machine_satlinker; public static Block machine_satlinker;
public static Block machine_satlink;
public static Block machine_keyforge; public static Block machine_keyforge;
public static Block machine_armor_table; public static Block machine_armor_table;
@ -1510,8 +1513,8 @@ public class ModBlocks {
reinforced_ducrete = new BlockNoSpawn(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete"); reinforced_ducrete = new BlockNoSpawn(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete");
lightstone = new BlockLightstone(Material.rock, LightstoneType.class, true, true).setBlockName("lightstone").setCreativeTab(MainRegistry.blockTab).setHardness(2F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":lightstone"); lightstone = new BlockLightstone(Material.rock, LightstoneType.class, true, true).setBlockName("lightstone").setCreativeTab(MainRegistry.blockTab).setHardness(2F).setResistance(15.0F).setBlockTextureName(RefStrings.MODID + ":lightstone");
brick_forgotten = new BlockPillar(Material.rock, RefStrings.MODID + ":brick_forgotten_top").setBlockName("brick_forgotten").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten"); brick_forgotten = new BlockForgottenBrick().setBlockName("brick_forgotten").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten");
brick_forgotten_lock = new BlockForgottenLock(Material.rock, RefStrings.MODID + ":brick_forgotten_top").setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock"); brick_forgotten_lock = new BlockForgottenLock().setBlockName("brick_forgotten_lock").setBlockUnbreakable().setResistance(666_666F).setBlockTextureName(RefStrings.MODID + ":brick_forgotten_lock");
concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab); concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab);
concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab); concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab);
@ -1854,6 +1857,7 @@ public class ModBlocks {
red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_connector = new ConnectorRedWire(Material.iron).setBlockName("red_connector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector");
red_connector_super = new ConnectorRedWireSuper(Material.iron).setBlockName("red_connector_super").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector"); red_connector_super = new ConnectorRedWireSuper(Material.iron).setBlockName("red_connector_super").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_connector");
red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon = new PylonRedWire(Material.iron).setBlockName("red_pylon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon");
red_pylon_steel = new PylonRedWire(Material.iron).setBlockName("red_pylon_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon");
red_pylon_medium_wood = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_medium_wood = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon");
red_pylon_medium_wood_transformer = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_medium_wood_transformer = new PylonMedium(Material.wood).setBlockName("red_pylon_medium_wood_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon");
red_pylon_medium_steel = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon"); red_pylon_medium_steel = new PylonMedium(Material.iron).setBlockName("red_pylon_medium_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":red_pylon");
@ -1900,7 +1904,7 @@ public class ModBlocks {
crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side");
crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side"); crane_partitioner = new CranePartitioner().setBlockName("crane_partitioner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_partitioner_side");
fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint"); drone_waypoint = new DroneWaypoint().setBlockName("drone_waypoint").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":drone_waypoint");
drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); drone_crate = new DroneCrate().setBlockName("drone_crate").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
@ -1936,6 +1940,7 @@ public class ModBlocks {
machine_transformer = new MachineTransformer(Material.iron).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron"); machine_transformer = new MachineTransformer(Material.iron).setBlockName("machine_transformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_transformer_iron");
machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side"); machine_satlinker = new MachineSatLinker(Material.iron).setBlockName("machine_satlinker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_satlinker_side");
machine_satlink = new MachineSatLink().setBlockName("machine_satlink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side"); machine_keyforge = new MachineKeyForge(Material.iron).setBlockName("machine_keyforge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":machine_keyforge_side");
machine_armor_table = new BlockArmorTable(Material.iron).setBlockName("machine_armor_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); machine_armor_table = new BlockArmorTable(Material.iron).setBlockName("machine_armor_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab);
machine_weapon_table = new BlockWeaponTable().setBlockName("machine_weapon_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab); machine_weapon_table = new BlockWeaponTable().setBlockName("machine_weapon_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab);
@ -3130,6 +3135,7 @@ public class ModBlocks {
register(red_connector); register(red_connector);
register(red_connector_super); register(red_connector_super);
register(red_pylon); register(red_pylon);
register(red_pylon_steel);
register(red_pylon_medium_wood); register(red_pylon_medium_wood);
register(red_pylon_medium_wood_transformer); register(red_pylon_medium_wood_transformer);
register(red_pylon_medium_steel); register(red_pylon_medium_steel);
@ -3289,6 +3295,7 @@ public class ModBlocks {
GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName()); GameRegistry.registerBlock(teleanchor, teleanchor.getUnlocalizedName());
GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName()); GameRegistry.registerBlock(field_disturber, field_disturber.getUnlocalizedName());
GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName()); GameRegistry.registerBlock(machine_satlinker, machine_satlinker.getUnlocalizedName());
register(machine_satlink);
GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName()); GameRegistry.registerBlock(machine_keyforge, machine_keyforge.getUnlocalizedName());
GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName()); GameRegistry.registerBlock(machine_armor_table, machine_armor_table.getUnlocalizedName());
GameRegistry.registerBlock(machine_weapon_table, machine_weapon_table.getUnlocalizedName()); GameRegistry.registerBlock(machine_weapon_table, machine_weapon_table.getUnlocalizedName());

View File

@ -0,0 +1,112 @@
package com.hbm.blocks.generic;
import java.util.List;
import com.hbm.blocks.BlockMulti;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
public class BlockForgottenBrick extends BlockMulti {
private IIcon iconTop;
private IIcon iconAlt;
private IIcon iconAltTop;
private IIcon iconStone;
private IIcon iconHole;
private IIcon iconEmpty;
private IIcon iconPlanks;
private IIcon iconBricks;
public static final int META_DEFAULT = 0;
public static final int META_BW = 1;
public static final int META_NULLSTONE = 2;
public static final int META_HOLE = 3;
public static final int META_HOLE_EMPTY = 4;
public static final int META_NULLROOM_WOOD = 5;
public static final int META_NULLROOM_STONE = 6;
public BlockForgottenBrick() {
super(Material.rock);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
super.registerBlockIcons(reg);
this.iconTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_top");
this.iconAlt = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw");
this.iconAltTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_top");
this.iconStone = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_1_wip");
this.iconHole = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_hole");
this.iconEmpty = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_hole_empty");
this.iconPlanks = reg.registerIcon(RefStrings.MODID + ":nr_planks");
this.iconBricks = reg.registerIcon(RefStrings.MODID + ":nr_stone");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if(meta == META_BW) {
if(side == 0 || side == 1) return this.iconAltTop;
return this.iconAlt;
}
if(meta == META_NULLSTONE) {
return this.iconStone;
}
if(meta == META_HOLE) {
if(side == 0 || side == 1) return this.iconTop;
return this.iconHole;
}
if(meta == META_HOLE_EMPTY) {
if(side == 0 || side == 1) return this.iconTop;
return this.iconEmpty;
}
if(meta == META_NULLROOM_WOOD) {
return this.iconPlanks;
}
if(meta == META_NULLROOM_STONE) {
return this.iconBricks;
}
if(side == 0 || side == 1) return this.iconTop;
return this.blockIcon;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
int meta = world.getBlockMetadata(x, y, z);
if(meta == META_HOLE) {
if(player.getHeldItem() == null) {
player.inventory.mainInventory[player.inventory.currentItem] = new ItemStack(ModItems.coal_eternal);
world.setBlockMetadataWithNotify(x, y, z, META_HOLE_EMPTY, 3);
return true;
}
return false;
}
return false;
}
@Override public int getSubCount() { return 7; }
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < getSubCount(); ++i) {
list.add(new ItemStack(item, 1, i));
}
}
}

View File

@ -1,21 +1,82 @@
package com.hbm.blocks.generic; package com.hbm.blocks.generic;
import com.hbm.blocks.ModBlocks; import java.util.List;
import com.hbm.blocks.machine.BlockPillar;
import com.hbm.items.ModItems;
import com.hbm.blocks.BlockMulti;
import com.hbm.blocks.ModBlocks;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class BlockForgottenLock extends BlockPillar { public class BlockForgottenLock extends BlockMulti {
private IIcon iconTop;
private IIcon iconAlt;
private IIcon iconAltTop;
private IIcon iconStone;
private IIcon iconStoneTop;
public static final int META_DEFAULT = 0;
public static final int META_BW = 1;
public static final int META_NULLSTONE = 2;
public static final int META_THE_BLOCK_THAT_FUCKING_KILLS_YOU = 3;
public BlockForgottenLock(Material mat, String top) { public BlockForgottenLock() {
super(mat, top); super(Material.rock);
} }
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
super.registerBlockIcons(reg);
this.iconTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_top");
this.iconAlt = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_lock");
this.iconStone = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_2_wip");
this.iconStoneTop = reg.registerIcon(RefStrings.MODID + ":playground/nullstone_demo_1_wip");
this.iconAltTop = reg.registerIcon(RefStrings.MODID + ":brick_forgotten_bw_top");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if(meta == META_BW) {
if(side == 0 || side == 1) return this.iconAltTop;
return this.iconAlt;
}
if(meta == META_NULLSTONE) {
if(side == 0 || side == 1) return this.iconStoneTop;
return this.iconStone;
}
if(side == 0 || side == 1) return this.iconTop;
return this.blockIcon;
}
/*
* A red herring is something that misleads or distracts from a relevant or important question.[1]
* It may be either a logical fallacy or a literary device that leads readers or audiences toward a
* false conclusion. A red herring may be used intentionally, as in mystery fiction or as part of
* rhetorical strategies (e.g., in politics), or may be used in argumentation inadvertently.[2]
*
* The expression was popularized in 1807 by the English polemicist William Cobbett, who told a
* story of having used a strong-smelling smoked herring to divert and distract hounds from
* chasing a rabbit.[3]
*/
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
@ -49,4 +110,14 @@ public class BlockForgottenLock extends BlockPillar {
world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b); world.setBlock(x - dir.offsetX * d + rot.offsetX * w, y + h, z - dir.offsetZ * d + rot.offsetZ * w, b);
} }
} }
@Override public int getSubCount() { return 3; }
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < getSubCount(); ++i) {
list.add(new ItemStack(item, 1, i));
}
}
} }

View File

@ -31,7 +31,13 @@ public class MachineAnnihilator extends BlockDummyable {
@Override public int[] getDimensions() { return new int[] {2, 0, 4, 4, 1, 1}; } @Override public int[] getDimensions() { return new int[] {2, 0, 4, 4, 1, 1}; }
@Override public int getOffset() { return 4; } @Override public int getOffset() { return 4; }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {2, 0, 4, 4, 1, 1},
new int[] {8, -2, 1, 1, 1, 1, -3, 0, 0}
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -43,7 +43,18 @@ public class MachineBigAssTank extends BlockDummyable implements IPersistentInfo
@Override public int[] getDimensions() { return new int[] {5, 0, 4, 4, 4, 4}; } @Override public int[] getDimensions() { return new int[] {5, 0, 4, 4, 4, 4}; }
@Override public int getOffset() { return 6; } @Override public int getOffset() { return 6; }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {5, 0, 4, 4, 4, 4},
new int[] {4, 0, 5, -4, 2, 2},
new int[] {4, 0, -4, 5, 2, 2},
new int[] {4, 0, 2, 2, 5, -4},
new int[] {4, 0, 2, 2, -4, 5},
new int[] {3, 0, 6, -5, 0, 0},
new int[] {3, 0, -5, 6, 0, 0}
};
}
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);

View File

@ -49,7 +49,16 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver
public int getOffset() { public int getOffset() {
return 3; return 3;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {0, 0, 3, 3, 2, 3},
new int[]{8, -1, 3, -1, 2, 0},
new int[]{13, 0, 0, 3, 2, 1},
new int[]{14, -13, -1, 2, 1, 0},
new int[]{3, -1, 2, 3, -1, 3}
};
}
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {

View File

@ -68,7 +68,14 @@ public class MachineCatalyticReformer extends BlockDummyable implements IPersist
public int getOffset() { public int getOffset() {
return 1; return 1;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {2, 0, 1, 1, 2, 2},
new int[] {3, -3, 1, 0, -1, 2},
new int[] {6, -3, 1, 1, 2, 0},
};
}
@Override @Override
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {

View File

@ -89,7 +89,15 @@ public class MachineChungus extends BlockDummyable implements ITooltipProvider,
public int getOffset() { public int getOffset() {
return 3; return 3;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 3, 0, 0, 3, 2, 2 },
new int[] { 4, -4, 0, 3, 1, 1 },
new int[] { 3, 0, 6, -1, 1, 1 },
new int[] { 2, 0, 10, -7, 1, 1 },
};
}
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);

View File

@ -43,7 +43,17 @@ public class MachineCoker extends BlockDummyable implements ITooltipProvider {
public int getOffset() { public int getOffset() {
return 1; return 1;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {22, 0, 1, 1, 1, 1},
new int[] {5, 0, 2, 2, 2, 2, 0, 1, 0},
new int[] {0, 1, 0, 0, 0, 0, 2, 1, 2},
new int[] {0, 1, 0, 0, 0, 0, 2, 1, -2},
new int[] {0, 1, 0, 0, 0, 0, -2, 1, 2},
new int[] {0, 1, 0, 0, 0, 0, -2, 1, -2},
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
if(super.checkRequirement(world, x, y, z, dir, o)) { if(super.checkRequirement(world, x, y, z, dir, o)) {

View File

@ -34,7 +34,14 @@ public class MachineCompressor extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 2; return 2;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {2, 0, 1, 2, 1, 1},
new int[] {3, -3, 1, 1, 1, 1},
new int[] {8, -4, 0, 0, 1, 1}
};
}
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
return this.standardOpenBehavior(world, x, y, z, player, 0); return this.standardOpenBehavior(world, x, y, z, player, 0);

View File

@ -59,7 +59,7 @@ public class MachineDiesel extends BlockMachineBase implements ITooltipProvider
if(efficiency != null) { if(efficiency != null) {
int eff = (int)(efficiency * 100); int eff = (int)(efficiency * 100);
list.add(EnumChatFormatting.YELLOW + "-" + grade.getGrade() + ": " + EnumChatFormatting.RED + "" + eff + "%"); list.add(EnumChatFormatting.YELLOW + "-" + grade.getLocalizedName() + ": " + EnumChatFormatting.RED + "" + eff + "%");
} }
} }
} }

View File

@ -32,7 +32,24 @@ public class MachineElectrolyser extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 5; return 5;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {0, 0, 5, 5, 1, 3},
new int[] {2, -1, 5, 5, 1, 1},
new int[] {3, -3, 5, 5, 0, 0},
new int[] {3, -1, 4, -4, -3, 3},
new int[] {3, -1, 2, -2, -3, 3},
new int[] {3, -1, 0, 0, -3, 3},
new int[] {3, -1, -2, 2, -3, 3},
new int[] {3, -1, -4, 4, -3, 3},
new int[] {0, 0, 0, 0, -1, 2, 4, 3, 0},
new int[] {0, 0, 0, 0, -1, 2, 2, 3, 0},
new int[] {0, 0, 0, 0, -1, 2, 0, 3, 0},
new int[] {0, 0, 0, 0, -1, 2, -2, 3, 0},
new int[] {0, 0, 0, 0, -1, 2, -4, 3, 0},
};
}
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
return this.standardOpenBehavior(world, x, y, z, player, -1); return this.standardOpenBehavior(world, x, y, z, player, -1);

View File

@ -44,7 +44,15 @@ public class MachineExcavator extends BlockDummyable {
public int getHeightOffset() { public int getHeightOffset() {
return 3; return 3;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {3, 0, 3, 3, 3, 3},
new int[] {-1, 3, 3, -2, 3, -2},
new int[] {-1, 3, 3, -2, -2, 3},
new int[] {-1, 3, -2, 3, 3, 3},
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
x += dir.offsetX * o; x += dir.offsetX * o;

View File

@ -32,7 +32,17 @@ public class MachineExposureChamber extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 2; return 2;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
getDimensions(),
new int[] {3, 0, 0, 0, -3, 8},
new int[] {0, 0, 1, -1, -3, 6, 0, 2, 0},
new int[] {0, 0, -1, 1, -3, 6, 0, 2, 0},
new int[] {3, 0, 1, -1, 0, 1, 0, 0, -7},
new int[] {3, 0, -1, 1, 0, 1, 0, 0, -7},
};
}
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);

View File

@ -46,7 +46,20 @@ public class MachineFrackingTower extends BlockDummyable implements IPersistentI
public int getOffset() { public int getOffset() {
return 0; return 0;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {3, 0, 0, 0, 0, 0},
new int[] {1, 0, 3, 3, 3, 3, 0, 2, 0},
new int[] {-1, 2, 0, 1, 0, 1, -2, 2, -2},
new int[] {-1, 2, 0, 1, 0, 1, 3, 2, -2},
new int[] {-1, 2, 0, 1, 0, 1, -2, 2, 3},
new int[] {-1, 2, 0, 1, 0, 1, 3, 2, 3},
new int[] {10, -4, 2, 2, 2, 2},
new int[] {24, -9, 1, 1, 1, 1},
new int[] {1, 0, -2, 3, 1, 1, 0, 15, 0},
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {

View File

@ -33,7 +33,14 @@ public class MachineICF extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 1; return 1;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {5, 0, 1, 1, 8, 8},
new int[] {1, 1, -1, 2, 8, 8, 0, 3, 0},
new int[] {1, 1, 2, -1, 8, 8, 0, 3, 0},
};
}
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);

View File

@ -47,7 +47,16 @@ public class MachinePumpjack extends BlockDummyable implements IPersistentInfoPr
public int getOffset() { public int getOffset() {
return 0; return 0;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {3, 0, 0, 0, 0, 6},
new int[] {0, 0, -1, 1, -2, 4},
new int[] {0, 0, 1, -1, -1, 5},
new int[] {0, 0, -1, 1, 1, 1, 0, 0, -3},
new int[] {0, 0, 1, -1, 2, 2, 0, 0, -3},
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -0,0 +1,84 @@
package com.hbm.blocks.machine;
import java.util.ArrayList;
import java.util.List;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ILookOverlay;
import com.hbm.items.ISatChip;
import com.hbm.main.NTMSounds;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityMachineSatLink;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
public class MachineSatLink extends BlockDummyable implements ILookOverlay {
public MachineSatLink() {
super(Material.iron);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityMachineSatLink();
if(meta >= 6) return new TileEntityProxyCombo();
return null;
}
@Override public int[] getDimensions() { return new int[] {6, 0, 1, 0, 1, 0}; }
@Override public int getOffset() { return 0; }
@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 && !player.isSneaking()) {
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ISatChip) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return false;
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(te instanceof TileEntityMachineSatLink)) return false;
TileEntityMachineSatLink link = (TileEntityMachineSatLink) te;
link.freq = ISatChip.getFreqS(player.getHeldItem());
player.addChatComponentMessage(new ChatComponentText("Set frequency to " + link.freq).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
world.playSoundAtEntity(player, NTMSounds.TECH_BLEEP, 1F, 1F);
return true;
}
return false;
} else {
return true;
}
}
@Override
public void printHook(Pre event, World world, int x, int y, int z) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return;
TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(te instanceof TileEntityMachineSatLink)) return;
TileEntityMachineSatLink link = (TileEntityMachineSatLink) te;
List<String> text = new ArrayList();
text.add("Freq: " + link.freq);
text.add("Connected: " + (link.connected ? (EnumChatFormatting.GREEN + "Yes") : (EnumChatFormatting.RED + "No")));
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
}
}

View File

@ -47,7 +47,13 @@ public class MachineStrandCaster extends BlockDummyable implements ICrucibleAcce
public int getOffset() { public int getOffset() {
return 0; return 0;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 0, 0, 6, 0, 1, 0 },
new int[] { 2, 0, 1, 0, 1, 0 }
};
}
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
if(meta >= 12) return new TileEntityMachineStrandCaster(); if(meta >= 12) return new TileEntityMachineStrandCaster();

View File

@ -78,6 +78,6 @@ public class MachineTurbofan extends BlockDummyable implements ITooltipProvider
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:"); list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:");
list.add(EnumChatFormatting.YELLOW + "-" + FuelGrade.AERO.getGrade() + ": " + EnumChatFormatting.RED + "100%"); list.add(EnumChatFormatting.YELLOW + "-" + FuelGrade.AERO.getLocalizedName() + ": " + EnumChatFormatting.RED + "100%");
} }
} }

View File

@ -62,7 +62,15 @@ public class ReactorZirnox extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 2; return 2;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {1, 0, 2, 2, 2, 2,},
new int[] {4, -2, 1, 1, 1, 1},
new int[] {4, -2, 0, 0, 2, -2},
new int[] {4, -2, 0, 0, -2, 2}
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -168,7 +168,18 @@ public class SoyuzLauncher extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 0; return 0;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 0, 1, 6, 6, 6, 6 },
new int[] { -2, 4, -3, 6, -3, 6 },
new int[] { -2, 4, 6, -3, -3, 6 },
new int[] { -2, 4, 6, -3, 6, -3 },
new int[] { -2, 4, -3, 6, 6, -3 },
new int[] { 0, 4, 1, 1, -6, 8 },
new int[] { 0, 4, 2, 2, 9, -5 },
};
}
private final Random field_149933_a = new Random(); private final Random field_149933_a = new Random();
private static boolean keepInventory; private static boolean keepInventory;

View File

@ -53,7 +53,16 @@ public class Watz extends BlockDummyable {
public int getOffset() { public int getOffset() {
return 3; return 3;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {2, 0, 3, 3, 1, 1},
new int[] {2, 0, 2, 2, 2, -2},
new int[] {2, 0, 2, 2, -2, 2},
new int[] {2, 0, 1, 1, 3, -3},
new int[] {2, 0, 1, 1, -3, 3},
};
}
@Override @Override
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -43,9 +43,8 @@ public class BlockPASource extends BlockDummyable implements ITooltipProvider {
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
this.makeExtra(world, x + rot.offsetX * 4, y, z + rot.offsetZ * 4); this.makeExtra(world, x + rot.offsetX * 4, y, z + rot.offsetZ * 4);
this.makeExtra(world, x + dir.offsetX, y, z + dir.offsetZ); this.makeExtra(world, x + dir.offsetX, y, z + dir.offsetZ);
this.makeExtra(world, x + dir.offsetX + rot.offsetX * 2, y, z + dir.offsetZ + rot.offsetZ * 2); this.makeExtra(world, x + dir.offsetX + rot.offsetX * 2, y, z + dir.offsetZ + rot.offsetZ * 2);
@ -53,6 +52,10 @@ public class BlockPASource extends BlockDummyable implements ITooltipProvider {
this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ);
this.makeExtra(world, x - dir.offsetX + rot.offsetX * 2, y, z - dir.offsetZ + rot.offsetZ * 2); this.makeExtra(world, x - dir.offsetX + rot.offsetX * 2, y, z - dir.offsetZ + rot.offsetZ * 2);
this.makeExtra(world, x - dir.offsetX - rot.offsetX * 2, y, z - dir.offsetZ - rot.offsetZ * 2); this.makeExtra(world, x - dir.offsetX - rot.offsetX * 2, y, z - dir.offsetZ - rot.offsetZ * 2);
this.makeExtra(world, x, y - 1, z);
this.makeExtra(world, x + rot.offsetX * 2, y - 1, z + rot.offsetZ * 2);
this.makeExtra(world, x - rot.offsetX * 2, y - 1, z - rot.offsetZ * 2);
} }
@Override @Override

View File

@ -44,6 +44,13 @@ public class MachineFusionBoiler extends BlockDummyable implements ILookOverlay,
return 4; return 4;
} }
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, -4.5, -4.5, 1, -1}
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o); return super.checkRequirement(world, x, y, z, dir, o);

View File

@ -36,6 +36,13 @@ public class MachineFusionBreeder extends BlockDummyable implements ITooltipProv
public int getOffset() { public int getOffset() {
return 2; return 2;
} }
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, -2.5, -2.5, 1, -1}
};
}
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {

View File

@ -35,6 +35,13 @@ public class MachineFusionCollector extends BlockDummyable implements ITooltipPr
return 1; return 1;
} }
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, -2.5, -2.5, 1, -1}
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o); return super.checkRequirement(world, x, y, z, dir, o);

View File

@ -34,6 +34,14 @@ public class MachineFusionCoupler extends BlockDummyable implements ITooltipProv
return 0; return 0;
} }
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, 1, -1, 1.5, 1.5},
{1.5, 3.5, 1, -1, -1.5, -1.5}
};
}
@Override @Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
addStandardInfo(stack, player, list, ext); addStandardInfo(stack, player, list, ext);

View File

@ -35,7 +35,21 @@ public class MachineFusionKlystron extends BlockDummyable implements ITooltipPro
@Override public int[] getDimensions() { return new int[] { 3, 0, 4, 3, 2, 2 }; } @Override public int[] getDimensions() { return new int[] { 3, 0, 4, 3, 2, 2 }; }
@Override public int getOffset() { return 3; } @Override public int getOffset() { return 3; }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 3, 0, 4, 3, 2, 2 },
new int[] { 4, -3, 4, 3, 1, 1 },
};
}
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, -4.5, -4.5, 1, -1}
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -28,7 +28,21 @@ public class MachineFusionKlystronCreative extends BlockDummyable implements ITo
@Override public int[] getDimensions() { return new int[] { 3, 0, 4, 3, 2, 2 }; } @Override public int[] getDimensions() { return new int[] { 3, 0, 4, 3, 2, 2 }; }
@Override public int getOffset() { return 3; } @Override public int getOffset() { return 3; }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 3, 0, 4, 3, 2, 2 },
new int[] { 4, -3, 4, 3, 1, 1 },
};
}
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, -4.5, -4.5, 1, -1}
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -44,7 +44,26 @@ public class MachineFusionMHDT extends BlockDummyable implements ILookOverlay, I
public int getOffset() { public int getOffset() {
return 7; return 7;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 2, 0, 6, 7, 2, 2 },
new int[] { 3, -2, 6, 2, 1, 1 },
new int[] { 3, -2, -6, 7, 1, 1 },
new int[] { 3, -2, -3, 5, 2, 2 },
new int[] { 4, -3, -3, 5, 1, 1 },
new int[] { 1, 0, 0, 1, 3, 3, 3, 0, 0 },
};
}
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, -6.5, -6.5, 1, -1}
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return super.checkRequirement(world, x, y, z, dir, o) && return super.checkRequirement(world, x, y, z, dir, o) &&

View File

@ -31,6 +31,29 @@ public class MachineFusionPlasmaForge extends BlockDummyable {
@Override public int[] getDimensions() { return new int[] { 2, 0, 2, 2, 5, 5 }; } @Override public int[] getDimensions() { return new int[] { 2, 0, 2, 2, 5, 5 }; }
@Override public int getOffset() { return 5; } @Override public int getOffset() { return 5; }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 2, 0, 2, 2, 5, 5 },
new int[] { 4, -3, 0, 0, 4, 4 },
new int[] { 2, 0, 3, -2, 4, 4 },
new int[] { 2, 0, -2, 3, 4, 4 },
new int[] { 2, 0, 4, -3, 3, 3 },
new int[] { 2, 0, -3, 4, 3, 3 },
new int[] { 2, 0, 5, -4, 2, 2 },
new int[] { 2, 0, -4, 5, 2, 2 },
new int[] { 3, -2, 1, 1, 5, 5 }
};
}
@Override
public double[][] getAABBExtras() {
return new double[][] {
{1.5, 3.5, 1, -1, 5.5, 5.5},
{1.5, 3.5, 1, -1, -5.5, -5.5}
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {

View File

@ -97,6 +97,27 @@ public class MachineFusionTorus extends BlockDummyable implements ITooltipProvid
public int getOffset() { public int getOffset() {
return 7; return 7;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] { 4, 0, 7, 7, 3, 3 },
new int[] { 4, 0, 6, 6, 4, 4 },
new int[] { 4, 0, 5, 5, 5, 5 },
new int[] { 4, 0, 4, 4, 6, 6 },
new int[] { 4, 0, 3, 3, 7, 7 },
};
}
@Override
public double[][] getAABBExtras() {
return new double[][] {
{3.5, 1.5, 7.5, 7.5, 1, -1},
{3.5, 1.5, -7.5, -7.5, 1, -1},
{3.5, 1.5, 1, -1, 7.5, 7.5},
{3.5, 1.5, 1, -1, -7.5, -7.5},
};
}
@Override @Override
public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { public boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {

View File

@ -98,19 +98,21 @@ public class BlockPile extends BlockContainer implements IBlockCT, IToolable, IL
@Override @Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) { public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
TileEntity tile = world.getTileEntity(x, y, z); if(!TileEntityPileCore.meltingDown) {
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityPileBaseMK2) {
TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) tile;
world.removeTileEntity(x, y, z);
if(pile.coreY >= 0) world.setBlock(x, y, z, ModBlocks.pile_brick);
TileEntityPileCore core = pile.getCore(); if(tile instanceof TileEntityPileBaseMK2) {
if(core != null && !core.isInvalid()) core.destroy(); TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) tile;
world.removeTileEntity(x, y, z);
} else { if(pile.coreY >= 0) world.setBlock(x, y, z, ModBlocks.pile_brick);
world.removeTileEntity(x, y, z);
world.setBlock(x, y, z, ModBlocks.pile_brick); TileEntityPileCore core = pile.getCore();
if(core != null && !core.isInvalid()) core.destroy();
} else {
world.removeTileEntity(x, y, z);
world.setBlock(x, y, z, ModBlocks.pile_brick);
}
} }
super.breakBlock(world, x, y, z, block, meta); super.breakBlock(world, x, y, z, block, meta);
} }
@ -151,6 +153,15 @@ public class BlockPile extends BlockContainer implements IBlockCT, IToolable, IL
if(meta == META_AIR_IN) text.add("Air Inlet"); if(meta == META_AIR_IN) text.add("Air Inlet");
if(meta == META_AIR_OUT) text.add("Air Outlet"); if(meta == META_AIR_OUT) text.add("Air Outlet");
if(meta == META_CONTROL) text.add("Control Rod Channel"); if(meta == META_CONTROL) text.add("Control Rod Channel");
if(meta == META_CORE) {
TileEntity tile = world.getTileEntity(x, y, z);
if(tile instanceof TileEntityPileCore) {
TileEntityPileCore core = (TileEntityPileCore) tile;
text.add("Max Temp: " + (int) Math.round(core.highestHeat) + " / " + core.MAX_HEAT + "°C");
}
}
if(!text.isEmpty()) ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); if(!text.isEmpty()) ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
} }
} }

View File

@ -1,6 +1,7 @@
package com.hbm.blocks.machine.pile; package com.hbm.blocks.machine.pile;
import com.hbm.blocks.ModBlocks; import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockFlammable;
import com.hbm.blocks.machine.MachinePWRController; import com.hbm.blocks.machine.MachinePWRController;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.pile.TileEntityPileBaseMK2; import com.hbm.tileentity.machine.pile.TileEntityPileBaseMK2;
@ -10,7 +11,6 @@ import com.hbm.tileentity.machine.pile.TileEntityPileCore.PileOrientation;
import api.hbm.block.IToolable; import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -18,13 +18,13 @@ import net.minecraft.util.IIcon;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class BlockPileBrick extends Block implements IToolable { public class BlockPileBrick extends BlockFlammable implements IToolable {
@SideOnly(Side.CLIENT) protected IIcon iconTop; @SideOnly(Side.CLIENT) protected IIcon iconTop;
@SideOnly(Side.CLIENT) protected IIcon iconSide; @SideOnly(Side.CLIENT) protected IIcon iconSide;
public BlockPileBrick() { public BlockPileBrick() {
super(Material.rock); super(Material.rock, 30, 5);
} }
@Override @Override
@ -127,7 +127,7 @@ public class BlockPileBrick extends Block implements IToolable {
world.setBlock(iX, iY, iZ, ModBlocks.pile_block, BlockPile.META_CORE, 3); world.setBlock(iX, iY, iZ, ModBlocks.pile_block, BlockPile.META_CORE, 3);
TileEntityPileCore core = (TileEntityPileCore) world.getTileEntity(iX, iY, iZ); TileEntityPileCore core = (TileEntityPileCore) world.getTileEntity(iX, iY, iZ);
core.orientation = PileOrientation.getOrientation(dir); core.orientation = PileOrientation.getOrientation(dir);
core.setupSize(posHeight + negHeight + 1, left + right + 1, depth + 1); core.setupSize(posHeight, negHeight, left, right, depth + 1);
} else { } else {
int edgeCount = 0; int edgeCount = 0;
if(h == -negHeight || h == posHeight) edgeCount++; if(h == -negHeight || h == posHeight) edgeCount++;

View File

@ -6,14 +6,18 @@ import java.util.List;
import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IBlockMulti;
import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ITooltipProvider;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.NTMSounds; import com.hbm.main.NTMSounds;
import com.hbm.tileentity.machine.pile.TileEntityPileControl; import com.hbm.tileentity.machine.pile.TileEntityPileControl;
import com.hbm.tileentity.machine.pile.TileEntityPileCore;
import com.hbm.tileentity.machine.pile.TileEntityPileLoader; import com.hbm.tileentity.machine.pile.TileEntityPileLoader;
import com.hbm.tileentity.machine.pile.TileEntityPileVent; import com.hbm.tileentity.machine.pile.TileEntityPileVent;
import com.hbm.util.i18n.I18nUtil; import com.hbm.util.i18n.I18nUtil;
import api.hbm.block.IToolable;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
@ -28,7 +32,7 @@ import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILookOverlay, ITooltipProvider { public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILookOverlay, ITooltipProvider, IToolable {
public static final int ITEM_META_LOADER = 0; public static final int ITEM_META_LOADER = 0;
public static final int ITEM_META_VENT = 1; public static final int ITEM_META_VENT = 1;
@ -79,6 +83,8 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILoo
@Override @Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(player.isSneaking()) return false;
int meta = world.getBlockMetadata(x, y, z); int meta = world.getBlockMetadata(x, y, z);
meta -= meta % 4; meta -= meta % 4;
@ -151,20 +157,24 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILoo
List<String> text = new ArrayList(); List<String> text = new ArrayList();
TileEntity tile = world.getTileEntity(x, y, z); TileEntity tile = world.getTileEntity(x, y, z);
/*if(tile instanceof TileEntityPileDeviceBase) {
TileEntityPileDeviceBase device = (TileEntityPileDeviceBase) tile;
text.add("#" + (device.chanNum + 1));
}*/
if(tile instanceof TileEntityPileLoader) { if(tile instanceof TileEntityPileLoader) {
TileEntityPileLoader device = (TileEntityPileLoader) tile; TileEntityPileLoader device = (TileEntityPileLoader) tile;
text.add("Index: " + device.chanNum); text.add("Temp: " + (int) Math.round(device.channelTemp) + " / " + TileEntityPileCore.MAX_HEAT + "°C");
if(device.syncStack != null) text.add("Loading: " + device.syncStack.getDisplayName()); if(device.syncStack != null) text.add("Loading: " + device.syncStack.getDisplayName());
}
if(device.channelStack != null) {
if(tile instanceof TileEntityPileVent) { text.add("Last rod: " + device.channelStack.getDisplayName());
TileEntityPileVent device = (TileEntityPileVent) tile; if(device.channelDepletion > 0) text.add("Depletion: " + (int) Math.round(device.channelDepletion) + "%");
text.add("Index: " + device.chanNum); }
} }
if(tile instanceof TileEntityPileControl) { if(tile instanceof TileEntityPileControl) {
TileEntityPileControl device = (TileEntityPileControl) tile; TileEntityPileControl device = (TileEntityPileControl) tile;
text.add("Index: " + device.chanNum);
text.add("Extraction level: " + (int) + (device.level * 100) + "%"); text.add("Extraction level: " + (int) + (device.level * 100) + "%");
} }
@ -184,4 +194,27 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti, ILoo
if(meta == ITEM_META_CONTROL) return this.getUnlocalizedName() + ".control"; if(meta == ITEM_META_CONTROL) return this.getUnlocalizedName() + ".control";
return this.getUnlocalizedName(); return this.getUnlocalizedName();
} }
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
int meta = world.getBlockMetadata(x, y, z);
if(meta >= BLOCK_META_CONTROL) {
y -= 1;
side = 1;
} else {
ForgeDirection dir = ForgeDirection.getOrientation(meta % 4 + 2);
x -= dir.offsetX;
z -= dir.offsetZ;
side = dir.ordinal();
}
Block b = world.getBlock(x, y, z);
if(b == ModBlocks.pile_block) {
return ((BlockPile) b).onScrew(world, player, x, y, z, side, fX, fY, fZ, tool);
}
return false;
}
} }

View File

@ -107,7 +107,13 @@ public class RBMKConsole extends BlockDummyable implements IToolable {
public int getOffset() { public int getOffset() {
return 1; return 1;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {3, 0, 0, 0, 2, 2},
new int[] {0, 0, 0, 1, 2, 2},
};
}
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);

View File

@ -38,7 +38,13 @@ public class RBMKCraneConsole extends BlockDummyable implements IToolable {
public int getOffset() { public int getOffset() {
return 1; return 1;
} }
@Override
public int[][] getAllDimensions() {
return new int[][] {
new int[] {1, 0, 0, 0, 1, 1},
new int[] {0, 0, 0, 1, 1, 1},
};
}
@Override @Override
public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
super.fillSpace(world, x, y, z, dir, o); super.fillSpace(world, x, y, z, dir, o);

View File

@ -1,6 +1,10 @@
package com.hbm.blocks.network; package com.hbm.blocks.network;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ITooltipProvider;
import com.hbm.tileentity.network.TileEntityPylonBase;
import com.hbm.tileentity.network.TileEntityPylon; import com.hbm.tileentity.network.TileEntityPylon;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -10,15 +14,17 @@ import net.minecraft.world.World;
import java.util.List; import java.util.List;
public class PylonRedWire extends PylonBase { public class PylonRedWire extends BlockDummyable implements ITooltipProvider {
public PylonRedWire(Material material) { public PylonRedWire(Material mat) {
super(material); super(mat);
} }
@Override @Override
public TileEntity createNewTileEntity(World world, int meta) { public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityPylon();
if(meta >= 12) return new TileEntityPylon();
return null;
} }
@Override @Override
@ -26,4 +32,34 @@ public class PylonRedWire extends PylonBase {
list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single"); list.add(EnumChatFormatting.GOLD + "Connection Type: " + EnumChatFormatting.YELLOW + "Single");
list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "25m"); list.add(EnumChatFormatting.GOLD + "Connection Range: " + EnumChatFormatting.YELLOW + "25m");
} }
@Override
public int[] getDimensions() {
return new int[] {4, 0, 0, 0, 0, 0};
}
@Override
public int getOffset() {
return 0;
}
@Override
public void breakBlock(World world, int x, int y, int z, Block b, int m) {
TileEntity te = world.getTileEntity(x, y, z);
if(te instanceof TileEntityPylonBase) ((TileEntityPylonBase)te).disconnectAll();
super.breakBlock(world, x, y, z, b, m);
}
@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()) {
int[] pos = this.findCore(world, x, y, z);
TileEntityPylonBase te = (TileEntityPylonBase) world.getTileEntity(pos[0], pos[1], pos[2]);
return te.setColor(player.getHeldItem());
} else {
return false;
}
}
} }

View File

@ -50,6 +50,7 @@ public class StructureConfig {
public static int radioSpawnWeight = 30; public static int radioSpawnWeight = 30;
public static int forestChemSpawnWeight = 30; public static int forestChemSpawnWeight = 30;
public static int forestPostSpawnWeight = 30; public static int forestPostSpawnWeight = 30;
public static int towerBaseSpawnWeight = 30;
public static int spireSpawnWeight = 2; public static int spireSpawnWeight = 2;
public static int craneSpawnWeight = 20; public static int craneSpawnWeight = 20;
@ -115,6 +116,7 @@ public class StructureConfig {
oceanNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.38_oceanNullWeight", "Null spawn weight for ocean biomes", 35); oceanNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.38_oceanNullWeight", "Null spawn weight for ocean biomes", 35);
craneSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.39_craneSpawnWeight", "Spawn weight for crane structure.", 20); craneSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.39_craneSpawnWeight", "Spawn weight for crane structure.", 20);
broadcastingTowerSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.40_broadcastingTowerSpawnWeight", "Spawn weight for broadcasting tower structure.", 25); broadcastingTowerSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.40_broadcastingTowerSpawnWeight", "Spawn weight for broadcasting tower structure.", 25);
towerBaseSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.41_towerBaseSpawnWeight", "Spawn weight for tower base.", 30);
structureMinChunks = CommonConfig.setDef(structureMinChunks, 4); structureMinChunks = CommonConfig.setDef(structureMinChunks, 4);

View File

@ -39,6 +39,7 @@ public class FuelHandler implements IFuelHandler {
if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_coke)) return single * 160; if(fuel.getItem() == Item.getItemFromBlock(ModBlocks.block_coke)) return single * 160;
if(fuel.getItem() == ModItems.book_guide) return single; if(fuel.getItem() == ModItems.book_guide) return single;
if(fuel.getItem() == ModItems.coal_infernal) return 4800; if(fuel.getItem() == ModItems.coal_infernal) return 4800;
if(fuel.getItem() == ModItems.coal_eternal) return single * 16;
if(fuel.getItem() == ModItems.crystal_coal) return 6400; if(fuel.getItem() == ModItems.crystal_coal) return 6400;
if(fuel.getItem() == ModItems.powder_sawdust) return single / 2; if(fuel.getItem() == ModItems.powder_sawdust) return single / 2;

View File

@ -128,11 +128,8 @@ public class MultiblockHandlerXR {
public static int[] rotate(int[] dim, ForgeDirection dir) { public static int[] rotate(int[] dim, ForgeDirection dir) {
if(dim == null) if(dim == null) return null;
return null; if(dir == ForgeDirection.SOUTH) return dim;
if(dir == ForgeDirection.SOUTH)
return dim;
if(dir == ForgeDirection.NORTH) { if(dir == ForgeDirection.NORTH) {
// U D N S W E // U D N S W E
@ -151,5 +148,27 @@ public class MultiblockHandlerXR {
return dim; return dim;
} }
public static double[] rotateDouble(double[] dim, ForgeDirection dir) {
if(dim == null) return null;
if(dir == ForgeDirection.SOUTH) return dim;
if(dir == ForgeDirection.NORTH) {
// U D N S W E
return new double[] { dim[0], dim[1], dim[3], dim[2], dim[5], dim[4] };
}
if(dir == ForgeDirection.EAST) {
// U D N S W E
return new double[] { dim[0], dim[1], dim[5], dim[4], dim[2], dim[3] };
}
if(dir == ForgeDirection.WEST) {
// U D N S W E
return new double[] { dim[0], dim[1], dim[4], dim[5], dim[3], dim[2] };
}
return dim;
}
} }

View File

@ -10,68 +10,57 @@ import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class ContainerMachineDiesel extends Container { public class ContainerMachineDiesel extends Container {
private TileEntityMachineDiesel diFurnace; private TileEntityMachineDiesel diFurnace;
public ContainerMachineDiesel(InventoryPlayer invPlayer, TileEntityMachineDiesel tedf) { public ContainerMachineDiesel(InventoryPlayer invPlayer, TileEntityMachineDiesel tedf) {
diFurnace = tedf; diFurnace = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 44, 17)); this.addSlotToContainer(new Slot(tedf, 0, 17, 17));
this.addSlotToContainer(new SlotTakeOnly(tedf, 1, 44, 53)); this.addSlotToContainer(new SlotTakeOnly(tedf, 1, 17, 53));
this.addSlotToContainer(new Slot(tedf, 2, 116, 53)); this.addSlotToContainer(new Slot(tedf, 2, 141, 71));
this.addSlotToContainer(new Slot(tedf, 3, 8, 17)); this.addSlotToContainer(new Slot(tedf, 3, 35, 71));
this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 8, 53));
for(int i = 0; i < 3; i++) {
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, 121 + i * 18));
for(int j = 0; j < 9; j++)
{
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) for(int i = 0; i < 9; i++) {
{ this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 179));
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
} }
} }
@Override @Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
ItemStack var3 = null; ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2); Slot var4 = (Slot) this.inventorySlots.get(par2);
if (var4 != null && var4.getHasStack()) if(var4 != null && var4.getHasStack()) {
{
ItemStack var5 = var4.getStack(); ItemStack var5 = var4.getStack();
var3 = var5.copy(); var3 = var5.copy();
if (par2 <= 4) { if(par2 <= 4) {
if (!this.mergeItemStack(var5, 5, this.inventorySlots.size(), true)) if(!this.mergeItemStack(var5, 5, this.inventorySlots.size(), true)) {
{
return null; return null;
} }
} else if(!this.mergeItemStack(var5, 0, 1, false)) {
if(!this.mergeItemStack(var5, 2, 3, false))
if(!this.mergeItemStack(var5, 4, 5, false))
return null;
} }
else if (!this.mergeItemStack(var5, 0, 1, false))
{ if(var5.stackSize == 0) {
if (!this.mergeItemStack(var5, 2, 3, false))
if (!this.mergeItemStack(var5, 4, 5, false))
return null;
}
if (var5.stackSize == 0)
{
var4.putStack((ItemStack) null); var4.putStack((ItemStack) null);
} } else {
else
{
var4.onSlotChanged(); var4.onSlotChanged();
} }
} }
return var3; return var3;
} }
@Override @Override
public boolean canInteractWith(EntityPlayer player) { public boolean canInteractWith(EntityPlayer player) {

View File

@ -17,21 +17,21 @@ public class ContainerMachineKeyForge extends Container {
diFurnace = tedf; diFurnace = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 44, 35)); this.addSlotToContainer(new Slot(tedf, 0, 44, 36));
this.addSlotToContainer(new Slot(tedf, 1, 80, 35)); this.addSlotToContainer(new Slot(tedf, 1, 80, 36));
this.addSlotToContainer(new Slot(tedf, 2, 116, 35)); this.addSlotToContainer(new Slot(tedf, 2, 116, 36));
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++)
{ {
for(int j = 0; j < 9; j++) for(int j = 0; j < 9; j++)
{ {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) for(int i = 0; i < 9; i++)
{ {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
} }
} }

View File

@ -17,21 +17,21 @@ public class ContainerMachineSatLinker extends Container {
diFurnace = tedf; diFurnace = tedf;
this.addSlotToContainer(new Slot(tedf, 0, 44, 35)); this.addSlotToContainer(new Slot(tedf, 0, 44, 36));
this.addSlotToContainer(new Slot(tedf, 1, 80, 35)); this.addSlotToContainer(new Slot(tedf, 1, 80, 36));
this.addSlotToContainer(new Slot(tedf, 2, 116, 35)); this.addSlotToContainer(new Slot(tedf, 2, 116, 36));
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++)
{ {
for(int j = 0; j < 9; j++) for(int j = 0; j < 9; j++)
{ {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) for(int i = 0; i < 9; i++)
{ {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
} }
} }

View File

@ -18,23 +18,23 @@ public class ContainerSatDock extends Container {
tileSatelliteDock = tesd; tileSatelliteDock = tesd;
//Storage //Storage
this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 62, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 71, 18));
this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 80, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 71 + 18, 18));
this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 98, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 71 + 18 * 2, 18));
this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 116, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 71 + 18 * 3, 18));
this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 134, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 71 + 18 * 4, 18));
this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 62, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 71, 36));
this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 80, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 71 + 18, 36));
this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 98, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 71 + 18 * 2, 36));
this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 116, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 71 + 18 * 3, 36));
this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 134, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 71 + 18 * 4, 36));
this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 62, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 71, 54));
this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 80, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 71 + 18, 54));
this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 98, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 71 + 18 * 2, 54));
this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 116, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 71 + 18 * 3, 54));
this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 134, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 71 + 18 * 4, 54));
//Chip //Chip
this.addSlotToContainer(new Slot(tesd, 15, 26, 35) { this.addSlotToContainer(new Slot(tesd, 15, 26, 36) {
@Override @Override
public boolean isItemValid(ItemStack stack) { public boolean isItemValid(ItemStack stack) {
return stack.getItem() instanceof ItemSatChip; return stack.getItem() instanceof ItemSatChip;
@ -43,12 +43,12 @@ public class ContainerSatDock extends Container {
for(int i = 0; i < 3; i++) { for(int i = 0; i < 3; i++) {
for(int j = 0; j < 9; j++) { for(int j = 0; j < 9; j++) {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) { for(int i = 0; i < 9; i++) {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
} }
} }

View File

@ -19,23 +19,23 @@ public class ContainerSoyuzCapsule extends Container {
{ {
for(int j = 0; j < 6; j++) for(int j = 0; j < 6; j++)
{ {
this.addSlotToContainer(new Slot(tedf, j + i * 6, 8 + j * 18 + 18 * 2, 17 + i * 18)); this.addSlotToContainer(new Slot(tedf, j + i * 6, 26 + j * 18 + 18 * 2, 18 + i * 18));
} }
} }
this.addSlotToContainer(new Slot(tedf, 18, 8, 35)); this.addSlotToContainer(new Slot(tedf, 18, 17, 36));
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++)
{ {
for(int j = 0; j < 9; j++) for(int j = 0; j < 9; j++)
{ {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) for(int i = 0; i < 9; i++)
{ {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
} }
} }

View File

@ -17,29 +17,29 @@ public class ContainerSoyuzLauncher extends Container {
nukeBoy = tedf; nukeBoy = tedf;
//Soyuz //Soyuz
this.addSlotToContainer(new Slot(tedf, 0, 62, 18)); this.addSlotToContainer(new Slot(tedf, 0, 98, 80));
//Designator //Designator
this.addSlotToContainer(new Slot(tedf, 1, 62, 36)); this.addSlotToContainer(new Slot(tedf, 1, 80, 80));
//Satellite //Satellite
this.addSlotToContainer(new Slot(tedf, 2, 116, 18)); this.addSlotToContainer(new Slot(tedf, 2, 98, 26));
//Landing module //Landing module
this.addSlotToContainer(new Slot(tedf, 3, 116, 36)); this.addSlotToContainer(new Slot(tedf, 3, 80, 26));
//Kerosene IN //Kerosene IN
this.addSlotToContainer(new Slot(tedf, 4, 8, 90)); this.addSlotToContainer(new Slot(tedf, 4, 152, 98));
//Kerosene OUT //Kerosene OUT
this.addSlotToContainer(new Slot(tedf, 5, 8, 108)); this.addSlotToContainer(new Slot(tedf, 5, 152, 116));
//Peroxide IN //Oxyden IN
this.addSlotToContainer(new Slot(tedf, 6, 26, 90)); this.addSlotToContainer(new Slot(tedf, 6, 170, 98));
//Peroxide OUT //Oxyden OUT
this.addSlotToContainer(new Slot(tedf, 7, 26, 108)); this.addSlotToContainer(new Slot(tedf, 7, 170, 116));
//Battery //Battery
this.addSlotToContainer(new Slot(tedf, 8, 44, 108)); this.addSlotToContainer(new Slot(tedf, 8, 134, 98));
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++)
{ {
for(int j = 0; j < 6; j++) for(int j = 0; j < 6; j++)
{ {
this.addSlotToContainer(new Slot(tedf, j + i * 6 + 9, 62 + j * 18, 72 + i * 18)); this.addSlotToContainer(new Slot(tedf, j + i * 6 + 9, 44 - i * 18, 26 + j * 18));
} }
} }
@ -47,13 +47,13 @@ public class ContainerSoyuzLauncher extends Container {
{ {
for(int j = 0; j < 9; j++) for(int j = 0; j < 9; j++)
{ {
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56)); this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 17 + j * 18, 162 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) for(int i = 0; i < 9; i++)
{ {
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56)); this.addSlotToContainer(new Slot(invPlayer, i, 17 + i * 18, 220));
} }
} }
@ -68,8 +68,8 @@ public class ContainerSoyuzLauncher extends Container {
ItemStack var5 = var4.getStack(); ItemStack var5 = var4.getStack();
var3 = var5.copy(); var3 = var5.copy();
if (par2 <= 27) { if (par2 < 27) {
if (!this.mergeItemStack(var5, 9, this.inventorySlots.size(), true)) if (!this.mergeItemStack(var5, 27, this.inventorySlots.size(), true))
{ {
return null; return null;
} }

View File

@ -194,7 +194,7 @@ public class Fluids {
public static FluidType CONCRETE; public static FluidType CONCRETE;
public static FluidType DHC; public static FluidType DHC;
/* Lagacy names for compatibility purposes */ /* Legacy names for compatibility purposes */
@Deprecated public static FluidType ACID; //JAOPCA uses this, apparently @Deprecated public static FluidType ACID; //JAOPCA uses this, apparently
public static final HashBiMap<String, FluidType> renameMapping = HashBiMap.create(); public static final HashBiMap<String, FluidType> renameMapping = HashBiMap.create();

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
@ -25,11 +26,11 @@ public class FT_Combustible extends FluidTrait {
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
super.addInfo(info); super.addInfo(info);
info.add(EnumChatFormatting.GOLD + "[Combustible]"); info.add(EnumChatFormatting.GOLD + "[" + I18nUtil.resolveKey("hbmfluid.trait.combustible") + "]");
if(combustionEnergy > 0) { if(combustionEnergy > 0) {
info.add(EnumChatFormatting.GOLD + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(combustionEnergy) + "HE " + EnumChatFormatting.GOLD + "per bucket"); info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("hbmfluid.trait.provides") + " " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(combustionEnergy) + "HE " + EnumChatFormatting.GOLD + I18nUtil.resolveKey("hbmfluid.trait.perBucket"));
info.add(EnumChatFormatting.GOLD + "Fuel grade: " + EnumChatFormatting.RED + this.fuelGrade.getGrade()); info.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("hbmfluid.trait.fuelGrade") + ": " + EnumChatFormatting.RED + this.fuelGrade.getLocalizedName());
} }
} }
@ -42,11 +43,11 @@ public class FT_Combustible extends FluidTrait {
} }
public static enum FuelGrade { public static enum FuelGrade {
LOW("Low"), //heating and industrial oil < star engine, iGen LOW("low"), //heating and industrial oil < star engine, iGen
MEDIUM("Medium"), //petroil < diesel generator MEDIUM("medium"), //petroil < diesel generator
HIGH("High"), //diesel, gasoline < HP engine HIGH("high"), //diesel, gasoline < HP engine
AERO("Aviation"), //kerosene and other light aviation fuels < turbofan AERO("aviation"), //kerosene and other light aviation fuels < turbofan
GAS("Gaseous"); //fuel gasses like NG, PG and syngas < gas turbine GAS("gaseous"); //fuel gasses like NG, PG and syngas < gas turbine
private String grade; private String grade;
@ -54,8 +55,8 @@ public class FT_Combustible extends FluidTrait {
this.grade = grade; this.grade = grade;
} }
public String getGrade() { public String getLocalizedName() {
return this.grade; return I18nUtil.resolveKey("hbmfluid.trait.fuel." + this.grade);
} }
} }

View File

@ -9,6 +9,7 @@ import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
@ -42,26 +43,30 @@ public class FT_Coolable extends FluidTrait {
@Override @Override
public void addInfoHidden(List<String> info) { public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.RED + "Thermal capacity: " + heatEnergy + " TU per " + amountReq + "mB"); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hbmfluid.trait.thermalCapacity") + ": " + heatEnergy + " " + I18nUtil.resolveKey("hbmfluid.trait.perTU") + " " + amountReq + "mB");
for(CoolingType type : CoolingType.values()) { for(CoolingType type : CoolingType.values()) {
double eff = getEfficiency(type); double eff = getEfficiency(type);
if(eff > 0) { if(eff > 0) {
info.add(EnumChatFormatting.YELLOW + "[" + type.name + "] " + EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); info.add(EnumChatFormatting.YELLOW + "[" + type.getLocalizedName() + "] " + EnumChatFormatting.AQUA + I18nUtil.resolveKey("hbmfluid.trait.efficiency") + ": " + ((int) (eff * 100D)) + "%");
} }
} }
} }
public static enum CoolingType { public static enum CoolingType {
TURBINE("Turbine Steam"), TURBINE("steam"),
HEATEXCHANGER("Coolable"); HEATEXCHANGER("coolable");
public String name; private String name;
private CoolingType(String name) { private CoolingType(String name) {
this.name = name; this.name = name;
} }
public String getLocalizedName() {
return I18nUtil.resolveKey("hbmfluid.trait." + this.name);
}
} }
@Override @Override

View File

@ -6,6 +6,8 @@ import java.util.List;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
public class FT_Corrosive extends FluidTrait { public class FT_Corrosive extends FluidTrait {
@ -31,9 +33,9 @@ public class FT_Corrosive extends FluidTrait {
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
if(isHighlyCorrosive()) if(isHighlyCorrosive())
info.add(EnumChatFormatting.GOLD + "[Strongly Corrosive]"); info.add(EnumChatFormatting.GOLD + "[" + I18nUtil.resolveKey("hbmfluid.trait.corrosiveStrong") + "]");
else else
info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); info.add(EnumChatFormatting.YELLOW + "[" + I18nUtil.resolveKey("hbmfluid.trait.corrosive") + "]");
} }
@Override @Override

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
@ -28,10 +29,10 @@ public class FT_Flammable extends FluidTrait {
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
super.addInfo(info); super.addInfo(info);
info.add(EnumChatFormatting.YELLOW + "[Flammable]"); info.add(EnumChatFormatting.YELLOW + "[" + I18nUtil.resolveKey("hbmfluid.trait.flammable") + "]");
if(energy > 0) if(energy > 0)
info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket"); info.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hbmfluid.trait.provides") + " " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hbmfluid.trait.perBucket"));
} }
@Override @Override

View File

@ -5,6 +5,7 @@ import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
@ -42,13 +43,13 @@ public class FT_Heatable extends FluidTrait {
@Override @Override
public void addInfoHidden(List<String> info) { public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.RED + "Thermal capacity: " + this.getFirstStep().heatReq + " TU per " + this.getFirstStep().amountReq + "mB"); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hbmfluid.trait.thermalCapacity") + ": " + this.getFirstStep().heatReq + " " + I18nUtil.resolveKey("hbmfluid.trait.perTU") + " " + this.getFirstStep().amountReq + "mB");
for(HeatingType type : HeatingType.values()) { for(HeatingType type : HeatingType.values()) {
double eff = getEfficiency(type); double eff = getEfficiency(type);
if(eff > 0) { if(eff > 0) {
info.add(EnumChatFormatting.YELLOW + "[" + type.name + "] " + EnumChatFormatting.AQUA + "Efficiency: " + ((int) (eff * 100D)) + "%"); info.add(EnumChatFormatting.YELLOW + "[" + type.getLocalizedName() + "] " + EnumChatFormatting.AQUA + I18nUtil.resolveKey("hbmfluid.trait.efficiency") + ": " + ((int) (eff * 100D)) + "%");
} }
} }
} }
@ -68,17 +69,21 @@ public class FT_Heatable extends FluidTrait {
} }
public static enum HeatingType { public static enum HeatingType {
BOILER("Boilable"), BOILER("boilable"),
HEATEXCHANGER("Heatable"), HEATEXCHANGER("heatable"),
PWR("PWR Coolant"), PWR("coolantPWR"),
ICF("ICF Coolant"), ICF("coolantICF"),
PA("Particle Accelerator Coolant"); PA("coolantPA");
public String name; private String name;
private HeatingType(String name) { private HeatingType(String name) {
this.name = name; this.name = name;
} }
public String getLocalizedName() {
return I18nUtil.resolveKey("hbmfluid.trait." + this.name);
}
} }
@Override @Override

View File

@ -6,6 +6,8 @@ import java.util.List;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
public class FT_PWRModerator extends FluidTrait { public class FT_PWRModerator extends FluidTrait {
@ -22,13 +24,13 @@ public class FT_PWRModerator extends FluidTrait {
@Override @Override
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[PWR Flux Multiplier]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.pwrFluxMultiplier") + "]");
} }
@Override @Override
public void addInfoHidden(List<String> info) { public void addInfoHidden(List<String> info) {
int mult = (int) (multiplier * 100 - 100); int mult = (int) (multiplier * 100 - 100);
info.add(EnumChatFormatting.BLUE + "Core flux " + (mult >= 0 ? "+" : "") + mult + "%"); info.add(EnumChatFormatting.BLUE + I18nUtil.resolveKey("hbmfluid.trait.pwrFluxCore") + " " + (mult >= 0 ? "+" : "") + mult + "%");
} }
@Override @Override

View File

@ -4,6 +4,7 @@ import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import com.hbm.util.i18n.I18nUtil;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
@ -25,9 +26,9 @@ public class FT_Pheromone extends FluidTrait{
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
if(type == 1) { if(type == 1) {
info.add(EnumChatFormatting.AQUA + "[Glyphid Pheromones]"); info.add(EnumChatFormatting.AQUA + "[" + I18nUtil.resolveKey("hbmfluid.trait.glyphidPheromones") + "]");
} else { } else {
info.add(EnumChatFormatting.BLUE + "[Modified Pheromones]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.modifiedPheromones") + "]");
} }
} }

View File

@ -4,6 +4,7 @@ import java.io.IOException;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Locale;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
@ -11,9 +12,11 @@ import com.hbm.handler.pollution.PollutionHandler;
import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.pollution.PollutionHandler.PollutionType;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.util.StatCollector;
public class FT_Polluting extends FluidTrait { public class FT_Polluting extends FluidTrait {
@ -33,20 +36,20 @@ public class FT_Polluting extends FluidTrait {
@Override @Override
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
info.add(EnumChatFormatting.GOLD + "[Polluting]"); info.add(EnumChatFormatting.GOLD + "[" + I18nUtil.resolveKey("hbmfluid.trait.polluting") + "]");
} }
@Override @Override
public void addInfoHidden(List<String> info) { public void addInfoHidden(List<String> info) {
if(!this.releaseMap.isEmpty()) { if(!this.releaseMap.isEmpty()) {
info.add(EnumChatFormatting.GREEN + "When spilled:"); info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("hbmfluid.trait.spilled") + ":");
for(Entry<PollutionType, Float> entry : releaseMap.entrySet()) info.add(EnumChatFormatting.GREEN + " - " + entry.getValue() + " " + entry.getKey() + " per mB"); for(Entry<PollutionType, Float> entry : releaseMap.entrySet()) info.add(EnumChatFormatting.GREEN + " - " + entry.getValue() + " " + StatCollector.translateToLocal("pollution.trait." + entry.getKey().name().toLowerCase(Locale.US)) + " " + I18nUtil.resolveKey("hbmfluid.trait.perMB"));
} }
if(!this.burnMap.isEmpty()) { if(!this.burnMap.isEmpty()) {
info.add(EnumChatFormatting.RED + "When burned:"); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hbmfluid.trait.burned") + ":");
for(Entry<PollutionType, Float> entry : burnMap.entrySet()) info.add(EnumChatFormatting.RED + " - " + entry.getValue() + " " + entry.getKey() + " per mB"); for(Entry<PollutionType, Float> entry : burnMap.entrySet()) info.add(EnumChatFormatting.RED + " - " + entry.getValue() + " " + StatCollector.translateToLocal("pollution.trait." + entry.getKey().name().toLowerCase(Locale.US)) + " " + I18nUtil.resolveKey("hbmfluid.trait.perMB"));
} }
} }

View File

@ -31,7 +31,7 @@ public class FT_Toxin extends FluidTrait {
@Override @Override
public void addInfoHidden(List<String> info) { public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.LIGHT_PURPLE + "[Toxin]"); info.add(EnumChatFormatting.LIGHT_PURPLE + "[" + I18nUtil.resolveKey("hbmfluid.trait.toxin") + "]");
for(ToxinEntry entry : entries) { for(ToxinEntry entry : entries) {
entry.addInfo(info); entry.addInfo(info);
@ -101,7 +101,7 @@ public class FT_Toxin extends FluidTrait {
@Override @Override
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" : "") + ": " + EnumChatFormatting.YELLOW + String.format(Locale.US, "%,.1f", amount * 20 / delay) + " DPS"); info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (" + I18nUtil.resolveKey("hbmfluid.trait.hazmat") + ")" : "") + ": " + EnumChatFormatting.YELLOW + String.format(Locale.US, "%,.1f", amount * 20 / delay) + " " + I18nUtil.resolveKey("hbmfluid.trait.perDamage"));
} }
} }
@ -130,7 +130,7 @@ public class FT_Toxin extends FluidTrait {
@Override @Override
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" + EnumChatFormatting.YELLOW : "") + ":"); info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (" + I18nUtil.resolveKey("hbmfluid.trait.hazmat") + ")" + EnumChatFormatting.YELLOW : "") + ":");
for(PotionEffect eff : effects) { for(PotionEffect eff : effects) {
info.add(EnumChatFormatting.YELLOW + " - " + I18nUtil.resolveKey(eff.getEffectName()) + (eff.getAmplifier() > 0 ? " " + StatCollector.translateToLocal("potion.potency." + eff.getAmplifier()).trim() : "") + " " + StringUtils.ticksToElapsedTime(eff.getDuration())); info.add(EnumChatFormatting.YELLOW + " - " + I18nUtil.resolveKey(eff.getEffectName()) + (eff.getAmplifier() > 0 ? " " + StatCollector.translateToLocal("potion.potency." + eff.getAmplifier()).trim() : "") + " " + StringUtils.ticksToElapsedTime(eff.getDuration()));

View File

@ -7,6 +7,7 @@ import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.handler.radiation.ChunkRadiationManager;
import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -32,7 +33,7 @@ public class FT_VentRadiation extends FluidTrait {
@Override @Override
public void addInfo(List<String> info) { public void addInfo(List<String> info) {
info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); info.add(EnumChatFormatting.YELLOW + "[" + I18nUtil.resolveKey("hbmfluid.trait.radioactive") + "]");
} }
@Override @Override

View File

@ -2,37 +2,38 @@ package com.hbm.inventory.fluid.trait;
import java.util.List; import java.util.List;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
public class FluidTraitSimple { public class FluidTraitSimple {
public static class FT_Gaseous extends FluidTrait { public static class FT_Gaseous extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[Gaseous]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.gaseous") + "]");
} }
} }
/** gaseous at room temperature, for cryogenic hydrogen for example */ /** gaseous at room temperature, for cryogenic hydrogen for example */
public static class FT_Gaseous_ART extends FluidTrait { public static class FT_Gaseous_ART extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[Gaseous at Room Temperature]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.gaseousRoom") + "]");
} }
} }
public static class FT_Liquid extends FluidTrait { public static class FT_Liquid extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[Liquid]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.liquid") + "]");
} }
} }
/** to viscous to be sprayed/turned into a mist */ /** to viscous to be sprayed/turned into a mist */
public static class FT_Viscous extends FluidTrait { public static class FT_Viscous extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[Viscous]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.viscous") + "]");
} }
} }
@Deprecated public static class FT_Plasma extends FluidTrait {
public static class FT_Plasma extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]"); info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]");
} }
@ -40,25 +41,25 @@ public class FluidTraitSimple {
public static class FT_Amat extends FluidTrait { public static class FT_Amat extends FluidTrait {
@Override public void addInfo(List<String> info) { @Override public void addInfo(List<String> info) {
info.add(EnumChatFormatting.DARK_RED + "[Antimatter]"); info.add(EnumChatFormatting.DARK_RED + "[" + I18nUtil.resolveKey("hbmfluid.trait.antimatter") + "]");
} }
} }
public static class FT_LeadContainer extends FluidTrait { public static class FT_LeadContainer extends FluidTrait {
@Override public void addInfo(List<String> info) { @Override public void addInfo(List<String> info) {
info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); info.add(EnumChatFormatting.DARK_RED + "[" + I18nUtil.resolveKey("hbmfluid.trait.leadContainer") + "]");
} }
} }
public static class FT_Delicious extends FluidTrait { public static class FT_Delicious extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); info.add(EnumChatFormatting.DARK_GREEN + "[" + I18nUtil.resolveKey("hbmfluid.trait.delicious") + "]");
} }
} }
public static class FT_Unsiphonable extends FluidTrait { public static class FT_Unsiphonable extends FluidTrait {
@Override public void addInfoHidden(List<String> info) { @Override public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.BLUE + "[Ignored by siphon]"); info.add(EnumChatFormatting.BLUE + "[" + I18nUtil.resolveKey("hbmfluid.trait.unsiphonable") + "]");
} }
} }

View File

@ -48,7 +48,7 @@ public class GUICalculator extends GuiScreen {
if (!inputField.textboxKeyTyped(p_73869_1_, p_73869_2_)) if (!inputField.textboxKeyTyped(p_73869_1_, p_73869_2_))
super.keyTyped(p_73869_1_, p_73869_2_); super.keyTyped(p_73869_1_, p_73869_2_);
String input = inputField.getText().replaceAll("[^\\d+\\-*/^!.()\\sA-Za-z]+", ""); String input = inputField.getText().replaceAll("[^\\d+\\-*/%^!.()\\sA-Za-z]+", "");
if (p_73869_1_ == 13 || p_73869_1_ == 10) { // when pressing enter (CR or LF) if (p_73869_1_ == 13 || p_73869_1_ == 10) { // when pressing enter (CR or LF)
if (selectedHist != -1) { if (selectedHist != -1) {

View File

@ -4,16 +4,20 @@ import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerMachineDiesel; import com.hbm.inventory.container.ContainerMachineDiesel;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toserver.NBTControlPacket;
import com.hbm.tileentity.machine.TileEntityMachineDiesel; import com.hbm.tileentity.machine.TileEntityMachineDiesel;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
public class GUIMachineDiesel extends GuiInfoContainer { public class GUIMachineDiesel extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/GUIDiesel.png"); private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_diesel.png");
private TileEntityMachineDiesel diesel; private TileEntityMachineDiesel diesel;
public GUIMachineDiesel(InventoryPlayer invPlayer, TileEntityMachineDiesel tedf) { public GUIMachineDiesel(InventoryPlayer invPlayer, TileEntityMachineDiesel tedf) {
@ -21,35 +25,43 @@ public class GUIMachineDiesel extends GuiInfoContainer {
diesel = tedf; diesel = tedf;
this.xSize = 176; this.xSize = 176;
this.ySize = 166; this.ySize = 203;
} }
@Override @Override
public void drawScreen(int mouseX, int mouseY, float f) { public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f); super.drawScreen(mouseX, mouseY, f);
diesel.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 69 - 52, 16, 52); diesel.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 35, guiTop + 69 - 52, 16, 52);
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 69 - 52, 16, 52, diesel.power, diesel.powerCap); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 141, guiTop + 69 - 52, 16, 52, diesel.power, diesel.powerCap);
String[] text = new String[] { "Fuel consumption rate:", String[] text = new String[] { "Fuel consumption rate:",
" 1 mB/t", " 1 mB/t",
" 20 mB/s", " 20 mB/s",
"(Consumption rate is constant)" }; "(Consumption rate is constant)" };
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 8, guiTop + 36, 16, 16, guiLeft, guiTop + 36 + 16, text);
if(!diesel.hasAcceptableFuel()) { if(!diesel.hasAcceptableFuel()) {
String[] text2 = new String[] { "Error: The currently set fuel type", String[] text2 = new String[] { "Error: The currently set fuel type",
"is not supported by this engine!" }; "is not supported by this engine!" };
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 32, 16, 16, guiLeft - 8, guiTop + 36 + 16 + 32, text2); this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 8, guiTop + 36 + 32, 16, 16, guiLeft, guiTop + 36 + 16 + 32, text2);
}
}
@Override
protected void mouseClicked(int x, int y, int i) {
super.mouseClicked(x, y, i);
if(guiLeft + 89 <= x && guiLeft + 89 + 16 > x && guiTop + 61 < y && guiTop + 61 + 14 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
NBTTagCompound data = new NBTTagCompound();
data.setBoolean("turnOn", true);
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, diesel.xCoord, diesel.yCoord, diesel.zCoord));
} }
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(int i, int j) { protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.diesel.hasCustomInventoryName() ? this.diesel.getInventoryName() : I18n.format(this.diesel.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); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
} }
@ -60,20 +72,18 @@ public class GUIMachineDiesel extends GuiInfoContainer {
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
if(diesel.power > 0) { if(diesel.power > 0) {
int i = (int)diesel.getPowerScaled(52); int i = (int) diesel.getPowerScaled(52);
drawTexturedModalRect(guiLeft + 152, guiTop + 69 - i, 176, 52 - i, 16, i); drawTexturedModalRect(guiLeft + 141, guiTop + 69 - i, 176, 52 - i, 16, i);
} }
if(diesel.tank.getFill() > 0 && diesel.hasAcceptableFuel()) if(diesel.isOn) drawTexturedModalRect(guiLeft + 79, guiTop + 61, 192, 16, 35, 14);
{ if(diesel.wasOn) drawTexturedModalRect(guiLeft + 89, guiTop + 42, 192, 0, 16, 16);
drawTexturedModalRect(guiLeft + 43 + 18 * 4, guiTop + 34, 208, 0, 18, 18);
}
this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); this.drawInfoPanel(guiLeft - 8, guiTop + 36, 16, 16, 2);
if(!diesel.hasAcceptableFuel()) if(!diesel.hasAcceptableFuel())
this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32, 16, 16, 6); this.drawInfoPanel(guiLeft - 8, guiTop + 36 + 32, 16, 16, 6);
diesel.tank.renderTank(guiLeft + 80, guiTop + 69, this.zLevel, 16, 52); diesel.tank.renderTank(guiLeft + 35, guiTop + 69, this.zLevel, 16, 52);
} }
} }

View File

@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerMachineKeyForge; import com.hbm.inventory.container.ContainerMachineKeyForge;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityMachineKeyForge; import com.hbm.tileentity.machine.TileEntityMachineKeyForge;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
@ -13,7 +14,7 @@ import net.minecraft.util.ResourceLocation;
public class GUIMachineKeyForge extends GuiInfoContainer { public class GUIMachineKeyForge extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_keyforge.png"); private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_keyforge.png");
private TileEntityMachineKeyForge siren; private TileEntityMachineKeyForge siren;
public GUIMachineKeyForge(InventoryPlayer invPlayer, TileEntityMachineKeyForge tedf) { public GUIMachineKeyForge(InventoryPlayer invPlayer, TileEntityMachineKeyForge tedf) {
@ -21,26 +22,25 @@ public class GUIMachineKeyForge extends GuiInfoContainer {
siren = tedf; siren = tedf;
this.xSize = 176; this.xSize = 176;
this.ySize = 166; this.ySize = 186;
} }
@Override @Override
public void drawScreen(int mouseX, int mouseY, float f) { public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f); super.drawScreen(mouseX, mouseY, f);
String[] text = new String[] { "The first slot will copy the key/lock's", String[] keyText = I18nUtil.resolveKeyArray("desc.gui.keyforge.key");
"pin configuration and paste it to the second slot." }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft - 8, guiTop + 36 + 16, keyText);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text);
String[] text1 = new String[] { "The third slot will randomize the", String[] randomText = I18nUtil.resolveKeyArray("desc.gui.keyforge.random");
"key/lock's pin configuration."}; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, randomText);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1);
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(int i, int j) { protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.siren.hasCustomInventoryName() ? this.siren.getInventoryName() : I18n.format(this.siren.getInventoryName()); String name = this.siren.hasCustomInventoryName() ? this.siren.getInventoryName() : I18n.format(this.siren.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
} }
@ -50,7 +50,7 @@ public class GUIMachineKeyForge extends GuiInfoContainer {
Minecraft.getMinecraft().getTextureManager().bindTexture(texture); Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); this.drawInfoPanel(guiLeft + 12, guiTop + 28, 16, 16, 2);
this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); this.drawInfoPanel(guiLeft + 12, guiTop + 28 + 16, 16, 16, 3);
} }
} }

View File

@ -36,11 +36,12 @@ public class GUIMachineOilWell extends GuiInfoContainer {
derrick.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 54, guiTop + 45, 6, 32); derrick.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 54, guiTop + 45, 6, 32);
} }
String[] upgradeText = new String[4]; String[] upgradeText = new String[5];
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power");
upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.afterburner"); upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.afterburner");
upgradeText[4] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive");
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 160, guiTop + 21, 8, 8, mouseX, mouseY, upgradeText); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 160, guiTop + 21, 8, 8, mouseX, mouseY, upgradeText);
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 22, 16, 34, derrick.power, derrick.getMaxPower()); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 22, 16, 34, derrick.power, derrick.getMaxPower());

View File

@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerMachineSatLinker; import com.hbm.inventory.container.ContainerMachineSatLinker;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityMachineSatLinker; import com.hbm.tileentity.machine.TileEntityMachineSatLinker;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
@ -13,7 +14,7 @@ import net.minecraft.util.ResourceLocation;
public class GUIMachineSatLinker extends GuiInfoContainer { public class GUIMachineSatLinker extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_linker.png"); private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_sat_linker.png");
private TileEntityMachineSatLinker siren; private TileEntityMachineSatLinker siren;
public GUIMachineSatLinker(InventoryPlayer invPlayer, TileEntityMachineSatLinker tedf) { public GUIMachineSatLinker(InventoryPlayer invPlayer, TileEntityMachineSatLinker tedf) {
@ -21,25 +22,24 @@ public class GUIMachineSatLinker extends GuiInfoContainer {
siren = tedf; siren = tedf;
this.xSize = 176; this.xSize = 176;
this.ySize = 166; this.ySize = 186;
} }
@Override @Override
public void drawScreen(int mouseX, int mouseY, float f) { public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f); super.drawScreen(mouseX, mouseY, f);
String[] text = new String[] { "The first slot will copy the satellite/chip's", String[] chipText = I18nUtil.resolveKeyArray("desc.gui.satlinker.chip");
"frequency and paste it to the second slot." }; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft - 8, guiTop + 36 + 16, chipText);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text);
String[] text1 = new String[] { "The third slot will randomize the", String[] randomText = I18nUtil.resolveKeyArray("desc.gui.satlinker.random");
"satellite/chip's frequency."}; this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, randomText);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1);
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(int i, int j) { protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.siren.hasCustomInventoryName() ? this.siren.getInventoryName() : I18n.format(this.siren.getInventoryName()); String name = this.siren.hasCustomInventoryName() ? this.siren.getInventoryName() : I18n.format(this.siren.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); 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); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
} }
@ -50,7 +50,7 @@ public class GUIMachineSatLinker extends GuiInfoContainer {
Minecraft.getMinecraft().getTextureManager().bindTexture(texture); Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); this.drawInfoPanel(guiLeft + 12, guiTop + 28, 16, 16, 2);
this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); this.drawInfoPanel(guiLeft + 12, guiTop + 28 + 16, 16, 16, 3);
} }
} }

View File

@ -3,6 +3,8 @@ package com.hbm.inventory.gui;
import com.hbm.inventory.container.ContainerSatDock; import com.hbm.inventory.container.ContainerSatDock;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityMachineSatDock; import com.hbm.tileentity.machine.TileEntityMachineSatDock;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
@ -11,7 +13,7 @@ import org.lwjgl.opengl.GL11;
public class GUISatDock extends GuiInfoContainer { public class GUISatDock extends GuiInfoContainer {
public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_sat_dock.png");
private final TileEntityMachineSatDock tileSatelliteDock; private final TileEntityMachineSatDock tileSatelliteDock;
public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) { public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) {
@ -19,24 +21,22 @@ public class GUISatDock extends GuiInfoContainer {
tileSatelliteDock = tesd; tileSatelliteDock = tesd;
this.xSize = 176; this.xSize = 176;
this.ySize = 168; this.ySize = 186;
} }
@Override @Override
public void drawScreen(int mouseX, int mouseY, float f) { public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f); super.drawScreen(mouseX, mouseY, f);
String[] text = new String[] { "Requires linked miner sat chip.", String[] text = I18nUtil.resolveKeyArray("desc.gui.satdock.desc");
"Cargo ship will land periodically to", this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 7, guiTop + 36, 16, 16, guiLeft - 7, guiTop + 36 + 16, text);
"deliver resources." };
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text);
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(int i, int j) { protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.tileSatelliteDock.hasCustomInventoryName() ? this.tileSatelliteDock.getInventoryName() : I18n.format(this.tileSatelliteDock.getInventoryName()); String name = this.tileSatelliteDock.hasCustomInventoryName() ? this.tileSatelliteDock.getInventoryName() : I18n.format(this.tileSatelliteDock.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040); this.fontRendererObj.drawString(name, 115 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0x404040); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0x404040);
} }
@ -46,6 +46,6 @@ public class GUISatDock extends GuiInfoContainer {
Minecraft.getMinecraft().getTextureManager().bindTexture(texture); Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); this.drawInfoPanel(guiLeft - 7, guiTop + 36, 16, 16, 2);
} }
} }

View File

@ -14,7 +14,7 @@ import net.minecraft.util.ResourceLocation;
public class GUISoyuzCapsule extends GuiContainer { public class GUISoyuzCapsule extends GuiContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_soyuz_capsule.png"); private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_soyuz_capsule.png");
private TileEntitySoyuzCapsule diFurnace; private TileEntitySoyuzCapsule diFurnace;
public GUISoyuzCapsule(InventoryPlayer invPlayer, TileEntitySoyuzCapsule tedf) { public GUISoyuzCapsule(InventoryPlayer invPlayer, TileEntitySoyuzCapsule tedf) {
@ -22,14 +22,14 @@ public class GUISoyuzCapsule extends GuiContainer {
diFurnace = tedf; diFurnace = tedf;
this.xSize = 176; this.xSize = 176;
this.ySize = 168; this.ySize = 186;
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(int i, int j) { protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); 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(name, 115 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x7daf71);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
} }

View File

@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.packet.toserver.AuxButtonPacket;
import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; import com.hbm.tileentity.machine.TileEntitySoyuzLauncher;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.audio.PositionedSoundRecord;
@ -16,49 +17,50 @@ import net.minecraft.util.ResourceLocation;
public class GUISoyuzLauncher extends GuiInfoContainer { public class GUISoyuzLauncher extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_soyuz.png"); private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_soyuz.png");
private TileEntitySoyuzLauncher launcher; private TileEntitySoyuzLauncher launcher;
public GUISoyuzLauncher(InventoryPlayer invPlayer, TileEntitySoyuzLauncher tedf) { public GUISoyuzLauncher(InventoryPlayer invPlayer, TileEntitySoyuzLauncher tedf) {
super(new ContainerSoyuzLauncher(invPlayer, tedf)); super(new ContainerSoyuzLauncher(invPlayer, tedf));
launcher = tedf; launcher = tedf;
this.xSize = 176; this.xSize = 194;
this.ySize = 222; this.ySize = 244;
} }
@Override @Override
public void drawScreen(int mouseX, int mouseY, float f) { public void drawScreen(int mouseX, int mouseY, float f) {
super.drawScreen(mouseX, mouseY, f); super.drawScreen(mouseX, mouseY, f);
launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 36, 16, 52); launcher.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 44, 16, 52);
launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 36, 16, 52); launcher.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 170, guiTop + 44, 16, 52);
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 49, guiTop + 72, 6, 34, launcher.power, launcher.maxPower); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 44, 16, 52, launcher.power, launcher.maxPower);
String[] descText = I18nUtil.resolveKeyArray("desc.gui.soyuz.desc");
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 53, 16, 16, guiLeft - 8, guiTop + 53 + 16, descText);
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The Soyuz goes here"} ); String[] cargoText = I18nUtil.resolveKeyArray("desc.gui.soyuz.cargo");
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 43, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"Designator only for CARGO MODE"} ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 79, guiTop + 52, 18, 18, mouseX, mouseY, cargoText );
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"The payload for SATELLITE MODE"} ); String[] satelliteText = I18nUtil.resolveKeyArray("desc.gui.soyuz.satellite");
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"The orbital module for special payloads"} ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 97, guiTop + 52, 18, 18, mouseX, mouseY, satelliteText );
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 17, 18, 18, mouseX, mouseY, new String[]{"SATELLITE MODE"} );
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 88, guiTop + 35, 18, 18, mouseX, mouseY, new String[]{"CARGO MODE"} );
} }
protected void mouseClicked(int x, int y, int i) { protected void mouseClicked(int x, int y, int i) {
super.mouseClicked(x, y, i); super.mouseClicked(x, y, i);
if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) { if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 0, 0)); PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 0, 0));
} }
if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 35 < y && guiTop + 35 + 18 >= y) { if(guiLeft + 79 <= x && guiLeft + 79 + 18 > x && guiTop + 52 < y && guiTop + 52 + 18 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 1, 0)); PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 1, 0));
} }
if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) { if(guiLeft + 88 <= x && guiLeft + 88 + 18 > x && guiTop + 97 < y && guiTop + 97 + 18 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 0, 1)); PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(launcher.xCoord, launcher.yCoord, launcher.zCoord, 0, 1));
@ -69,8 +71,8 @@ public class GUISoyuzLauncher extends GuiInfoContainer {
protected void drawGuiContainerForegroundLayer( int i, int j) { protected void drawGuiContainerForegroundLayer( int i, int j) {
String name = this.launcher.hasCustomInventoryName() ? this.launcher.getInventoryName() : I18n.format(this.launcher.getInventoryName()); String name = this.launcher.hasCustomInventoryName() ? this.launcher.getInventoryName() : I18n.format(this.launcher.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 4, 0xffffff);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 17, this.ySize - 96 + 2, 4210752);
String secs = "" + launcher.countdown / 20; String secs = "" + launcher.countdown / 20;
String cents = "" + (launcher.countdown % 20) * 5; String cents = "" + (launcher.countdown % 20) * 5;
@ -79,9 +81,9 @@ public class GUISoyuzLauncher extends GuiInfoContainer {
if(cents.length() == 1) if(cents.length() == 1)
cents += "0"; cents += "0";
float scale = 0.5F; float scale = 1;
GL11.glScalef(scale, scale, 1); GL11.glScalef(scale, scale, 1);
this.fontRendererObj.drawString(secs + ":" + cents, (int)(153.5F / scale), (int)(37.5F / scale), 0xff0000); this.fontRendererObj.drawString(secs + ":" + cents, (int)(85 / scale), (int)(121 / scale), 0xff0000);
GL11.glScalef(1/scale, 1/scale, 1); GL11.glScalef(1/scale, 1/scale, 1);
} }
@ -91,47 +93,49 @@ public class GUISoyuzLauncher extends GuiInfoContainer {
Minecraft.getMinecraft().getTextureManager().bindTexture(texture); Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
int i = (int)launcher.getPowerScaled(34); int i = (int)launcher.getPowerScaled(52);
drawTexturedModalRect(guiLeft + 49, guiTop + 106 - i, 194, 52 - i, 6, i); drawTexturedModalRect(guiLeft + 134, guiTop + 96 - i, 194, 52 - i, 16, i);
drawTexturedModalRect(guiLeft + 61, guiTop + 17, 176 + (launcher.hasRocket() ? 18 : 0), 0, 18, 18); drawTexturedModalRect(guiLeft + 97, guiTop + 79, 210 + (launcher.hasRocket() ? 18 : 0), 8, 18, 18);
int j = launcher.designator(); int j = launcher.designator();
if(j > 0) if(j > 0)
drawTexturedModalRect(guiLeft + 61, guiTop + 35, 176 + (j - 1) * 18, 0, 18, 18); drawTexturedModalRect(guiLeft + 79, guiTop + 79, 210 + (j - 1) * 18, 8, 18, 18);
int k = launcher.mode; int k = launcher.mode;
drawTexturedModalRect(guiLeft + 88, guiTop + 17 + k * 18, 176, 18 + k * 18, 18, 18); drawTexturedModalRect(guiLeft + 97 - k * 18, guiTop + 52, 228 - k * 18, 26, 18, 18);
int l = launcher.orbital(); int l = launcher.orbital();
if(l > 0) if(l > 0)
drawTexturedModalRect(guiLeft + 115, guiTop + 35, 176 + (l - 1) * 18, 0, 18, 18); drawTexturedModalRect(guiLeft + 79, guiTop + 25, 210 + (l - 1) * 18, 8, 18, 18);
int m = launcher.satellite(); int m = launcher.satellite();
if(m > 0) if(m > 0)
drawTexturedModalRect(guiLeft + 115, guiTop + 17, 176 + (m - 1) * 18, 0, 18, 18); drawTexturedModalRect(guiLeft + 97, guiTop + 25, 210 + (m - 1) * 18, 8, 18, 18);
if(launcher.starting) if(launcher.starting)
drawTexturedModalRect(guiLeft + 151, guiTop + 17, 176, 54, 18, 18); drawTexturedModalRect(guiLeft + 88, guiTop + 97, 210, 44, 18, 18);
if(launcher.hasFuel()) if(launcher.hasFuel())
drawTexturedModalRect(guiLeft + 13, guiTop + 23, 212, 0, 6, 8); drawTexturedModalRect(guiLeft + 157, guiTop + 31, 210, 0, 6, 8);
else else
drawTexturedModalRect(guiLeft + 13, guiTop + 23, 218, 0, 6, 8); drawTexturedModalRect(guiLeft + 157, guiTop + 31, 216, 0, 6, 8);
if(launcher.hasOxy()) if(launcher.hasOxy())
drawTexturedModalRect(guiLeft + 31, guiTop + 23, 212, 0, 6, 8); drawTexturedModalRect(guiLeft + 175, guiTop + 31, 210, 0, 6, 8);
else else
drawTexturedModalRect(guiLeft + 31, guiTop + 23, 218, 0, 6, 8); drawTexturedModalRect(guiLeft + 175, guiTop + 31, 216, 0, 6, 8);
if(launcher.hasPower()) if(launcher.hasPower())
drawTexturedModalRect(guiLeft + 49, guiTop + 59, 212, 0, 6, 8); drawTexturedModalRect(guiLeft + 139, guiTop + 31, 210, 0, 6, 8);
else else
drawTexturedModalRect(guiLeft + 49, guiTop + 59, 218, 0, 6, 8); drawTexturedModalRect(guiLeft + 139, guiTop + 31, 216, 0, 6, 8);
launcher.tanks[0].renderTank(guiLeft + 8, guiTop + 88, this.zLevel, 16, 52); launcher.tanks[0].renderTank(guiLeft + 152, guiTop + 96, this.zLevel, 16, 52);
launcher.tanks[1].renderTank(guiLeft + 26, guiTop + 88, this.zLevel, 16, 52); launcher.tanks[1].renderTank(guiLeft + 170, guiTop + 96, this.zLevel, 16, 52);
this.drawInfoPanel(guiLeft - 16, guiTop + 53, 16, 16, 2);
} }
} }

View File

@ -30,6 +30,7 @@ import com.hbm.items.machine.ItemBatterySC.EnumBatterySC;
import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemDrillbit.EnumDrillType;
import com.hbm.items.machine.ItemPACoil.EnumCoilType; import com.hbm.items.machine.ItemPACoil.EnumCoilType;
import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod;
import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.items.machine.ItemPistons.EnumPistonType;
import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.items.weapon.ItemAmmoHIMARS;
import com.hbm.items.weapon.grenade.ItemGrenadeFuze.EnumGrenadeFuze; import com.hbm.items.weapon.grenade.ItemGrenadeFuze.EnumGrenadeFuze;
@ -160,6 +161,21 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
this.register(new GenericRecipe("ass.protoreactor").setup(200, 100).outputItems(new ItemStack(ModItems.dysfunctional_reactor, 1)) this.register(new GenericRecipe("ass.protoreactor").setup(200, 100).outputItems(new ItemStack(ModItems.dysfunctional_reactor, 1))
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(PB.plateCast(), 4), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack(KEY_BROWN, 3))); .inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(PB.plateCast(), 4), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack(KEY_BROWN, 3)));
// pile rods
String autoPileRod = "autoswitch.pilerod";
this.register(new GenericRecipe("ass.pilepabe").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RA226BE.ordinal()))
.inputItems(new ComparableStack(ModItems.billet_ra226be, 3)).setGroup(autoPileRod, INSTANCE));
this.register(new GenericRecipe("ass.pilepobe").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PO210BE.ordinal()))
.inputItems(new ComparableStack(ModItems.billet_po210be, 3)).setGroup(autoPileRod, INSTANCE));
this.register(new GenericRecipe("ass.pilezr").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 3, EnumPileRod.ZR.ordinal()))
.inputItems(new OreDictStack(ZR.billet(), 1)).setGroup(autoPileRod, INSTANCE));
this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal()))
.inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE));
this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal()))
.inputItems(new OreDictStack(PU239.billet(), 3)).setGroup(autoPileRod, INSTANCE));
this.register(new GenericRecipe("ass.pilergp").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal()))
.inputItems(new OreDictStack(PURG.billet(), 3)).setGroup(autoPileRod, INSTANCE));
// powders // powders
String autoCyclotron = "autoswitch.cyclotron"; String autoCyclotron = "autoswitch.cyclotron";
this.register(new GenericRecipe("ass.partlith").setup(40, 100).outputItems(new ItemStack(ModItems.part_lithium, 8)) this.register(new GenericRecipe("ass.partlith").setup(40, 100).outputItems(new ItemStack(ModItems.part_lithium, 8))

View File

@ -13,6 +13,7 @@ import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.recipes.loader.GenericRecipes; import com.hbm.inventory.recipes.loader.GenericRecipes;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel;
import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -60,23 +61,25 @@ public class PUREXRecipes extends GenericRecipes<PUREXRecipe> {
//CP-1 //CP-1
String autoPile = "autoswitch.pile"; String autoPile = "autoswitch.pile";
this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu239").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this)
.inputItems(new ComparableStack(ModItems.pile_rod_plutonium)) .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.PU239))
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100))
.outputItems(new ItemStack(ModItems.billet_pu239, 2),
new ItemStack(ModItems.billet_uranium, 1))
.setIconToFirstIngredient());
this.register((PUREXRecipe) new PUREXRecipe("purex.pilergp").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this)
.inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.RGP))
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100))
.outputItems(new ItemStack(ModItems.billet_pu_mix, 2), .outputItems(new ItemStack(ModItems.billet_pu_mix, 2),
new ItemStack(ModItems.billet_uranium, 1), new ItemStack(ModItems.billet_uranium, 1))
new ItemStack(ModItems.plate_iron, 2))
.setIconToFirstIngredient()); .setIconToFirstIngredient());
this.register((PUREXRecipe) new PUREXRecipe("purex.pilewaste").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this)
this.register((PUREXRecipe) new PUREXRecipe("purex.pilepu239").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.WASTE))
.inputItems(new ComparableStack(ModItems.pile_rod_pu239))
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100))
.outputItems(new ItemStack(ModItems.billet_pu239, 1), .outputItems(new ItemStack(ModItems.billet_nuclear_waste, 2),
new ItemStack(ModItems.billet_pu_mix, 1), new ItemStack(ModItems.billet_polonium, 1))
new ItemStack(ModItems.billet_uranium, 1),
new ItemStack(ModItems.plate_iron, 2))
.setIconToFirstIngredient()); .setIconToFirstIngredient());
// ZIRNOX // ZIRNOX
String autoZirnox = "autoswitch.zirnox"; String autoZirnox = "autoswitch.zirnox";
this.register((PUREXRecipe) new PUREXRecipe("purex.zirnoxnu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this) this.register((PUREXRecipe) new PUREXRecipe("purex.zirnoxnu").setup(100, zirnoxPower).setNameWrapper("purex.recycle").setGroup(autoZirnox, this)

View File

@ -25,6 +25,7 @@ import com.hbm.items.ModItems;
import com.hbm.items.food.ItemFlask.EnumInfusion; import com.hbm.items.food.ItemFlask.EnumInfusion;
import com.hbm.items.machine.ItemBatterySC.EnumBatterySC; import com.hbm.items.machine.ItemBatterySC.EnumBatterySC;
import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod;
import com.hbm.util.Tuple.Pair; import com.hbm.util.Tuple.Pair;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -333,8 +334,8 @@ public class AnvilRecipes extends SerializableRecipe {
new AStack[] { new AStack[] {
new OreDictStack(STEEL.plate(), 16), new OreDictStack(STEEL.plate(), 16),
new OreDictStack(BE.ingot(), 6), new OreDictStack(BE.ingot(), 6),
new OreDictStack(CU.ingot(), 8), new OreDictStack(CU.ingot(), 4),
new ComparableStack(ModItems.coil_gold, 16), new ComparableStack(ModItems.coil_gold, 8),
new ComparableStack(ModItems.gear_large, 1, 1) new ComparableStack(ModItems.gear_large, 1, 1)
}, new AnvilOutput(new ItemStack(ModBlocks.machine_stirling_steel))).setTier(2)); }, new AnvilOutput(new ItemStack(ModBlocks.machine_stirling_steel))).setTier(2));
@ -698,8 +699,8 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput[] { new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)), new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)),
new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)), new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)),
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)), new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)),
new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)), new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)),
new AnvilOutput(new ItemStack(ModItems.gear_large,1, 1)), new AnvilOutput(new ItemStack(ModItems.gear_large,1, 1)),
} }
@ -725,8 +726,8 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput[] { new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)), new AnvilOutput(new ItemStack(ModItems.plate_steel, 16)),
new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)), new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 6)),
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 8)), new AnvilOutput(new ItemStack(ModItems.ingot_copper, 4)),
new AnvilOutput(new ItemStack(ModItems.coil_gold, 16)), new AnvilOutput(new ItemStack(ModItems.coil_gold, 8)),
} }
).setTier(2)); ).setTier(2));
@ -846,30 +847,28 @@ public class AnvilRecipes extends SerializableRecipe {
).setTier(1)); ).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_uranium), new AnvilOutput[] { new ComparableStack(ModItems.billet_ra226be, 3), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.billet_uranium, 3)), new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RA226BE.ordinal())),
new AnvilOutput(new ItemStack(ModItems.plate_iron, 2))
}).setTier(2)); }).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_source), new AnvilOutput[] { new ComparableStack(ModItems.billet_po210be, 3), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.billet_ra226be, 3)), new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PO210BE.ordinal())),
new AnvilOutput(new ItemStack(ModItems.plate_iron, 2))
}).setTier(2)); }).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_boron), new AnvilOutput[] { new OreDictStack(ZR.billet(), 3), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.ingot_boron, 2)), new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.ZR.ordinal())),
new AnvilOutput(new ItemStack(Items.stick, 2))
}).setTier(2)); }).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_detector), new AnvilOutput[] { new OreDictStack(U.billet(), 3), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.ingot_boron, 2)), new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())),
new AnvilOutput(new ItemStack(ModItems.motor, 1)),
new AnvilOutput(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE))
}).setTier(2)); }).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_lithium), new AnvilOutput[] { new OreDictStack(PU239.billet(), 3), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.lithium, 1)), new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())),
new AnvilOutput(new ItemStack(ModItems.cell_empty, 1)) }).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack(PURG.billet(), 3), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())),
}).setTier(2)); }).setTier(2));
//RBMK //RBMK
@ -968,20 +967,6 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()), 0.5F), new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()), 0.5F),
}).setTier(4)); }).setTier(4));
} else {
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_plutonium), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 2)),
new AnvilOutput(new ItemStack(ModItems.billet_nuclear_waste, 1)),
new AnvilOutput(new ItemStack(ModItems.plate_iron, 1))
}).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.pile_rod_pu239), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.billet_pu239, 1)),
new AnvilOutput(new ItemStack(ModItems.billet_pu_mix, 1)),
new AnvilOutput(new ItemStack(ModItems.billet_nuclear_waste, 1)),
new AnvilOutput(new ItemStack(ModItems.plate_iron, 2))
}).setTier(2));
} }
constructionRecipes.add(new AnvilConstructionRecipe( constructionRecipes.add(new AnvilConstructionRecipe(

View File

@ -30,6 +30,7 @@ public class ItemPoolsPile {
public static final String POOL_PILE_OF_GARBAGE = "POOL_PILE_OF_GARBAGE"; public static final String POOL_PILE_OF_GARBAGE = "POOL_PILE_OF_GARBAGE";
public static final String POOL_PILE_MECHANICAL = "POOL_PILE_MECHANICAL"; public static final String POOL_PILE_MECHANICAL = "POOL_PILE_MECHANICAL";
public static final String POOL_PILE_GEAR = "POOL_PILE_GEAR"; public static final String POOL_PILE_GEAR = "POOL_PILE_GEAR";
public static final String POOL_PILE_SUPPLIES = "POOL_PILE_SUPPLIES";
public static void init() { public static void init() {
@ -173,5 +174,17 @@ public class ItemPoolsPile {
weighted(ModItems.taurun_boots, 0, 1, 1, 20) weighted(ModItems.taurun_boots, 0, 1, 1, 20)
}; };
}}; }};
new ItemPool(POOL_PILE_SUPPLIES) {{
this.pool = new WeightedRandomChestContent[] {
weighted(ItemGrenadeUniversal.make(EnumGrenadeShell.FRAG, EnumGrenadeFilling.HE, EnumGrenadeFuze.S3, EnumGrenadeExtra.FRAG_SLEEVE), 3, 5, 10),
weighted(ItemGrenadeUniversal.make(EnumGrenadeShell.FRAG, EnumGrenadeFilling.HE, EnumGrenadeFuze.S3, EnumGrenadeExtra.FRAG_SLEEVE), 3, 5, 10),
weighted(ItemGrenadeUniversal.make(EnumGrenadeShell.FRAG, EnumGrenadeFilling.HE, EnumGrenadeFuze.S3, EnumGrenadeExtra.FRAG_SLEEVE), 3, 5, 10),
weighted(ModItems.syringe_metal_stimpak, 0, 3, 5, 30),
weighted(ModItems.syringe_metal_psycho, 0, 3, 5, 30),
weighted(ModItems.syringe_antidote, 0, 1, 2, 30),
weighted(ModItems.ammo_container, 0, 2, 3, 40)
};
}};
} }
} }

View File

@ -105,6 +105,7 @@ public class ModItems {
public static Item powder_lignite; public static Item powder_lignite;
public static Item briquette; public static Item briquette;
public static Item coal_infernal; public static Item coal_infernal;
public static Item coal_eternal;
public static Item cinnebar; public static Item cinnebar;
public static Item powder_ash; public static Item powder_ash;
public static Item powder_limestone; public static Item powder_limestone;
@ -2338,6 +2339,7 @@ public class ModItems {
briquette = new ItemEnumMulti(EnumBriquetteType.class, true, true).setUnlocalizedName("briquette").setCreativeTab(MainRegistry.partsTab); briquette = new ItemEnumMulti(EnumBriquetteType.class, true, true).setUnlocalizedName("briquette").setCreativeTab(MainRegistry.partsTab);
powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite"); powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite");
coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal"); coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal");
coal_eternal = new Item().setUnlocalizedName("coal_eternal").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":coal_eternal");
cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar"); cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar");
powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash"); powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash");
powder_limestone = new Item().setUnlocalizedName("powder_limestone").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_limestone"); powder_limestone = new Item().setUnlocalizedName("powder_limestone").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_limestone");
@ -4406,6 +4408,8 @@ public class ModItems {
BucketHandler.INSTANCE.buckets.put(ModBlocks.schrabidic_block, ModItems.bucket_schrabidic_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.schrabidic_block, ModItems.bucket_schrabidic_acid);
BucketHandler.INSTANCE.buckets.put(ModBlocks.sulfuric_acid_block, ModItems.bucket_sulfuric_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.sulfuric_acid_block, ModItems.bucket_sulfuric_acid);
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE); MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
coal_eternal.setContainerItem(coal_eternal);
} }
private static void registerItem() { private static void registerItem() {
@ -4605,6 +4609,7 @@ public class ModItems {
GameRegistry.registerItem(coke, coke.getUnlocalizedName()); GameRegistry.registerItem(coke, coke.getUnlocalizedName());
GameRegistry.registerItem(lignite, lignite.getUnlocalizedName()); GameRegistry.registerItem(lignite, lignite.getUnlocalizedName());
GameRegistry.registerItem(coal_infernal, coal_infernal.getUnlocalizedName()); GameRegistry.registerItem(coal_infernal, coal_infernal.getUnlocalizedName());
GameRegistry.registerItem(coal_eternal, coal_eternal.getUnlocalizedName());
GameRegistry.registerItem(briquette, briquette.getUnlocalizedName()); GameRegistry.registerItem(briquette, briquette.getUnlocalizedName());
GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName()); GameRegistry.registerItem(sulfur, sulfur.getUnlocalizedName());
GameRegistry.registerItem(niter, niter.getUnlocalizedName()); GameRegistry.registerItem(niter, niter.getUnlocalizedName());

View File

@ -1,11 +1,17 @@
package com.hbm.items.machine; package com.hbm.items.machine;
import java.util.List;
import com.hbm.items.ItemEnumMulti; import com.hbm.items.ItemEnumMulti;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.EnumUtil; import com.hbm.util.EnumUtil;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
public class ItemPileRodMK2 extends ItemEnumMulti { public class ItemPileRodMK2 extends ItemEnumMulti {
@ -29,18 +35,19 @@ public class ItemPileRodMK2 extends ItemEnumMulti {
} }
public static enum EnumPileRod { public static enum EnumPileRod {
RA226BE(1D), /* 0 */ RA226BE(1D),
PO210BE(1D), /* 1 */ PO210BE(1D),
ZR( 0D, 0D, 0D), /* 2 */ ZR( 0D, 0D, 0D, 2),
NU( 1D, 1_000D, 1D), /* 3 */ NU( 1D, 25_000D, 0.25D, 4),
RGP( 1D, 1_000D, 1D), /* 4 */ PU239( 1D, 500D, 0.5D, 5),
PU239( 1D, 1_000D, 1D), /* 5 */ RGP( 1D, 1_000D, 0.5D, 6),
WASTE( 1D, 1_000D, 1D); /* 6 */ WASTE( 1D, 0D, 1.5D, 6);
public double reactionMult = 1.0D; public double reactionMult = 1.0D;
public double life = 1_000D; public double life = 1_000D;
public double heatMult = 1.0D; public double heatMult = 0.0D;
public double neutronSource = 0D; public double neutronSource = 0D;
public int turnsInto;
private EnumPileRod(double neutronSource) { private EnumPileRod(double neutronSource) {
this.neutronSource = neutronSource; this.neutronSource = neutronSource;
@ -49,10 +56,26 @@ public class ItemPileRodMK2 extends ItemEnumMulti {
this.heatMult = 0; this.heatMult = 0;
} }
private EnumPileRod(double reaction, double life, double heat) { private EnumPileRod(double reaction, double life, double heat, int turnsInto) {
this.reactionMult = reaction; this.reactionMult = reaction;
this.life = life; this.life = life;
this.heatMult = heat; this.heatMult = heat;
this.turnsInto = turnsInto;
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, stack.getItemDamage());
if(rod.life > 0) {
list.add("Lifetime: " + (int) Math.round(rod.life));
double depletion = getDepletionPercent(stack);
if(depletion > 0) list.add("Depletion: " + (int) Math.round(depletion) + "%");
}
for(String loc : I18nUtil.autoBreak(Minecraft.getMinecraft().fontRenderer, I18nUtil.resolveKey(this.getUnlocalizedName(stack) + ".desc"), 225)) {
list.add(EnumChatFormatting.YELLOW + loc);
} }
} }
@ -69,6 +92,14 @@ public class ItemPileRodMK2 extends ItemEnumMulti {
return getDepletion(stack) / life; return getDepletion(stack) / life;
} }
public static double getDepletionPercent(ItemStack stack) {
if(stack == null) return 0D;
EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, stack.getItemDamage());
double life = rod.life;
if(life <= 0) return 0D;
return (getDepletion(stack) / life) * 100;
}
public static double getDepletion(ItemStack stack) { public static double getDepletion(ItemStack stack) {
if(!stack.hasTagCompound()) return 0D; if(!stack.hasTagCompound()) return 0D;
return stack.stackTagCompound.getDouble(KEY_NBT_DEPLETION); return stack.stackTagCompound.getDouble(KEY_NBT_DEPLETION);
@ -87,4 +118,22 @@ public class ItemPileRodMK2 extends ItemEnumMulti {
} }
return outFlux; return outFlux;
} }
public static double getHeatPerNeutron(ItemStack stack) {
EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, stack.getItemDamage());
return rod.heatMult;
}
public static ItemStack react(ItemStack stack, double inFlux) {
EnumPileRod rod = EnumUtil.grabEnumSafely(EnumPileRod.class, stack.getItemDamage());
if(rod.life <= 0) return stack;
double dep = getDepletion(stack) + inFlux;
if(dep < rod.life) {
setDepletion(stack, dep);
return stack;
} else {
return new ItemStack(stack.getItem(), 1, rod.turnsInto);
}
}
} }

View File

@ -46,7 +46,7 @@ public class ItemPistons extends ItemEnumMulti {
list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:"); list.add(EnumChatFormatting.YELLOW + "Fuel efficiency:");
for(int i = 0; i < type.eff.length; i++) { for(int i = 0; i < type.eff.length; i++) {
list.add(EnumChatFormatting.YELLOW + "-" + FuelGrade.values()[i].getGrade() + ": " + EnumChatFormatting.RED + "" + (int)(type.eff[i] * 100) + "%"); list.add(EnumChatFormatting.YELLOW + "-" + FuelGrade.values()[i].getLocalizedName() + ": " + EnumChatFormatting.RED + "" + (int)(type.eff[i] * 100) + "%");
} }
} }

View File

@ -6,6 +6,7 @@ import com.hbm.handler.pollution.PollutionHandler.PollutionType;
import com.hbm.packet.PacketDispatcher; import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.packet.toclient.PlayerInformPacket;
import com.hbm.util.ChatBuilder; import com.hbm.util.ChatBuilder;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
@ -34,9 +35,9 @@ public class ItemPollutionDetector extends Item {
heavymetal = ((int) (heavymetal * 100)) / 100F; heavymetal = ((int) (heavymetal * 100)) / 100F;
//fallout = ((int) (fallout * 100)) / 100F; //fallout = ((int) (fallout * 100)) / 100F;
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Soot: " + soot).color(EnumChatFormatting.YELLOW).flush(), 100, 4000), (EntityPlayerMP) entity); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start(I18nUtil.resolveKey("pollution.soot") + ": " + soot).color(EnumChatFormatting.YELLOW).flush(), 100, 4000), (EntityPlayerMP) entity);
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Poison: " + poison).color(EnumChatFormatting.YELLOW).flush(), 101, 4000), (EntityPlayerMP) entity); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start(I18nUtil.resolveKey("pollution.poison") + ": " + poison).color(EnumChatFormatting.YELLOW).flush(), 101, 4000), (EntityPlayerMP) entity);
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Heavy metal: " + heavymetal).color(EnumChatFormatting.YELLOW).flush(), 102, 4000), (EntityPlayerMP) entity); PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start(I18nUtil.resolveKey("pollution.heavymetal") + ": " + heavymetal).color(EnumChatFormatting.YELLOW).flush(), 102, 4000), (EntityPlayerMP) entity);
//PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity); //PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity);
} }
} }

View File

@ -33,6 +33,7 @@ import com.hbm.items.weapon.sedna.BulletConfig;
import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.render.item.weapon.sedna.*; import com.hbm.render.item.weapon.sedna.*;
import com.hbm.tileentity.machine.pile.TileEntityPileCore;
import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; import com.hbm.tileentity.machine.storage.TileEntityBatterySocket;
import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.MinecraftForgeClient;
@ -250,6 +251,8 @@ public class GunFactoryClient {
setRendererBulk(LegoClient.RENDER_FRAGMENTATION, ItemGrenadeFilling.fragmentation, ItemGrenadeFilling.pellets, ItemGrenadeFilling.pellets_heavy); setRendererBulk(LegoClient.RENDER_FRAGMENTATION, ItemGrenadeFilling.fragmentation, ItemGrenadeFilling.pellets, ItemGrenadeFilling.pellets_heavy);
ItemGrenadeFilling.laser.setRendererBeam(LegoClient.RENDER_LASER_RED); ItemGrenadeFilling.laser.setRendererBeam(LegoClient.RENDER_LASER_RED);
TileEntityPileCore.pile_debris.setRenderer(LegoClient.RENDER_GRAPHITE);
//HUDS //HUDS
((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO, LegoClient.HUD_COMPONENT_AMMO_SECOND); ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO, LegoClient.HUD_COMPONENT_AMMO_SECOND);

View File

@ -12,6 +12,7 @@ import com.hbm.items.weapon.sedna.hud.HUDComponentDurabilityBar;
import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower; import com.hbm.items.weapon.sedna.impl.ItemGunChargeThrower;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.main.ResourceManager; import com.hbm.main.ResourceManager;
import com.hbm.render.entity.projectile.RenderRBMKDebris;
import com.hbm.render.item.weapon.sedna.ItemRenderFatMan; import com.hbm.render.item.weapon.sedna.ItemRenderFatMan;
import com.hbm.render.tileentity.RenderArcFurnace; import com.hbm.render.tileentity.RenderArcFurnace;
import com.hbm.render.util.BeamPronter; import com.hbm.render.util.BeamPronter;
@ -210,6 +211,14 @@ public class LegoClient {
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_GRAPHITE = (bullet, interp) -> {
GL11.glScalef(2F, 2F, 2F);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().getTextureManager().bindTexture(RenderRBMKDebris.tex_graphite);
ResourceManager.deb_graphite.renderAll();
GL11.glShadeModel(GL11.GL_FLAT);
};
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_GRENADE = (bullet, interp) -> { public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_GRENADE = (bullet, interp) -> {
GL11.glScalef(0.25F, 0.25F, 0.25F); GL11.glScalef(0.25F, 0.25F, 0.25F);
GL11.glRotated(90, 0, 0, 1); GL11.glRotated(90, 0, 0, 1);

View File

@ -301,6 +301,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarNT.class, new RenderRadar());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarLarge.class, new RenderRadarLarge());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadarScreen.class, new RenderRadarScreen());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSatLink.class, new RenderSatLink());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityReactorResearch.class, new RenderSmallReactor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTesla.class, new RenderTesla());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBarrel.class, new RenderFluidBarrel());

View File

@ -134,7 +134,6 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.gas_empty, 2), new Object[] { "S ", "AA", "AA", 'A', STEEL.plate(), 'S', CU.plate() }); addRecipeAuto(new ItemStack(ModItems.gas_empty, 2), new Object[] { "S ", "AA", "AA", 'A', STEEL.plate(), 'S', CU.plate() });
addShapelessAuto(new ItemStack(ModBlocks.block_waste_painted, 1), new Object[] { KEY_YELLOW, ModBlocks.block_waste }); addShapelessAuto(new ItemStack(ModBlocks.block_waste_painted, 1), new Object[] { KEY_YELLOW, ModBlocks.block_waste });
addRecipeAuto(new ItemStack(ModItems.ingot_aluminium, 1), new Object[] { "###", "###", "###", '#', AL.wireFine() }); addRecipeAuto(new ItemStack(ModItems.ingot_aluminium, 1), new Object[] { "###", "###", "###", '#', AL.wireFine() });
addRecipeAuto(new ItemStack(ModItems.ingot_copper, 1), new Object[] { "###", "###", "###", '#', CU.wireFine() }); addRecipeAuto(new ItemStack(ModItems.ingot_copper, 1), new Object[] { "###", "###", "###", '#', CU.wireFine() });
addRecipeAuto(new ItemStack(ModItems.ingot_tungsten, 1), new Object[] { "###", "###", "###", '#', W.wireFine() }); addRecipeAuto(new ItemStack(ModItems.ingot_tungsten, 1), new Object[] { "###", "###", "###", '#', W.wireFine() });
@ -242,7 +241,8 @@ public class CraftingManager {
addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addShapelessAuto(new ItemStack(ModBlocks.red_cable_gauge), new Object[] { ModBlocks.red_wire_coated, STEEL.ingot(), DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) });
addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.red_connector_super, 2), new Object[] { "CCC", "III", " S ", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', ANY_RESISTANTALLOY.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_connector_super, 2), new Object[] { "CCC", "III", " S ", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', ANY_RESISTANTALLOY.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " S ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'S', KEY_COBBLESTONE });
addRecipeAuto(new ItemStack(ModBlocks.red_pylon_steel, 4), new Object[] { "CWC", "PWP", " S ", 'C', ModItems.coil_copper, 'W', STEEL.pipe(), 'P', ModItems.plate_polymer, 'S', KEY_COBBLESTONE });
addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_wood, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_wood, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE });
addShapelessAuto(new ItemStack(ModBlocks.red_pylon_medium_wood_transformer, 1), new Object[] { ModBlocks.red_pylon_medium_wood, ModItems.plate_polymer, ModItems.coil_copper }); addShapelessAuto(new ItemStack(ModBlocks.red_pylon_medium_wood_transformer, 1), new Object[] { ModBlocks.red_pylon_medium_wood, ModItems.plate_polymer, ModItems.coil_copper });
addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_steel, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', STEEL.pipe(), 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon_medium_steel, 2), new Object[] { "CCW", "IIW", " S", 'C', ModItems.coil_copper, 'W', STEEL.pipe(), 'I', ModItems.plate_polymer, 'S', KEY_COBBLESTONE });
@ -299,7 +299,6 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick });
addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor });
addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', STEEL.bolt(), 'P', IRON.plate(), 'R', REDSTONE.dust() });
addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', STEEL.bolt() });
addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool }); addRecipeAuto(new ItemStack(ModItems.upgrade_muffler, 16), new Object[] { "III", "IWI", "III", 'I', ANY_RUBBER.ingot(), 'W', Blocks.wool });
addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer }); addRecipeAuto(new ItemStack(ModItems.upgrade_template, 1), new Object[] { "WIW", "PCP", "WIW", 'W', CU.wireFine(), 'I', IRON.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', ModItems.plate_polymer });
@ -312,6 +311,10 @@ public class CraftingManager {
addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.DESH), new Object[] { "C", "T", "C", 'C', DESH.ingot(), 'T', W.ingot() }); addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.DESH), new Object[] { "C", "T", "C", 'C', DESH.ingot(), 'T', W.ingot() });
addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.SATURNITE), new Object[] { "C", "T", "C", 'C', BIGMT.ingot(), 'T', NB.ingot() }); addRecipeAuto(DictFrame.fromOne(ModItems.arc_electrode, EnumElectrodeType.SATURNITE), new Object[] { "C", "T", "C", 'C', BIGMT.ingot(), 'T', NB.ingot() });
addRecipeAuto(new ItemStack(ModBlocks.pile_device, 1, 0), new Object[] { " A ", "CBS", 'A', AL.plate(), 'C', STEEL.plateCast(), 'B', B.ingot(), 'S', STEEL.shell() });
addRecipeAuto(new ItemStack(ModBlocks.pile_device, 1, 1), new Object[] { " M ", "ACA", " S ", 'M', ModItems.motor, 'A', AL.plate(), 'C', CU.shell(), 'S', STEEL.plateCast() });
addRecipeAuto(new ItemStack(ModBlocks.pile_device, 1, 2), new Object[] { " B ", "SBS", "SBS", 'B', B.ingot(), 'S', STEEL.plate() });
addRecipeAuto(new ItemStack(ModItems.detonator, 1), new Object[] { "C", "S", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), }); addRecipeAuto(new ItemStack(ModItems.detonator, 1), new Object[] { "C", "S", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), });
addShapelessAuto(new ItemStack(ModItems.detonator_multi, 1), new Object[] { ModItems.detonator, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addShapelessAuto(new ItemStack(ModItems.detonator_multi, 1), new Object[] { ModItems.detonator, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
addShapelessAuto(new ItemStack(ModItems.detonator_laser, 1), new Object[] { ModItems.rangefinder, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), RUBBER.ingot(), GOLD.wireDense() }); addShapelessAuto(new ItemStack(ModItems.detonator_laser, 1), new Object[] { ModItems.rangefinder, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), RUBBER.ingot(), GOLD.wireDense() });

View File

@ -1,5 +1,6 @@
package com.hbm.main; package com.hbm.main;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ICustomBlockHighlight; import com.hbm.blocks.ICustomBlockHighlight;
import com.hbm.config.ClientConfig; import com.hbm.config.ClientConfig;
import com.hbm.config.RadiationConfig; import com.hbm.config.RadiationConfig;
@ -414,6 +415,16 @@ public class ModEventHandlerRenderer {
public void onDrawHighlight(DrawBlockHighlightEvent event) { public void onDrawHighlight(DrawBlockHighlightEvent event) {
EntityPlayer player = MainRegistry.proxy.me(); EntityPlayer player = MainRegistry.proxy.me();
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemBlock) {
Block b = Block.getBlockFromItem(player.getHeldItem().getItem());
if(b instanceof BlockDummyable) {
((BlockDummyable) b).drawPlacementHighlight(player, event.partialTicks);
event.setCanceled(true);
return;
}
}
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_drill) { if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_drill) {
XFactoryDrill.drawBlockHighlight(player, player.getHeldItem(), event.partialTicks); XFactoryDrill.drawBlockHighlight(player, player.getHeldItem(), event.partialTicks);
event.setCanceled(true); event.setCanceled(true);

View File

@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import java.util.List; import java.util.List;
@ -92,6 +93,10 @@ public class NEIConfig implements IConfigureNEI {
API.hideItem(new ItemStack(ModBlocks.conveyor_double)); API.hideItem(new ItemStack(ModBlocks.conveyor_double));
API.hideItem(new ItemStack(ModBlocks.conveyor_triple)); API.hideItem(new ItemStack(ModBlocks.conveyor_triple));
API.hideItem(new ItemStack(ModBlocks.brick_forgotten, 1, OreDictionary.WILDCARD_VALUE));
API.hideItem(new ItemStack(ModBlocks.brick_forgotten_lock, 1, OreDictionary.WILDCARD_VALUE));
API.hideItem(new ItemStack(ModItems.coal_eternal));
API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() { API.registerHighlightIdentifier(ModBlocks.plushie, new IHighlightHandler() {
@Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { @Override public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) {
int x = mop.blockX; int x = mop.blockX;

View File

@ -272,6 +272,7 @@ public class ResourceManager {
public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")).noSmooth().asVBO(); public static final IModelCustom radar = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar.obj")).noSmooth().asVBO();
public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj")).noSmooth().asVBO(); public static final IModelCustom radar_large = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_large.obj")).noSmooth().asVBO();
public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")).noSmooth().asVBO(); public static final IModelCustom radar_screen = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/radar_screen.obj")).noSmooth().asVBO();
public static final IModelCustom satlink = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/satlink.obj")).noSmooth().asVBO();
//Forcefield //Forcefield
public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj")); public static final IModelCustom forcefield_top = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/forcefield_top.obj"));
@ -407,6 +408,7 @@ public class ResourceManager {
//Network //Network
public static final IModelCustom connector = new HFRWavefrontObject("models/network/connector.obj").noSmooth().asVBO(); public static final IModelCustom connector = new HFRWavefrontObject("models/network/connector.obj").noSmooth().asVBO();
public static final IModelCustom connector_super = new HFRWavefrontObject("models/network/connector_super.obj").noSmooth().asVBO(); public static final IModelCustom connector_super = new HFRWavefrontObject("models/network/connector_super.obj").noSmooth().asVBO();
public static final IModelCustom pylon = new HFRWavefrontObject("models/network/pylon.obj").noSmooth().asVBO();
public static final IModelCustom pylon_medium = new HFRWavefrontObject("models/network/pylon_medium.obj").noSmooth().asVBO(); public static final IModelCustom pylon_medium = new HFRWavefrontObject("models/network/pylon_medium.obj").noSmooth().asVBO();
public static final IModelCustom pylon_large = new HFRWavefrontObject("models/network/pylon_large.obj").noSmooth().asVBO(); public static final IModelCustom pylon_large = new HFRWavefrontObject("models/network/pylon_large.obj").noSmooth().asVBO();
public static final IModelCustom substation = new HFRWavefrontObject("models/network/substation.obj").asVBO(); public static final IModelCustom substation = new HFRWavefrontObject("models/network/substation.obj").asVBO();
@ -746,6 +748,7 @@ public class ResourceManager {
public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png"); public static final ResourceLocation radar_dish_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_dish.png");
public static final ResourceLocation radar_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_large.png"); public static final ResourceLocation radar_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_large.png");
public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png"); public static final ResourceLocation radar_screen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radar_screen.png");
public static final ResourceLocation satlink_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/satlink.png");
//Forcefield //Forcefield
public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png"); public static final ResourceLocation forcefield_base_tex = new ResourceLocation(RefStrings.MODID, "textures/models/forcefield_base.png");
@ -859,6 +862,8 @@ public class ResourceManager {
//Electricity //Electricity
public static final ResourceLocation connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector.png"); public static final ResourceLocation connector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector.png");
public static final ResourceLocation connector_super_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector_super.png"); public static final ResourceLocation connector_super_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/connector_super.png");
public static final ResourceLocation pylon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon.png");
public static final ResourceLocation pylon_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_steel.png");
public static final ResourceLocation pylon_medium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium.png"); public static final ResourceLocation pylon_medium_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium.png");
public static final ResourceLocation pylon_medium_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium_steel.png"); public static final ResourceLocation pylon_medium_steel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_medium_steel.png");
public static final ResourceLocation pylon_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_large.png"); public static final ResourceLocation pylon_large_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/pylon_large.png");

View File

@ -82,6 +82,7 @@ public class StructureManager {
public static final NBTStructure forest_chem = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/forest_chem.nbt")); public static final NBTStructure forest_chem = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/forest_chem.nbt"));
public static final NBTStructure plane1 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed_plane_1.nbt")); public static final NBTStructure plane1 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed_plane_1.nbt"));
public static final NBTStructure plane2 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed_plane_2.nbt")); public static final NBTStructure plane2 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed_plane_2.nbt"));
public static final NBTStructure tower_base = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/tower_base.nbt"));
public static final NBTStructure factory = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/factory.nbt")); public static final NBTStructure factory = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/factory.nbt"));
public static final NBTStructure crane = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crane_mod.nbt")); public static final NBTStructure crane = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crane_mod.nbt"));

View File

@ -72,14 +72,15 @@ public class ParticleAshes extends EntityFXRotating {
float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ); float pZ = (float) (this.prevPosZ + (this.posZ - this.prevPosZ) * (double) interp - interpPosZ);
Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch); Vec3NT vec = new Vec3NT(particleScale, 0, particleScale).rotateAroundYDeg(this.rotationPitch);
double yOff = 0.09;
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV()); tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMaxV());
vec.rotateAroundYDeg(90); vec.rotateAroundYDeg(90);
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV()); tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMaxU(), particleIcon.getMinV());
vec.rotateAroundYDeg(90); vec.rotateAroundYDeg(90);
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV()); tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMinV());
vec.rotateAroundYDeg(90); vec.rotateAroundYDeg(90);
tess.addVertexWithUV(pX + vec.xCoord, pY + 0.05, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV()); tess.addVertexWithUV(pX + vec.xCoord, pY - yOff, pZ + vec.zCoord, particleIcon.getMinU(), particleIcon.getMaxV());
} else { } else {
renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale); renderParticleRotated(tess, interp, sX, sY, sZ, dX, dZ, this.particleScale);
} }

View File

@ -217,6 +217,10 @@ public class QMAWLoader implements IResourceManagerReloadListener {
QMAWLoader.triggers.put(new ComparableStack(trigger).makeSingular(), qmaw); QMAWLoader.triggers.put(new ComparableStack(trigger).makeSingular(), qmaw);
} }
} }
if(json.has("noindex") && json.get("noindex").getAsBoolean()) {
qmaw.noIndex();
}
if(!qmaw.contents.isEmpty()) { if(!qmaw.contents.isEmpty()) {
QMAWLoader.qmaw.put(name, qmaw); QMAWLoader.qmaw.put(name, qmaw);

View File

@ -5,10 +5,13 @@ import java.util.HashMap;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class QuickManualAndWiki { public class QuickManualAndWiki {
public String name; public String name;
public ItemStack icon; public ItemStack icon;
/** Removes this manual from the calculator search feature */
public boolean noIndex = false;
public HashMap<String, String> title = new HashMap(); public HashMap<String, String> title = new HashMap();
public HashMap<String, String> contents = new HashMap(); public HashMap<String, String> contents = new HashMap();
@ -30,4 +33,9 @@ public class QuickManualAndWiki {
this.contents.put(lang, contents); this.contents.put(lang, contents);
return this; return this;
} }
public QuickManualAndWiki noIndex() {
this.noIndex = true;
return this;
}
} }

View File

@ -14,12 +14,12 @@ import net.minecraft.util.ResourceLocation;
public class RenderRBMKDebris extends Render { public class RenderRBMKDebris extends Render {
//for fallback only //for fallback only
private static final ResourceLocation tex_base = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_side.png"); public static final ResourceLocation tex_base = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_side.png");
private static final ResourceLocation tex_element = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_fuel.png"); public static final ResourceLocation tex_element = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_fuel.png");
private static final ResourceLocation tex_control = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png"); public static final ResourceLocation tex_control = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_control.png");
private static final ResourceLocation tex_blank = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_side.png"); public static final ResourceLocation tex_blank = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_side.png");
private static final ResourceLocation tex_lid = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_cover_top.png"); public static final ResourceLocation tex_lid = new ResourceLocation(RefStrings.MODID + ":textures/blocks/rbmk/rbmk_blank_cover_top.png");
private static final ResourceLocation tex_graphite = new ResourceLocation(RefStrings.MODID + ":textures/blocks/block_graphite.png"); public static final ResourceLocation tex_graphite = new ResourceLocation(RefStrings.MODID + ":textures/blocks/block_graphite.png");
@Override @Override
public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { public void doRender(Entity entity, double x, double y, double z, float f0, float f1) {

View File

@ -1,63 +0,0 @@
//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0
// Copyright (C) 2017 Minecraft-SMP.de
// This file is for Flan's Flying Mod Version 4.0.x+
// Model: Pylon
// Model Creator:
// Created on:13.06.2017 - 11:17:46
// Last changed on: 13.06.2017 - 11:17:46
package com.hbm.render.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelPylon extends ModelBase {
public ModelRenderer[] pylonModel;
public ModelPylon() {
this.textureWidth = 64;
this.textureHeight = 128;
this.pylonModel = new ModelRenderer[4];
this.pylonModel[0] = new ModelRenderer(this, 0, 96); // Box 0
this.pylonModel[1] = new ModelRenderer(this, 1, 1); // Box 1
this.pylonModel[2] = new ModelRenderer(this, 24, 1); // Box 2
this.pylonModel[3] = new ModelRenderer(this, 25, 17); // Box 3
this.pylonModel[0].addBox(0F, 0F, 0F, 16, 16, 16, 0F); // Box 0
this.pylonModel[0].setRotationPoint(-8F, -6F, -8F);
this.pylonModel[1].addBox(0F, 0F, 0F, 4, 73, 4, 0F); // Box 1
this.pylonModel[1].setRotationPoint(-2F, -79F, -2F);
this.pylonModel[2].addBox(0F, 0F, 0F, 6, 4, 6, 0F); // Box 2
this.pylonModel[2].setRotationPoint(-3F, -74F, -3F);
this.pylonModel[3].addBox(0F, 0F, 0F, 6, 2, 6, 0F); // Box 3
this.pylonModel[3].setRotationPoint(-3F, -78F, -3F);
for (ModelRenderer modelRenderer : this.pylonModel) {
modelRenderer.setTextureSize(this.textureWidth, this.textureHeight);
modelRenderer.mirror = true;
}
}
@Override
public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor) {
for(int i = 0; i < 4; i++) {
this.pylonModel[i].render(scaleFactor);
}
}
public void renderAll(float scaleFactor) {
for(int i = 0; i < 4; i++) {
this.pylonModel[i].render(scaleFactor);
}
}
}

View File

@ -17,6 +17,9 @@ import com.hbm.render.util.BeamPronter.EnumWaveType;
import com.hbm.tileentity.machine.storage.TileEntityBatterySocket; import com.hbm.tileentity.machine.storage.TileEntityBatterySocket;
import com.hbm.util.EnumUtil; import com.hbm.util.EnumUtil;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@ -28,6 +31,8 @@ import net.minecraftforge.client.IItemRenderer;
public class RenderBatterySocket extends TileEntitySpecialRenderer implements IItemRendererProvider { public class RenderBatterySocket extends TileEntitySpecialRenderer implements IItemRendererProvider {
private static ResourceLocation blorbo = new ResourceLocation(RefStrings.MODID, "textures/models/horse/sunburst.png"); private static ResourceLocation blorbo = new ResourceLocation(RefStrings.MODID, "textures/models/horse/sunburst.png");
public static EntityItem dummy;
@Override @Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
@ -78,6 +83,34 @@ public class RenderBatterySocket extends TileEntitySpecialRenderer implements II
Random rand = new Random(tile.getWorldObj().getTotalWorldTime() / 5); Random rand = new Random(tile.getWorldObj().getTotalWorldTime() / 5);
rand.nextBoolean(); rand.nextBoolean();
for(int i = -1; i <= 1; i += 2) for(int j = -1; j <= 1; j += 2) if(rand.nextInt(4) == 0) {
GL11.glPushMatrix();
GL11.glTranslated(0, 0.75, 0);
BeamPronter.prontBeam(Vec3.createVectorHelper(0.4375 * i, 1.1875, 0.4375 * j), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 15, 0.0625F, 3, 0.025F);
BeamPronter.prontBeam(Vec3.createVectorHelper(0.4375 * i, 1.1875, 0.4375 * j), EnumWaveType.RANDOM, EnumBeamType.SOLID, 0x404040, 0x002040, (int)(System.currentTimeMillis() % 1000) / 50, 1, 0, 3, 0.025F);
GL11.glPopMatrix();
}
} else {
GL11.glPushMatrix();
GL11.glTranslated(0, 0.5, 0);
GL11.glScaled(1.5, 1.5, 1.5);
GL11.glRotated((socket.getWorldObj().getTotalWorldTime() % 360 + interp) * 2.5D, 0, -1, 0);
if(dummy == null || dummy.worldObj != tile.getWorldObj()) {
dummy = new EntityItem(tile.getWorldObj(), 0, 0, 0, render);
}
dummy.setEntityItemStack(render);
dummy.hoverStart = 0.0F;
RenderItem.renderInFrame = true;
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F);
RenderItem.renderInFrame = false;
GL11.glPopMatrix();
Random rand = new Random(tile.getWorldObj().getTotalWorldTime() / 5);
rand.nextBoolean();
for(int i = -1; i <= 1; i += 2) for(int j = -1; j <= 1; j += 2) if(rand.nextInt(4) == 0) { for(int i = -1; i <= 1; i += 2) for(int j = -1; j <= 1; j += 2) if(rand.nextInt(4) == 0) {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated(0, 0.75, 0); GL11.glTranslated(0, 0.75, 0);

View File

@ -29,7 +29,7 @@ public class RenderLPW2 extends TileEntitySpecialRenderer {
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
} }
long time = te.getWorldObj().getTotalWorldTime(); long time = te.getWorldObj().getTotalWorldTime() % 1000000;
double swayTimer = ((time + interp) / 3D) % (Math.PI * 4); double swayTimer = ((time + interp) / 3D) % (Math.PI * 4);
double sway = (Math.sin(swayTimer) + Math.sin(swayTimer * 2) + Math.sin(swayTimer * 4) + 2.23255D) * 0.5; double sway = (Math.sin(swayTimer) + Math.sin(swayTimer * 2) + Math.sin(swayTimer * 4) + 2.23255D) * 0.5;

View File

@ -2,38 +2,77 @@ package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings; import com.hbm.blocks.ModBlocks;
import com.hbm.render.model.ModelPylon; import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import com.hbm.tileentity.network.TileEntityPylon; import com.hbm.tileentity.network.TileEntityPylon;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer;
public class RenderPylon extends RenderPylonBase { public class RenderPylon extends RenderPylonBase implements IItemRendererProvider {
private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelPylon.png");
private ModelPylon pylon; @Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
public RenderPylon() { GL11.glPushMatrix();
this.pylon = new ModelPylon(); GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
TileEntityPylon pylon = (TileEntityPylon)tile;
if(tile.getBlockType() == ModBlocks.red_pylon)
bindTexture(ResourceManager.pylon_tex);
else
bindTexture(ResourceManager.pylon_steel_tex);
if(tile.getBlockType() == ModBlocks.red_pylon )
ResourceManager.pylon.renderPart("Pylon");
else
ResourceManager.pylon.renderPart("Pylon_steel");
GL11.glPopMatrix();
GL11.glPushMatrix();
this.renderLinesGeneric(pylon, x, y, z);
GL11.glPopMatrix();
} }
@Override @Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { public Item[] getItemsForRenderer() {
TileEntityPylon pyl = (TileEntityPylon)te; return new Item[] {
Item.getItemFromBlock(ModBlocks.red_pylon),
GL11.glEnable(GL11.GL_LIGHTING); Item.getItemFromBlock(ModBlocks.red_pylon_steel),
};
GL11.glPushMatrix(); }
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F - ((1F / 16F) * 14F), (float) z + 0.5F);
GL11.glRotatef(180, 0F, 0F, 1F); @Override
bindTexture(texture); public Item getItemForRenderer() {
this.pylon.renderAll(0.0625F); return Item.getItemFromBlock(ModBlocks.red_pylon);
GL11.glPopMatrix(); }
GL11.glPushMatrix(); @Override
this.renderLinesGeneric(pyl, x, y, z); public IItemRenderer getRenderer() {
GL11.glPopMatrix(); return new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -5, 0);
GL11.glScaled(2.9, 2.9, 2.9);
}
public void renderCommonWithStack(ItemStack stack) {
GL11.glScaled(1, 1, 1);
if(stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon))
bindTexture(ResourceManager.pylon_tex);
else
bindTexture(ResourceManager.pylon_steel_tex);
if(stack.getItem() == Item.getItemFromBlock(ModBlocks.red_pylon) )
ResourceManager.pylon.renderPart("Pylon");
else
ResourceManager.pylon.renderPart("Pylon_steel");
}
};
} }
} }

View File

@ -0,0 +1,77 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ModBlocks;
import com.hbm.main.ResourceManager;
import com.hbm.render.item.ItemRenderBase;
import com.hbm.tileentity.machine.TileEntityMachineSatLink;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.common.util.ForgeDirection;
public class RenderSatLink extends TileEntitySpecialRenderer implements IItemRendererProvider {
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glRotatef(180, 0F, 1F, 0F);
TileEntityMachineSatLink link = (TileEntityMachineSatLink) tile;
ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata() - 10);
ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN);
GL11.glTranslated((dir.offsetX + rot.offsetX) * 0.5, 0, (dir.offsetZ + rot.offsetZ) * 0.5);
float r = link.prevRot + (link.rot - link.prevRot) * interp;
float l = link.prevLift + (link.lift - link.prevLift) * interp;
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.satlink_tex);
ResourceManager.satlink.renderPart("Base");
GL11.glRotated(r, 0, 1, 0);
ResourceManager.satlink.renderPart("Rotor");
GL11.glTranslated(0, 7.375, 0);
GL11.glRotated(l, 0, 0, 1);
GL11.glTranslated(0, -7.375, 0);
ResourceManager.satlink.renderPart("Dish");
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
}
@Override
public Item getItemForRenderer() {
return Item.getItemFromBlock(ModBlocks.machine_satlink);
}
@Override
public IItemRenderer getRenderer() {
return new ItemRenderBase( ) {
public void renderInventory() {
GL11.glTranslated(0, -5, 0);
GL11.glScaled(3.5, 3.5, 3.5);
}
public void renderCommonWithStack(ItemStack item) {
GL11.glScaled(0.5, 0.5, 0.5);
GL11.glShadeModel(GL11.GL_SMOOTH);
bindTexture(ResourceManager.satlink_tex);
ResourceManager.satlink.renderPart("Base");
GL11.glRotated(15, 0, 1, 0);
ResourceManager.satlink.renderPart("Rotor");
GL11.glTranslated(0, 7.375, 0);
GL11.glRotated(-45, 0, 0, 1);
GL11.glTranslated(0, -7.375, 0);
ResourceManager.satlink.renderPart("Dish");
GL11.glShadeModel(GL11.GL_FLAT);
}};
}
}

View File

@ -23,18 +23,18 @@ public class SatelliteSavedData extends WorldSavedData {
/** /**
* Default constructor for satellites map data. * Default constructor for satellites map data.
*/ */
public SatelliteSavedData() { public SatelliteSavedData() {
super("satellites"); super("satellites");
this.markDirty(); this.markDirty();
} }
public boolean isFreqTaken(int freq) { public boolean isFreqTaken(int freq) {
return getSatFromFreq(freq) != null; return getSatFromFreq(freq) != null;
} }
public Satellite getSatFromFreq(int freq) { public Satellite getSatFromFreq(int freq) {
return sats.get(freq); return sats.get(freq);
} }
@Override @Override
public void readFromNBT(NBTTagCompound nbt) { public void readFromNBT(NBTTagCompound nbt) {
@ -53,28 +53,28 @@ public class SatelliteSavedData extends WorldSavedData {
@Override @Override
public void writeToNBT(NBTTagCompound nbt) { public void writeToNBT(NBTTagCompound nbt) {
nbt.setInteger("satCount", sats.size()); nbt.setInteger("satCount", sats.size());
int i = 0; int i = 0;
for(Entry<Integer, Satellite> struct : sats.entrySet()) { for(Entry<Integer, Satellite> struct : sats.entrySet()) {
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
struct.getValue().writeToNBT(data); struct.getValue().writeToNBT(data);
nbt.setInteger("sat_id_" + i, struct.getValue().getID()); nbt.setInteger("sat_id_" + i, struct.getValue().getID());
nbt.setTag("sat_data_" + i, data); nbt.setTag("sat_data_" + i, data);
nbt.setInteger("sat_freq_" + i, struct.getKey()); nbt.setInteger("sat_freq_" + i, struct.getKey());
i++; i++;
} }
} }
public static SatelliteSavedData getData(World worldObj) { public static SatelliteSavedData getData(World worldObj) {
SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); SatelliteSavedData data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites");
if(data == null) { if(data == null) {
worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData());
data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites");
} }
return data; return data;
} }
} }

View File

@ -133,6 +133,7 @@ public class TileMappings {
put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen"); put(TileEntityMachineRadarScreen.class, "tileentity_radar_screen");
put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); put(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster");
put(TileEntityMachineSatLinker.class, "tileentity_satlinker"); put(TileEntityMachineSatLinker.class, "tileentity_satlinker");
put(TileEntityMachineSatLink.class, "tileentity_satlink");
put(TileEntityReactorResearch.class, "tileentity_small_reactor"); put(TileEntityReactorResearch.class, "tileentity_small_reactor");
put(TileEntityVaultDoorMigration.class, "tileentity_vault_door"); put(TileEntityVaultDoorMigration.class, "tileentity_vault_door");
put(TileEntityRadiobox.class, "tileentity_radio_broadcaster"); put(TileEntityRadiobox.class, "tileentity_radio_broadcaster");

View File

@ -6,6 +6,7 @@ import java.util.HashMap;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.FluidContainerRegistry;
import com.hbm.inventory.container.ContainerMachineDiesel; import com.hbm.inventory.container.ContainerMachineDiesel;
import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.FluidType;
@ -28,10 +29,8 @@ import com.hbm.util.CompatEnergyControl;
import api.hbm.energymk2.IBatteryItem; import api.hbm.energymk2.IBatteryItem;
import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.energymk2.IEnergyProviderMK2;
import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluidmk2.IFluidStandardTransceiverMK2;
import api.hbm.tile.IInfoProviderEC; import api.hbm.tile.IInfoProviderEC;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
@ -40,8 +39,9 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable { public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyProviderMK2, IFluidStandardTransceiverMK2, IControlReceiver, IConfigurableMachine, IGUIProvider, IInfoProviderEC, IFluidCopiable {
public boolean isOn = false;
public long power; public long power;
public long powerCap = maxPower; public long powerCap = maxPower;
public FluidTank tank; public FluidTank tank;
@ -50,8 +50,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
private AudioWrapper audio; private AudioWrapper audio;
/* CONFIGURABLE CONSTANTS */ /* CONFIGURABLE CONSTANTS */
public static long maxPower = 50000; public static long maxPower = 50_000;
public static int fluidCap = 16000; public static int fuelCap = 16_000;
public static HashMap<FuelGrade, Double> fuelEfficiency = new HashMap(); public static HashMap<FuelGrade, Double> fuelEfficiency = new HashMap();
static { static {
fuelEfficiency.put(FuelGrade.MEDIUM, 0.5D); fuelEfficiency.put(FuelGrade.MEDIUM, 0.5D);
@ -63,9 +63,45 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
private static final int[] slots_bottom = new int[] { 1, 2 }; private static final int[] slots_bottom = new int[] { 1, 2 };
private static final int[] slots_side = new int[] { 2 }; private static final int[] slots_side = new int[] { 2 };
@Override
public String getConfigName() {
return "dieselgen";
}
@Override
public void readIfPresent(JsonObject obj) {
maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower);
fuelCap = IConfigurableMachine.grab(obj, "I:fuelCap", fuelCap);
if(obj.has("D[:efficiency")) {
JsonArray array = obj.get("D[:efficiency").getAsJsonArray();
for(FuelGrade grade : FuelGrade.values()) {
fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble());
}
}
}
@Override
public void writeConfig(JsonWriter writer) throws IOException {
writer.name("L:powerCap").value(maxPower);
writer.name("I:fuelCap").value(fuelCap);
String info = "Fuel grades in order: ";
for(FuelGrade grade : FuelGrade.values()) info += grade.name() + " ";
info = info.trim();
writer.name("INFO").value(info);
writer.name("D[:efficiency").beginArray().setIndent("");
for(FuelGrade grade : FuelGrade.values()) {
double d = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0.0D;
writer.value(d);
}
writer.endArray().setIndent(" ");
}
public TileEntityMachineDiesel() { public TileEntityMachineDiesel() {
super(5, 100); super(4, 100);
tank = new FluidTank(Fluids.DIESEL, 4_000); tank = new FluidTank(Fluids.DIESEL, fuelCap);
} }
@Override @Override
@ -84,6 +120,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
public void readFromNBT(NBTTagCompound nbt) { public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt); super.readFromNBT(nbt);
this.isOn = nbt.getBoolean("isOn");
this.power = nbt.getLong("powerTime"); this.power = nbt.getLong("powerTime");
this.powerCap = nbt.getLong("powerCap"); this.powerCap = nbt.getLong("powerCap");
tank.readFromNBT(nbt, "fuel"); tank.readFromNBT(nbt, "fuel");
@ -92,7 +129,8 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
@Override @Override
public void writeToNBT(NBTTagCompound nbt) { public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt); super.writeToNBT(nbt);
nbt.setBoolean("isOn", isOn);
nbt.setLong("powerTime", power); nbt.setLong("powerTime", power);
nbt.setLong("powerCap", powerCap); nbt.setLong("powerCap", powerCap);
tank.writeToNBT(nbt, "fuel"); tank.writeToNBT(nbt, "fuel");
@ -110,9 +148,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
return false; return false;
} }
public long getPowerScaled(long i) { public long getPowerScaled(long i) { return (power * i) / powerCap; }
return (power * i) / powerCap;
}
@Override @Override
public void updateEntity() { public void updateEntity() {
@ -120,29 +156,18 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
if(!worldObj.isRemote) { if(!worldObj.isRemote) {
this.wasOn = false; this.wasOn = false;
tank.setType(3, slots);
tank.loadTank(0, 1, slots);
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.tryProvide(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
} }
//Tank Management
FluidType last = tank.getTankType();
if(tank.setType(3, 4, slots)) this.unsubscribeToAllAround(last, this);
tank.loadTank(0, 1, slots);
this.subscribeToAllAround(tank.getTankType(), this);
FluidType type = tank.getTankType();
if(type == Fluids.NITAN)
powerCap = maxPower * 10;
else
powerCap = maxPower;
// Battery Item
power = Library.chargeItemsFromTE(slots, 2, power, powerCap); power = Library.chargeItemsFromTE(slots, 2, power, powerCap);
if(isOn) generate();
generate();
this.networkPackNT(50); this.networkPackNT(50);
} else { } else {
@ -196,6 +221,7 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
super.serialize(buf); super.serialize(buf);
buf.writeInt((int) power); buf.writeInt((int) power);
buf.writeInt((int) powerCap); buf.writeInt((int) powerCap);
buf.writeBoolean(isOn);
buf.writeBoolean(wasOn); buf.writeBoolean(wasOn);
tank.serialize(buf); tank.serialize(buf);
} }
@ -205,17 +231,13 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
super.deserialize(buf); super.deserialize(buf);
this.power = buf.readInt(); this.power = buf.readInt();
this.powerCap = buf.readInt(); this.powerCap = buf.readInt();
this.isOn = buf.readBoolean();
this.wasOn = buf.readBoolean(); this.wasOn = buf.readBoolean();
tank.deserialize(buf); tank.deserialize(buf);
} }
public boolean hasAcceptableFuel() { public boolean hasAcceptableFuel() { return getHEFromFuel() > 0; }
return getHEFromFuel() > 0; public long getHEFromFuel() { return getHEFromFuel(tank.getTankType()); }
}
public long getHEFromFuel() {
return getHEFromFuel(tank.getTankType());
}
public static long getHEFromFuel(FluidType type) { public static long getHEFromFuel(FluidType type) {
@ -234,28 +256,36 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
public void generate() { public void generate() {
if(!this.isOn) return;
if(this.worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) return; if(this.worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) return;
if(!hasAcceptableFuel()) return;
if(tank.getFill() <= 0) return;
if(hasAcceptableFuel()) { this.wasOn = true;
if (tank.getFill() > 0) { tank.setFill(tank.getFill() - 1);
this.wasOn = true; if(tank.getFill() < 0) tank.setFill(0);
tank.setFill(tank.getFill() - 1); if(worldObj.getTotalWorldTime() % 5 == 0) {
if(tank.getFill() < 0) super.pollute(tank.getTankType(), FluidReleaseType.BURN, 5F);
tank.setFill(0);
if(worldObj.getTotalWorldTime() % 5 == 0) {
super.pollute(tank.getTankType(), FluidReleaseType.BURN, 5F);
}
if(power + getHEFromFuel() <= powerCap) {
power += getHEFromFuel();
} else {
power = powerCap;
}
}
} }
if(power + getHEFromFuel() <= powerCap) {
power += getHEFromFuel();
} else {
power = powerCap;
}
}
@Override
public boolean hasPermission(EntityPlayer player) {
return player.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 25;
}
@Override
public void receiveControl(NBTTagCompound data) {
if(data.hasKey("turnOn")) this.isOn = !this.isOn;
this.markChanged();
} }
@Override public long getPower() { return power; } @Override public long getPower() { return power; }
@ -265,57 +295,9 @@ public class TileEntityMachineDiesel extends TileEntityMachinePolluting implemen
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; }
@Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; } @Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; }
@Override @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineDiesel(player.inventory, this); }
public String getConfigName() { @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineDiesel(player.inventory, this); }
return "dieselgen"; @Override public FluidTank[] getSendingTanks() { return this.getSmokeTanks(); }
}
@Override
public void readIfPresent(JsonObject obj) {
maxPower = IConfigurableMachine.grab(obj, "L:powerCap", maxPower);
fluidCap = IConfigurableMachine.grab(obj, "I:fuelCap", fluidCap);
if(obj.has("D[:efficiency")) {
JsonArray array = obj.get("D[:efficiency").getAsJsonArray();
for(FuelGrade grade : FuelGrade.values()) {
fuelEfficiency.put(grade, array.get(grade.ordinal()).getAsDouble());
}
}
}
@Override
public void writeConfig(JsonWriter writer) throws IOException {
writer.name("L:powerCap").value(maxPower);
writer.name("I:fuelCap").value(fluidCap);
String info = "Fuel grades in order: ";
for(FuelGrade grade : FuelGrade.values()) info += grade.name() + " ";
info = info.trim();
writer.name("INFO").value(info);
writer.name("D[:efficiency").beginArray().setIndent("");
for(FuelGrade grade : FuelGrade.values()) {
double d = fuelEfficiency.containsKey(grade) ? fuelEfficiency.get(grade) : 0.0D;
writer.value(d);
}
writer.endArray().setIndent(" ");
}
@Override
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new ContainerMachineDiesel(player.inventory, this);
}
@Override
@SideOnly(Side.CLIENT)
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
return new GUIMachineDiesel(player.inventory, this);
}
@Override
public FluidTank[] getSendingTanks() {
return this.getSmokeTanks();
}
@Override @Override
public void provideExtraInfo(NBTTagCompound data) { public void provideExtraInfo(NBTTagCompound data) {

View File

@ -0,0 +1,120 @@
package com.hbm.tileentity.machine;
import com.hbm.saveddata.SatelliteSavedData;
import com.hbm.tileentity.TileEntityTickingBase;
import api.hbm.redstoneoverradio.IRORInteractive;
import api.hbm.redstoneoverradio.IRORValueProvider;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import io.netty.buffer.ByteBuf;
import net.minecraft.util.AxisAlignedBB;
public class TileEntityMachineSatLink extends TileEntityTickingBase implements IRORValueProvider, IRORInteractive {
public boolean connected;
public int freq;
public float rot = INACTIVE_ROT;
public float prevRot = INACTIVE_ROT;
public float lift = INACTIVE_LIFT;
public float prevLift = INACTIVE_LIFT;
public static final float SPEED = 0.25F;
public static final float ACTIVE_ROT = -15F;
public static final float ACTIVE_LIFT = -45F;
public static final float INACTIVE_ROT = 0F;
public static final float INACTIVE_LIFT = -85F;
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
this.connected = false;
if(worldObj.getHeightValue(xCoord, zCoord) <= yCoord) {
SatelliteSavedData dat = SatelliteSavedData.getData(worldObj);
this.connected = dat.isFreqTaken(freq);
}
this.networkPackNT(150);
} else {
this.prevRot = this.rot;
this.prevLift = this.lift;
float targetR = this.connected ? ACTIVE_ROT : INACTIVE_ROT;
float targetL = this.connected ? ACTIVE_LIFT : INACTIVE_LIFT;
if(Math.abs(rot - targetR) <= SPEED) rot = targetR;
else if(rot < targetR) rot += SPEED;
else if(rot > targetR) rot -= SPEED;
if(Math.abs(lift - targetL) <= SPEED) lift = targetL;
else if(lift < targetL) lift += SPEED;
else if(lift > targetL) lift -= SPEED;
}
}
@Override
public void serialize(ByteBuf buf) {
super.serialize(buf);
buf.writeBoolean(connected);
buf.writeInt(freq);
}
@Override
public void deserialize(ByteBuf buf) {
super.deserialize(buf);
this.connected = buf.readBoolean();
this.freq = buf.readInt();
}
AxisAlignedBB bb = null;
@Override
public AxisAlignedBB getRenderBoundingBox() {
if(bb == null) {
bb = AxisAlignedBB.getBoundingBox(
xCoord - 2,
yCoord,
zCoord - 2,
xCoord + 3,
yCoord + 10,
zCoord + 3
);
}
return bb;
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
@Override
public String[] getFunctionInfo() {
return new String[] {
PREFIX_VALUE + "connected",
PREFIX_VALUE + "freq",
PREFIX_VALUE + "rx",
PREFIX_FUNCTION + "setfreq" + NAME_SEPARATOR + "freq",
PREFIX_FUNCTION + "tx" + NAME_SEPARATOR + "payload"
};
}
@Override
public String provideRORValue(String name) {
return null;
}
@Override
public String runRORFunction(String name, String[] params) {
return null;
}
}

View File

@ -655,6 +655,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
PREFIX_VALUE + "rods", PREFIX_VALUE + "rods",
PREFIX_VALUE + "coreheat", PREFIX_VALUE + "coreheat",
PREFIX_VALUE + "hullheat", PREFIX_VALUE + "hullheat",
PREFIX_VALUE + "coldbuf",
PREFIX_VALUE + "hotbuf",
PREFIX_VALUE + "flux", PREFIX_VALUE + "flux",
PREFIX_VALUE + "depletion", PREFIX_VALUE + "depletion",
PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent", PREFIX_FUNCTION + "setrods" + NAME_SEPARATOR + "percent",
@ -671,6 +673,8 @@ public class TileEntityPWRController extends TileEntityMachineBase implements IG
if((PREFIX_VALUE + "rods").equals(name)) return "" + (int) (100 - this.rodLevel); // why the fuck did i invert this again? if((PREFIX_VALUE + "rods").equals(name)) return "" + (int) (100 - this.rodLevel); // why the fuck did i invert this again?
if((PREFIX_VALUE + "coreheat").equals(name)) return "" + this.coreHeat; if((PREFIX_VALUE + "coreheat").equals(name)) return "" + this.coreHeat;
if((PREFIX_VALUE + "hullheat").equals(name)) return "" + this.hullHeat; if((PREFIX_VALUE + "hullheat").equals(name)) return "" + this.hullHeat;
if((PREFIX_VALUE + "coldbuf").equals(name)) return "" + this.tanks[0].getFill();
if((PREFIX_VALUE + "hotbuf").equals(name)) return "" + this.tanks[1].getFill();
if((PREFIX_VALUE + "flux").equals(name)) return "" + (int) this.flux; if((PREFIX_VALUE + "flux").equals(name)) return "" + (int) this.flux;
if((PREFIX_VALUE + "depletion").equals(name)) return "" + (int) (this.progress * 100 / this.processTime); if((PREFIX_VALUE + "depletion").equals(name)) return "" + (int) (this.progress * 100 / this.processTime);
return null; return null;

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