Merge branch 'master' into paintable-pneumatic-tubes
40
changelog
@ -1,19 +1,27 @@
|
||||
## Added
|
||||
* New assembler
|
||||
* Features a brand new animated model, GUI and the new recipe selection system
|
||||
* Many recipes have been reworked, with the microcrafting complexity reduced
|
||||
* The redcoil didn't get a recipe. It's gonna die soon.
|
||||
* Neither did the schrabidium transmutator
|
||||
* Balls-o-tron's spawner can now be made without a worm coin, using a silver key instead. This means that, while expensive, it's possible to summon him without finding a jungle dungeon
|
||||
* Blueprins
|
||||
* Replace the journals
|
||||
* Instead of opening them and making a template, they act as a multi template
|
||||
* Blueprints need to remain in the slot, removing them will disable the recipes again
|
||||
|
||||
## Changed
|
||||
* The chemistry achievement now requires the new chemical plant
|
||||
* The new chemical plant can now be used to upgrade the meteorite sword
|
||||
* Fluid containers are now re-registered when using `/ntmreload` which should correctly generate fluid container items for freshly added custom fluids
|
||||
* Recipe configs will no longer try to parse null value recipes, meaing that trailing commas in a recipe config will no longer create an error
|
||||
* Refinery solid byproducts now build up substantially faster
|
||||
* This means fracking solution from standard oil is now a lot more viable
|
||||
* This also makes the volume of oil spent consistent with the NEI handler
|
||||
* Removed levitation unit
|
||||
* Many of NTM's regular building blocks now have forge microblock support
|
||||
* RBMK crane models now conform to the dimensions of the room they're in
|
||||
* Projectile resistance for armor has been renamed to "physical" and now also extends to all direct forms of attack by other entities that don't fall into any other categories (mostly melee attacks)
|
||||
* This should fix the issue where most armors are quite weak against swords
|
||||
* Electric attacks (i.e. tesla cannon) are now in the "energy damage" category
|
||||
* This means that armors that have energy resistance actually properly work against the tesla cannon
|
||||
* Heavy components are being deprecated
|
||||
|
||||
## Fixed
|
||||
* Fixed crash caused by breaking a tool while the fortune or silk touch ability is enabled
|
||||
* Fixed NTM adding mob spawns to the mushroom island
|
||||
* Fixed line break not working on the tip of the day
|
||||
* Fixed an issue where AoE abilities can break bedrock
|
||||
* Fixed chemical factory not saving its water and steam tanks
|
||||
* Fixed siphon not working with some newer machines due to using legacy API
|
||||
* Potentially fixed an incompatibility with Aether due to the loading screen replacement
|
||||
* The loading screen replacement will only run up to 25 times per session, with a fixed delay of 5 seconds minimum
|
||||
* The loading screen replacement can be disabled completely in the config
|
||||
* Fixed gas centrifuge sound persisting when broken or when unloaded
|
||||
* Fixed all centrifuge sounds trying to play even when the player is far away, using up audio slots
|
||||
* Fixed guns that don't have durability always displaying a condition of 0%
|
||||
* Fixed GL state leak caused by skeletons
|
||||
@ -34,6 +34,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -803,6 +804,7 @@ public class ModBlocks {
|
||||
public static Block radio_torch_reader;
|
||||
public static Block radio_torch_controller;
|
||||
public static Block radio_telex;
|
||||
public static Block oc_cable_paintable;
|
||||
|
||||
public static Block conveyor;
|
||||
public static Block conveyor_express;
|
||||
@ -1244,6 +1246,9 @@ public class ModBlocks {
|
||||
public static Block wand_air;
|
||||
public static Block wand_loot;
|
||||
public static Block wand_jigsaw;
|
||||
public static Block wand_logic;
|
||||
|
||||
public static Block logic_block;
|
||||
|
||||
public static Material materialGas = new MaterialGas();
|
||||
|
||||
@ -2339,6 +2344,10 @@ public class ModBlocks {
|
||||
absorber_pink = new BlockAbsorber(Material.iron, 10000F).setBlockName("absorber_pink").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":absorber_pink");
|
||||
decon = new BlockDecon(Material.iron).setBlockName("decon").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":decon_side");
|
||||
|
||||
if (Loader.isModLoaded("OpenComputers")) {
|
||||
oc_cable_paintable = new BlockOpenComputersCablePaintable().setBlockName("oc_cable_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
}
|
||||
|
||||
volcano_core = new BlockVolcano().setBlockName("volcano_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_core");
|
||||
volcano_rad_core = new BlockVolcano().setBlockName("volcano_rad_core").setBlockUnbreakable().setResistance(10000.0F).setCreativeTab(MainRegistry.nukeTab).setBlockTextureName(RefStrings.MODID + ":volcano_rad_core");
|
||||
|
||||
@ -2398,6 +2407,10 @@ public class ModBlocks {
|
||||
wand_air = new BlockWand(Blocks.air).setBlockName("wand_air").setBlockTextureName(RefStrings.MODID + ":wand_air");
|
||||
wand_loot = new BlockWandLoot().setBlockName("wand_loot").setBlockTextureName(RefStrings.MODID + ":wand_loot");
|
||||
wand_jigsaw = new BlockWandJigsaw().setBlockName("wand_jigsaw").setBlockTextureName(RefStrings.MODID + ":wand_jigsaw");
|
||||
wand_logic = new BlockWandLogic().setBlockName("wand_logic").setBlockTextureName(RefStrings.MODID + ":wand_logic");
|
||||
|
||||
logic_block = new LogicBlock().setBlockName("logic_block").setBlockTextureName(RefStrings.MODID + ":logic_block");
|
||||
|
||||
}
|
||||
|
||||
private static void registerBlock() {
|
||||
@ -3528,6 +3541,11 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(gas_explosive, gas_explosive.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(vacuum, vacuum.getUnlocalizedName());
|
||||
|
||||
// OC Compat Items
|
||||
if (Loader.isModLoaded("OpenComputers")) {
|
||||
register(oc_cable_paintable);
|
||||
}
|
||||
|
||||
//???
|
||||
GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName());
|
||||
@ -3545,6 +3563,9 @@ public class ModBlocks {
|
||||
register(wand_air);
|
||||
register(wand_loot);
|
||||
register(wand_jigsaw);
|
||||
register(wand_logic);
|
||||
|
||||
register(logic_block);
|
||||
}
|
||||
|
||||
private static void register(Block b) {
|
||||
|
||||
@ -94,7 +94,7 @@ public class BlockDoorGeneric extends BlockDummyable implements IBomb {
|
||||
|
||||
@Override
|
||||
public void addCollisionBoxesToList(World worldIn, int x, int y, int z, AxisAlignedBB entityBox, List collidingBoxes, Entity entityIn) {
|
||||
AxisAlignedBB box = getBoundingBox(worldIn, x, y ,z);
|
||||
AxisAlignedBB box = getBoundingBox(worldIn, x, y, z, true);
|
||||
box = AxisAlignedBB.getBoundingBox(
|
||||
Math.min(box.minX, box.maxX), Math.min(box.minY, box.maxY), Math.min(box.minZ, box.maxZ),
|
||||
Math.max(box.minX, box.maxX), Math.max(box.minY, box.maxY), Math.max(box.minZ, box.maxZ));
|
||||
@ -113,7 +113,7 @@ public class BlockDoorGeneric extends BlockDummyable implements IBomb {
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
AxisAlignedBB aabb = this.getBoundingBox(world, x, y, z);
|
||||
AxisAlignedBB aabb = this.getBoundingBox(world, x, y, z, true);
|
||||
if(aabb.minX == aabb.maxX && aabb.minY == aabb.maxY && aabb.minZ == aabb.maxZ) return null;
|
||||
return aabb;
|
||||
}
|
||||
@ -121,7 +121,7 @@ public class BlockDoorGeneric extends BlockDummyable implements IBomb {
|
||||
// Enables clicking through the open door
|
||||
@Override
|
||||
public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 startVec, Vec3 endVec) {
|
||||
AxisAlignedBB box = getBoundingBox(world, x, y ,z);
|
||||
AxisAlignedBB box = getBoundingBox(world, x, y, z, false);
|
||||
box = AxisAlignedBB.getBoundingBox(
|
||||
Math.min(box.minX, box.maxX), Math.min(box.minY, box.maxY), Math.min(box.minZ, box.maxZ),
|
||||
Math.max(box.minX, box.maxX), Math.max(box.minY, box.maxY), Math.max(box.minZ, box.maxZ)
|
||||
@ -158,11 +158,11 @@ public class BlockDoorGeneric extends BlockDummyable implements IBomb {
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
return getBoundingBox(world, x, y, z);
|
||||
return getBoundingBox(world, x, y, z, false);
|
||||
//return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 1, z + 1);
|
||||
}
|
||||
|
||||
public AxisAlignedBB getBoundingBox(World world, int x, int y, int z) {
|
||||
public AxisAlignedBB getBoundingBox(World world, int x, int y, int z, boolean forCollision) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
int[] core = this.findCore(world, x, y, z);
|
||||
@ -173,7 +173,7 @@ public class BlockDoorGeneric extends BlockDummyable implements IBomb {
|
||||
TileEntity te2 = world.getTileEntity(core[0], core[1], core[2]);
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(te2.getBlockMetadata() - BlockDummyable.offset);
|
||||
BlockPos pos = new BlockPos(x - core[0], y - core[1], z - core[2]).rotate(Rotation.getBlockRotation(dir).add(Rotation.COUNTERCLOCKWISE_90));
|
||||
AxisAlignedBB box = type.getBlockBound(pos.getX(), pos.getY(), pos.getZ(), open);
|
||||
AxisAlignedBB box = type.getBlockBound(pos.getX(), pos.getY(), pos.getZ(), open, forCollision);
|
||||
|
||||
switch(te2.getBlockMetadata() - offset){
|
||||
case 2: return AxisAlignedBB.getBoundingBox(x + 1 - box.minX, y + box.minY, z + 1 - box.minZ, x + 1 - box.maxX, y + box.maxY, z + 1 - box.maxZ);
|
||||
|
||||
343
src/main/java/com/hbm/blocks/generic/BlockWandLogic.java
Normal file
@ -0,0 +1,343 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import com.hbm.blocks.IBlockSideRotation;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.StructureConfig;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.interfaces.ICopiable;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.BufferUtil;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
import com.hbm.world.gen.util.LogicBlockActions;
|
||||
import com.hbm.world.gen.INBTTileEntityTransformable;
|
||||
import com.hbm.world.gen.util.LogicBlockConditions;
|
||||
import com.hbm.world.gen.util.LogicBlockInteractions;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class BlockWandLogic extends BlockContainer implements ILookOverlay, IToolable, ITooltipProvider, IBlockSideRotation, IBomb {
|
||||
|
||||
@SideOnly(Side.CLIENT) protected IIcon iconTop;
|
||||
|
||||
public BlockWandLogic() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":wand_logic");
|
||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":wand_logic_top");
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
return (side <= 1) ? iconTop : blockIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) {
|
||||
if(side == 0) return IBlockSideRotation.topToBottom(world.getBlockMetadata(x, y, z));
|
||||
if(side == 1) return world.getBlockMetadata(x, y, z);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return IBlockSideRotation.getRenderType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
|
||||
|
||||
if (i == 0) world.setBlockMetadataWithNotify(x, y, z, 3, 2);
|
||||
if (i == 1) world.setBlockMetadataWithNotify(x, y, z, 2, 2);
|
||||
if (i == 2) world.setBlockMetadataWithNotify(x, y, z, 0, 2);
|
||||
if (i == 3) world.setBlockMetadataWithNotify(x, y, z, 1, 2);
|
||||
|
||||
ForgeDirection dir = ForgeDirection.UNKNOWN;
|
||||
switch(i){
|
||||
case 0: dir = ForgeDirection.SOUTH;break;
|
||||
case 1: dir = ForgeDirection.WEST; break;
|
||||
case 2: dir = ForgeDirection.NORTH;break;
|
||||
case 3: dir = ForgeDirection.EAST; break;
|
||||
}
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
if(te instanceof TileEntityWandLogic)
|
||||
((TileEntityWandLogic)te).placedRotation = dir.ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) {
|
||||
|
||||
ItemStack stack = player.getHeldItem();
|
||||
|
||||
if (stack != null && stack.getItem() instanceof ItemBlock && !player.isSneaking()) {
|
||||
ItemBlock ib = (ItemBlock) stack.getItem();
|
||||
Block block = ib.field_150939_a;
|
||||
|
||||
if (block.renderAsNormalBlock() && block != this) {
|
||||
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityWandLogic){
|
||||
TileEntityWandLogic logic = (TileEntityWandLogic) tile;
|
||||
logic.disguise = block;
|
||||
logic.disguiseMeta = stack.getItemDamage() & 15;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onBlockActivated(world, x, y, z, player, side, fX, fY, fZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(!(te instanceof TileEntityWandLogic)) return false;
|
||||
|
||||
TileEntityWandLogic logic = (TileEntityWandLogic) te;
|
||||
|
||||
switch(tool) {
|
||||
case SCREWDRIVER:
|
||||
List<String> actionNames = LogicBlockActions.getActionNames();
|
||||
int indexA = actionNames.indexOf(logic.actionID);
|
||||
|
||||
indexA += player.isSneaking() ? -1 : 1;
|
||||
indexA = MathHelper.clamp_int(indexA, 0, actionNames.size() - 1);
|
||||
|
||||
logic.actionID = actionNames.get(indexA);
|
||||
return true;
|
||||
case DEFUSER:
|
||||
List<String> conditionNames = LogicBlockConditions.getConditionNames();
|
||||
int indexC = conditionNames.indexOf(logic.conditionID);
|
||||
|
||||
indexC += player.isSneaking() ? -1 : 1;
|
||||
indexC = MathHelper.clamp_int(indexC, 0, conditionNames.size() - 1);
|
||||
|
||||
logic.conditionID = conditionNames.get(indexC);
|
||||
|
||||
return true;
|
||||
case HAND_DRILL:
|
||||
List<String> interactionNames = LogicBlockInteractions.getInteractionNames();
|
||||
int indexI = interactionNames.indexOf(logic.interactionID);
|
||||
|
||||
indexI += player.isSneaking() ? -1 : 1;
|
||||
indexI = MathHelper.clamp_int(indexI, 0, interactionNames.size() - 1);
|
||||
|
||||
logic.interactionID = interactionNames.get(indexI);
|
||||
|
||||
return true;
|
||||
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(!(te instanceof TileEntityWandLogic)) return;
|
||||
|
||||
TileEntityWandLogic logic = (TileEntityWandLogic) te;
|
||||
|
||||
List<String> text = new ArrayList<>();
|
||||
text.add("Action: " + logic.actionID);
|
||||
text.add("Condition: " + logic.conditionID);
|
||||
text.add("Interaction: " + (logic.interactionID != null ? logic.interactionID : "None"));
|
||||
|
||||
String block;
|
||||
|
||||
if(logic.disguise != null && logic.disguise != Blocks.air)
|
||||
block = I18nUtil.resolveKey(logic.disguise.getUnlocalizedName() + ".name");
|
||||
else
|
||||
block = "None";
|
||||
|
||||
text.add("Disguise Block: " + block);
|
||||
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.GOLD + "Use screwdriver to cycle forwards through the action list, shift click to go back");
|
||||
list.add(EnumChatFormatting.GOLD + "Use defuser to cycle forwards through the condition list, shift click to go back");
|
||||
list.add(EnumChatFormatting.GOLD + "Use hand drill to cycle forwards through the interaction list, shift click to go back");
|
||||
list.add(EnumChatFormatting.YELLOW + "Use a detonator to transform");
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World worldIn, int meta) {
|
||||
return new TileEntityWandLogic();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BombReturnCode explode(World world, int x, int y, int z) {
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(!(te instanceof TileEntityWandLogic)) return null;
|
||||
|
||||
((TileEntityWandLogic) te).triggerReplace = true;
|
||||
|
||||
return BombReturnCode.TRIGGERED;
|
||||
}
|
||||
|
||||
public static class TileEntityWandLogic extends TileEntityLoadedBase implements INBTTileEntityTransformable, ICopiable {
|
||||
private boolean triggerReplace;
|
||||
|
||||
public int placedRotation;
|
||||
|
||||
Block disguise;
|
||||
int disguiseMeta = -1;
|
||||
|
||||
public String actionID = "FODDER_WAVE";
|
||||
public String conditionID = "PLAYER_CUBE_5";
|
||||
public String interactionID;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
if(!worldObj.isRemote) {
|
||||
if(triggerReplace) {
|
||||
// On the first tick of this TE, replace with intended block and fill with loot
|
||||
replace();
|
||||
} else {
|
||||
networkPackNT(15);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void replace() {
|
||||
if (!(worldObj.getBlock(xCoord, yCoord, zCoord) instanceof BlockWandLogic)) {
|
||||
MainRegistry.logger.warn("Somehow the block at: " + xCoord + ", " + yCoord + ", " + zCoord + " isn't a logic block but we're doing a TE update as if it is, cancelling!");
|
||||
return;
|
||||
}
|
||||
worldObj.setBlock(xCoord,yCoord,zCoord, ModBlocks.logic_block);
|
||||
|
||||
TileEntity te = worldObj.getTileEntity(xCoord, yCoord, zCoord);
|
||||
|
||||
if(te == null || te instanceof BlockWandLoot.TileEntityWandLoot) {
|
||||
MainRegistry.logger.warn("TE for logic block set incorrectly at: " + xCoord + ", " + yCoord + ", " + zCoord + ". If you're using some sort of world generation mod, report it to the author!");
|
||||
te = ModBlocks.wand_logic.createTileEntity(worldObj, 0);
|
||||
worldObj.setTileEntity(xCoord, yCoord, zCoord, te);
|
||||
}
|
||||
|
||||
if(te instanceof LogicBlock.TileEntityLogicBlock){
|
||||
LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) te;
|
||||
logic.actionID = actionID;
|
||||
logic.conditionID = conditionID;
|
||||
logic.interactionID = interactionID;
|
||||
logic.direction = ForgeDirection.getOrientation(placedRotation);
|
||||
logic.disguise = disguise;
|
||||
logic.disguiseMeta = disguiseMeta;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transformTE(World world, int coordBaseMode) {
|
||||
triggerReplace = !StructureConfig.debugStructures;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setString("actionID", actionID);
|
||||
nbt.setString("conditionID", conditionID);
|
||||
nbt.setString("interactionID", interactionID);
|
||||
nbt.setInteger("rotation", placedRotation);
|
||||
if(disguise != null){
|
||||
nbt.setString("disguise", GameRegistry.findUniqueIdentifierFor(disguise).toString());
|
||||
nbt.setInteger("disguiseMeta", disguiseMeta);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
actionID = nbt.getString("actionID");
|
||||
conditionID = nbt.getString("conditionID");
|
||||
interactionID = nbt.getString("interactionID");
|
||||
placedRotation = nbt.getInteger("rotation");
|
||||
if(nbt.hasKey("disguise")){
|
||||
disguise = Block.getBlockFromName(nbt.getString("disguise"));
|
||||
disguiseMeta = nbt.getInteger("disguiseMeta");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
buf.writeInt(placedRotation);
|
||||
BufferUtil.writeString(buf, actionID);
|
||||
BufferUtil.writeString(buf, conditionID);
|
||||
BufferUtil.writeString(buf, interactionID);
|
||||
buf.writeInt(Block.getIdFromBlock(disguise));
|
||||
buf.writeInt(disguiseMeta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
placedRotation = buf.readInt();
|
||||
actionID = BufferUtil.readString(buf);
|
||||
conditionID = BufferUtil.readString(buf);
|
||||
interactionID = BufferUtil.readString(buf);
|
||||
disguise = Block.getBlockById(buf.readInt());
|
||||
disguiseMeta = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public NBTTagCompound getSettings(World world, int x, int y, int z) {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setString("actionID", actionID);
|
||||
nbt.setString("conditionID", conditionID);
|
||||
if(interactionID != null)
|
||||
nbt.setString("interactionID", interactionID);
|
||||
if(disguise != null){
|
||||
nbt.setString("disguise", GameRegistry.findUniqueIdentifierFor(disguise).toString());
|
||||
nbt.setInteger("disguiseMeta", disguiseMeta);
|
||||
}
|
||||
|
||||
return nbt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
|
||||
actionID = nbt.getString("actionID");
|
||||
conditionID = nbt.getString("conditionID");
|
||||
interactionID = nbt.getString("interactionID");
|
||||
if(nbt.hasKey("disguise")){
|
||||
disguise = Block.getBlockFromName(nbt.getString("disguise"));
|
||||
disguiseMeta = nbt.getInteger("disguiseMeta");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
162
src/main/java/com/hbm/blocks/generic/LogicBlock.java
Normal file
@ -0,0 +1,162 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import com.hbm.world.gen.util.LogicBlockActions;
|
||||
import com.hbm.world.gen.util.LogicBlockConditions;
|
||||
import com.hbm.world.gen.util.LogicBlockInteractions;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class LogicBlock extends BlockContainer {
|
||||
|
||||
public LogicBlock() {
|
||||
super(Material.rock);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new LogicBlock.TileEntityLogicBlock();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof LogicBlock.TileEntityLogicBlock){
|
||||
LogicBlock.TileEntityLogicBlock logicBlock = (LogicBlock.TileEntityLogicBlock) tile;
|
||||
if(logicBlock.disguise != null){
|
||||
return logicBlock.disguise.getIcon(side, logicBlock.disguiseMeta);
|
||||
}
|
||||
}
|
||||
|
||||
return super.getIcon(world, x, y, z, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer player, int side, float subX, float subY, float subZ) {
|
||||
TileEntity te = worldIn.getTileEntity(x, y, z);
|
||||
if(te instanceof LogicBlock.TileEntityLogicBlock && ((LogicBlock.TileEntityLogicBlock) te).interaction != null) {
|
||||
((LogicBlock.TileEntityLogicBlock) te).interaction.accept(new Object[]{worldIn, te, x, y, z, player, side, subX, subY, subZ});
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onBlockActivated(worldIn, x, y, z, player, side, subX, subY, subZ);
|
||||
}
|
||||
|
||||
public static class TileEntityLogicBlock extends TileEntity {
|
||||
|
||||
//phase is incremented per condition check, timer counts since last condition check by default
|
||||
public int phase = 0;
|
||||
public int timer = 0;
|
||||
|
||||
public Block disguise;
|
||||
public int disguiseMeta;
|
||||
|
||||
/**Actions always get called before conditions, use the phase and timer variables in order to control behavior via conditions*/
|
||||
public String conditionID = "PLAYER_CUBE_5";
|
||||
public String actionID = "FODDER_WAVE";
|
||||
/**Interactions are called on right click, and passes on the parameters of the right click to consumer*/
|
||||
public String interactionID;
|
||||
|
||||
public Function<LogicBlock.TileEntityLogicBlock, Boolean> condition;
|
||||
public Consumer<LogicBlock.TileEntityLogicBlock> action;
|
||||
/**Consists of world instance, TileEntity instance, three ints for coordinates, one int for block side, and player instance, in that order **/
|
||||
public Consumer<Object[]> interaction;
|
||||
|
||||
public EntityPlayer player;
|
||||
|
||||
public ForgeDirection direction = ForgeDirection.UNKNOWN;
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
if(action == null){
|
||||
action = LogicBlockActions.actions.get(actionID);
|
||||
}
|
||||
if(condition == null){
|
||||
condition = LogicBlockConditions.conditions.get(conditionID);
|
||||
}
|
||||
if(interaction == null && interactionID != null){
|
||||
interaction = LogicBlockInteractions.interactions.get(interactionID);
|
||||
}
|
||||
|
||||
if(action == null || condition == null){
|
||||
worldObj.setBlock(xCoord,yCoord,zCoord, Blocks.air);
|
||||
return;
|
||||
}
|
||||
action.accept(this);
|
||||
if(condition.apply(this)) {
|
||||
phase++;
|
||||
timer = 0;
|
||||
} else {
|
||||
timer++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setInteger("phase", phase);
|
||||
|
||||
nbt.setString("actionID", actionID);
|
||||
nbt.setString("conditionID", conditionID);
|
||||
if(interactionID != null)
|
||||
nbt.setString("interactionID", interactionID);
|
||||
|
||||
nbt.setInteger("direction", direction.ordinal());
|
||||
if(disguise != null){
|
||||
nbt.setInteger("disguiseMeta", disguiseMeta);
|
||||
nbt.setString("disguise", GameRegistry.findUniqueIdentifierFor(disguise).toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.phase = nbt.getInteger("phase");
|
||||
|
||||
this.actionID = nbt.getString("actionID");
|
||||
this.conditionID = nbt.getString("conditionID");
|
||||
if(nbt.hasKey("interactionID")) this.interactionID = nbt.getString("interactionID");
|
||||
|
||||
this.direction = ForgeDirection.getOrientation(nbt.getInteger("direction"));
|
||||
|
||||
if(nbt.hasKey("disguise")){
|
||||
disguiseMeta = nbt.getInteger("disguiseMeta");
|
||||
disguise = Block.getBlockFromName(nbt.getString("disguise"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Packet getDescriptionPacket() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
this.writeToNBT(nbt);
|
||||
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
|
||||
this.readFromNBT(pkt.func_148857_g());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -35,7 +35,7 @@ public class MachineElectrolyser extends BlockDummyable {
|
||||
|
||||
@Override
|
||||
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, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -282,8 +282,6 @@ public class PistonInserter extends BlockContainerBase implements ITooltipProvid
|
||||
if(this.slot != null) {
|
||||
BufferUtil.writeNBT(buf, slot.stackTagCompound);
|
||||
}
|
||||
|
||||
this.turnProgress = 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -0,0 +1,344 @@
|
||||
package com.hbm.blocks.network;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.interfaces.ICopiable;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.block.RenderBlockMultipass;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import li.cil.oc.api.network.Environment;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.network.NetworkManager;
|
||||
import net.minecraft.network.Packet;
|
||||
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import li.cil.oc.api.network.Message;
|
||||
import li.cil.oc.api.network.Node;
|
||||
import li.cil.oc.api.Network;
|
||||
import li.cil.oc.api.network.Visibility;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import li.cil.oc.api.network.SidedEnvironment;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import li.cil.oc.api.internal.Colored;
|
||||
import com.hbm.handler.CompatHandler.OCColors;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class BlockOpenComputersCablePaintable extends BlockContainer implements IToolable, IBlockMultiPass {
|
||||
|
||||
@SideOnly(Side.CLIENT) protected IIcon overlay;
|
||||
@SideOnly(Side.CLIENT) protected IIcon overlayColor;
|
||||
|
||||
public BlockOpenComputersCablePaintable() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityOpenComputersCablePaintable();
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister reg) {
|
||||
this.blockIcon = reg.registerIcon(RefStrings.MODID + ":oc_cable_base");
|
||||
this.overlay = reg.registerIcon(RefStrings.MODID + ":oc_cable_overlay");
|
||||
this.overlayColor = reg.registerIcon(RefStrings.MODID + ":oc_cable_color");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityOpenComputersCablePaintable) {
|
||||
TileEntityOpenComputersCablePaintable pipe = (TileEntityOpenComputersCablePaintable) tile;
|
||||
|
||||
if(pipe.block != null) {
|
||||
if(RenderBlockMultipass.currentPass == 1) {
|
||||
return this.overlay;
|
||||
} else if(RenderBlockMultipass.currentPass == 2) {
|
||||
return this.overlayColor;
|
||||
} else {
|
||||
return pipe.block.getIcon(side, pipe.meta);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return RenderBlockMultipass.currentPass == 1 ? this.overlay : RenderBlockMultipass.currentPass == 2 ? this.overlayColor : this.blockIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int colorMultiplier(IBlockAccess world, int x, int y, int z) {
|
||||
if (RenderBlockMultipass.currentPass == 2) {
|
||||
TileEntityOpenComputersCablePaintable tile = (TileEntityOpenComputersCablePaintable) world.getTileEntity(x, y, z);
|
||||
if (tile == null)
|
||||
return 0xffffff;
|
||||
|
||||
return tile.getColor();
|
||||
}
|
||||
|
||||
return 0xffffff;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) {
|
||||
|
||||
ItemStack stack = player.getHeldItem();
|
||||
|
||||
if (stack == null)
|
||||
return super.onBlockActivated(world, x, y, z, player, side, fX, fY, fZ);
|
||||
|
||||
if (stack.getItem() instanceof ItemBlock) {
|
||||
ItemBlock ib = (ItemBlock) stack.getItem();
|
||||
Block block = ib.field_150939_a;
|
||||
|
||||
if(block.renderAsNormalBlock() && block != this) {
|
||||
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityOpenComputersCablePaintable) {
|
||||
TileEntityOpenComputersCablePaintable pipe = (TileEntityOpenComputersCablePaintable) tile;
|
||||
|
||||
if(pipe.block == null) {
|
||||
pipe.block = block;
|
||||
pipe.meta = stack.getItemDamage() & 15;
|
||||
world.markBlockForUpdate(x, y, z);
|
||||
pipe.markDirty();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
boolean isDye = false;
|
||||
int[] dicts = OreDictionary.getOreIDs(stack);
|
||||
for (int dict : dicts) {
|
||||
String dictName = OreDictionary.getOreName(dict);
|
||||
if (dictName.equals("dye"))
|
||||
isDye = true;
|
||||
}
|
||||
|
||||
if (isDye) {
|
||||
TileEntityOpenComputersCablePaintable tile = (TileEntityOpenComputersCablePaintable) world.getTileEntity(x, y, z);
|
||||
tile.setColor(OCColors.fromDye(stack).getColor());
|
||||
world.markBlockForUpdate(x, y, z);
|
||||
tile.markDirty();
|
||||
}
|
||||
}
|
||||
|
||||
return super.onBlockActivated(world, x, y, z, player, side, fX, fY, fZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
|
||||
if(tool != ToolType.SCREWDRIVER) return false;
|
||||
|
||||
TileEntity tile = world.getTileEntity(x, y, z);
|
||||
|
||||
if(tile instanceof TileEntityOpenComputersCablePaintable) {
|
||||
TileEntityOpenComputersCablePaintable pipe = (TileEntityOpenComputersCablePaintable) tile;
|
||||
|
||||
if(pipe.block != null) {
|
||||
pipe.block = null;
|
||||
world.markBlockForUpdate(x, y, z);
|
||||
pipe.markDirty();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPasses() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
return IBlockMultiPass.getRenderType();
|
||||
}
|
||||
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.Environment", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.SidedEnvironment", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.Colored", modid = "OpenComputers")
|
||||
})
|
||||
public static class TileEntityOpenComputersCablePaintable extends TileEntityLoadedBase implements Environment, SidedEnvironment, Colored, ICopiable {
|
||||
|
||||
protected Node node;
|
||||
protected boolean addedToNetwork = false;
|
||||
|
||||
private Block block;
|
||||
private int meta;
|
||||
private Block lastBlock;
|
||||
private int lastMeta;
|
||||
private OCColors color = OCColors.LIGHTGRAY;
|
||||
|
||||
public TileEntityOpenComputersCablePaintable() {
|
||||
node = Network.newNode(this, Visibility.None).create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
|
||||
if(worldObj.isRemote && (lastBlock != block || lastMeta != meta)) {
|
||||
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
||||
lastBlock = block;
|
||||
lastMeta = meta;
|
||||
}
|
||||
|
||||
if(!this.getWorldObj().isRemote && !addedToNetwork) {
|
||||
addedToNetwork = true;
|
||||
Network.joinOrCreateNetwork(this);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Packet getDescriptionPacket() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
this.writeToNBT(nbt);
|
||||
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt);
|
||||
}
|
||||
|
||||
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
|
||||
this.readFromNBT(pkt.func_148857_g());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
int id = nbt.getInteger("block");
|
||||
this.block = id == 0 ? null : Block.getBlockById(id);
|
||||
this.meta = nbt.getInteger("meta");
|
||||
|
||||
this.color = OCColors.fromInt(nbt.getInteger("dyeColor"));
|
||||
|
||||
if (node != null && node.host() == this) {
|
||||
node.load(nbt.getCompoundTag("oc:node"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block));
|
||||
nbt.setInteger("meta", meta);
|
||||
|
||||
nbt.setInteger("dyeColor", color.getColor());
|
||||
|
||||
if (node != null && node.host() == this) {
|
||||
final NBTTagCompound nodeNbt = new NBTTagCompound();
|
||||
node.save(nodeNbt);
|
||||
nbt.setTag("oc:node", nodeNbt);
|
||||
}
|
||||
}
|
||||
|
||||
public NBTTagCompound getSettings(World world, int x, int y, int z) {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
if(block != null) {
|
||||
nbt.setInteger("paintblock", Block.getIdFromBlock(block));
|
||||
nbt.setInteger("paintmeta", meta);
|
||||
}
|
||||
return nbt;
|
||||
}
|
||||
|
||||
public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) {
|
||||
if(nbt.hasKey("paintblock")) {
|
||||
this.block = Block.getBlockById(nbt.getInteger("paintblock"));
|
||||
this.meta = nbt.getInteger("paintmeta");
|
||||
this.color = OCColors.fromInt(nbt.getInteger("dyeColor"));
|
||||
}
|
||||
}
|
||||
|
||||
// OC Cable Things
|
||||
@Override
|
||||
public Node node() {
|
||||
return node;
|
||||
}
|
||||
|
||||
public Node sidedNode(ForgeDirection side) {
|
||||
if (side == ForgeDirection.UNKNOWN)
|
||||
return null;
|
||||
|
||||
int neighborX = super.xCoord + side.offsetX;
|
||||
int neighborY = super.yCoord + side.offsetY;
|
||||
int neighborZ = super.zCoord + side.offsetZ;
|
||||
TileEntity neighbor = worldObj.getTileEntity(neighborX, neighborY, neighborZ);
|
||||
|
||||
// If a cable does not support colors but is a valid cable block, allow it to connect regardless of color.
|
||||
if (!(neighbor instanceof Colored)) {
|
||||
if (neighbor instanceof Environment)
|
||||
return node;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
Colored cable = (Colored) neighbor;
|
||||
if (cable.getColor() == color.getColor())
|
||||
return node;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnect(Node node) {}
|
||||
|
||||
@Override
|
||||
public void onDisconnect(Node node) {}
|
||||
|
||||
@Override
|
||||
public void onMessage(Message message) {}
|
||||
|
||||
@Override
|
||||
public void onChunkUnload() {
|
||||
super.onChunkUnload();
|
||||
if (node != null) node.remove();
|
||||
}
|
||||
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
if (node != null) node.remove();
|
||||
}
|
||||
|
||||
public boolean canConnect(net.minecraftforge.common.util.ForgeDirection side) {
|
||||
if (side == ForgeDirection.UNKNOWN)
|
||||
return false;
|
||||
|
||||
int neighborX = super.xCoord + side.offsetX;
|
||||
int neighborY = super.yCoord + side.offsetY;
|
||||
int neighborZ = super.zCoord + side.offsetZ;
|
||||
TileEntity neighbor = worldObj.getTileEntity(neighborX, neighborY, neighborZ);
|
||||
|
||||
// If a cable does not support colors but is a valid cable block, allow it to connect regardless of color.
|
||||
if (!(neighbor instanceof Colored)) {
|
||||
return neighbor instanceof Environment;
|
||||
}
|
||||
|
||||
Colored cable = (Colored) neighbor;
|
||||
return cable.getColor() == color.getColor();
|
||||
}
|
||||
|
||||
public void setColor(int newColor) {
|
||||
color = OCColors.fromInt(newColor);
|
||||
}
|
||||
|
||||
public int getColor() {
|
||||
return color.getColor();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -89,8 +89,6 @@ public class ConsumableRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bottle2_empty, 6), new Object[] { " G ", "G G", "G G", 'G', KEY_ANYPANE });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bottle2_korl, 1), new Object[] { ModItems.bottle2_empty, Items.potionitem, Items.sugar, CU.dust() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bottle2_fritz, 1), new Object[] { ModItems.bottle2_empty, Items.potionitem, Items.sugar, W.dust() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bottle2_korl_special, 1), new Object[] { ModItems.bottle2_empty, Items.potionitem, Items.sugar, CU.dust(), ST.dust() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bottle2_fritz_special, 1), new Object[] { ModItems.bottle2_empty, Items.potionitem, Items.sugar, W.dust(), TH232.dust() });
|
||||
|
||||
//Syringes
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.syringe_empty, 6), new Object[] { "P", "C", "B", 'B', Item.getItemFromBlock(Blocks.iron_bars), 'C', ModItems.cell_empty, 'P', IRON.plate() });
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.entity.mob;
|
||||
import com.hbm.entity.projectile.EntityBullet;
|
||||
import com.hbm.entity.projectile.EntityChopperMine;
|
||||
import com.hbm.handler.threading.PacketThreading;
|
||||
import com.hbm.interfaces.Spaghetti;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.lib.ModDamageSource;
|
||||
@ -26,6 +27,7 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.EnumDifficulty;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@Spaghetti("this sucks complete donkey shit")
|
||||
public class EntityHunterChopper extends EntityFlying implements IMob, IBossDisplayData, IRadiationImmune {
|
||||
|
||||
public int courseChangeCooldown;
|
||||
@ -335,20 +337,6 @@ public class EntityHunterChopper extends EntityFlying implements IMob, IBossDisp
|
||||
* kill this mob.
|
||||
*/
|
||||
protected void dropItems() {
|
||||
|
||||
if(rand.nextInt(2) == 0)
|
||||
this.dropItem(ModItems.chopper_head, 1);
|
||||
if(rand.nextInt(2) == 0)
|
||||
this.dropItem(ModItems.chopper_torso, 1);
|
||||
if(rand.nextInt(2) == 0)
|
||||
this.dropItem(ModItems.chopper_wing, 1);
|
||||
if(rand.nextInt(3) == 0)
|
||||
this.dropItem(ModItems.chopper_tail, 1);
|
||||
if(rand.nextInt(3) == 0)
|
||||
this.dropItem(ModItems.chopper_gun, 1);
|
||||
if(rand.nextInt(3) == 0)
|
||||
this.dropItem(ModItems.chopper_blades, 1);
|
||||
|
||||
this.dropItem(ModItems.combine_scrap, rand.nextInt(8) + 1);
|
||||
this.dropItem(ModItems.plate_combine_steel, rand.nextInt(5) + 1);
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@ import net.minecraft.entity.monster.EntityMob;
|
||||
import net.minecraft.entity.passive.EntityVillager;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.EnumDifficulty;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityUndeadSoldier extends EntityMob {
|
||||
@ -111,6 +112,11 @@ public class EntityUndeadSoldier extends EntityMob {
|
||||
return EnumCreatureAttribute.UNDEAD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getCanSpawnHere() {
|
||||
return this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL && this.worldObj.checkNoEntityCollision(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox);
|
||||
}
|
||||
|
||||
@Override protected void dropFewItems(boolean player, int loot) { }
|
||||
@Override protected void dropEquipment(boolean player, int loot) { }
|
||||
}
|
||||
|
||||
@ -1,11 +1,13 @@
|
||||
package com.hbm.handler;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.network.BlockOpenComputersCablePaintable;
|
||||
import com.hbm.inventory.RecipesCommon;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import li.cil.oc.api.Items;
|
||||
@ -15,6 +17,7 @@ import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.*;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
@ -108,27 +111,66 @@ public class CompatHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Simple enum for mapping OC color ordinals to a nicer format for adding new disks.
|
||||
*/
|
||||
public enum OCColors {
|
||||
BLACK, //0x444444
|
||||
RED, //0xB3312C
|
||||
GREEN, //0x339911
|
||||
BROWN, //0x51301A
|
||||
BLUE, //0x6666FF
|
||||
PURPLE, //0x7B2FBE
|
||||
CYAN, //0x66FFFF
|
||||
LIGHTGRAY, //0xABABAB
|
||||
GRAY, //0x666666
|
||||
PINK, //0xD88198
|
||||
LIME, //0x66FF66
|
||||
YELLOW, //0xFFFF66
|
||||
LIGHTBLUE, //0xAAAAFF
|
||||
MAGENTA, //0xC354CD
|
||||
ORANGE, //0xEB8844
|
||||
WHITE //0xF0F0F0
|
||||
}
|
||||
/**
|
||||
* Simple enum for mapping OC color ordinals to a nicer format for adding new disks.
|
||||
*/
|
||||
public enum OCColors {
|
||||
BLACK(0x444444, "dyeBlack"),
|
||||
RED(0xB3312C, "dyeRed"),
|
||||
GREEN(0x339911, "dyeGreen"),
|
||||
BROWN(0x51301A, "dyeBrown"),
|
||||
BLUE(0x6666FF, "dyeBlue"),
|
||||
PURPLE(0x7B2FBE, "dyePurple"),
|
||||
CYAN(0x66FFFF, "dyeCyan"),
|
||||
LIGHTGRAY(0xABABAB, "dyeLightGray"),
|
||||
GRAY(0x666666, "dyeGray"),
|
||||
PINK(0xD88198, "dyePink"),
|
||||
LIME(0x66FF66, "dyeLime"),
|
||||
YELLOW(0xFFFF66, "dyeYellow"),
|
||||
LIGHTBLUE(0xAAAAFF, "dyeLightBlue"),
|
||||
MAGENTA(0xC354CD, "dyeMagenta"),
|
||||
ORANGE(0xEB8844, "dyeOrange"),
|
||||
WHITE(0xF0F0F0, "dyeWhite"),
|
||||
NONE(0x0, "");
|
||||
|
||||
private final int color;
|
||||
private final String dictName;
|
||||
|
||||
OCColors(int color, String dictName) {
|
||||
this.color = color;
|
||||
this.dictName = dictName;
|
||||
}
|
||||
|
||||
public int getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public static OCColors fromInt(int intColor) {
|
||||
for (OCColors iColor : OCColors.values()) {
|
||||
if (intColor == iColor.getColor())
|
||||
return iColor;
|
||||
}
|
||||
return OCColors.NONE;
|
||||
}
|
||||
|
||||
public static OCColors fromDye(ItemStack stack) {
|
||||
List<String> oreNames = ItemStackUtil.getOreDictNames(stack);
|
||||
|
||||
for(String dict : oreNames) {
|
||||
if(!(dict.length() > 3) || !dict.startsWith("dye"))
|
||||
continue;
|
||||
|
||||
for (OCColors color : OCColors.values()) {
|
||||
if(!color.dictName.equals(dict))
|
||||
continue;
|
||||
|
||||
return color;
|
||||
}
|
||||
}
|
||||
|
||||
return OCColors.NONE;
|
||||
}
|
||||
}
|
||||
|
||||
// Where all disks are stored with their name and `FloppyDisk` class.
|
||||
public static HashMap<String, FloppyDisk> disks = new HashMap<>();
|
||||
|
||||
@ -0,0 +1,77 @@
|
||||
package com.hbm.handler.microblocks;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class MicroBlocksCompatHandler {
|
||||
public static void preInit() {
|
||||
registerMicroBlockCompat(ModBlocks.basalt);
|
||||
registerMicroBlockCompat(ModBlocks.basalt_smooth);
|
||||
registerMicroBlockCompat(ModBlocks.basalt_brick);
|
||||
registerMicroBlockCompat(ModBlocks.basalt_polished);
|
||||
registerMicroBlockCompat(ModBlocks.basalt_tiles);
|
||||
|
||||
registerMicroBlockCompat(ModBlocks.deco_titanium);
|
||||
registerMicroBlockCompat(ModBlocks.deco_red_copper);
|
||||
registerMicroBlockCompat(ModBlocks.deco_tungsten);
|
||||
registerMicroBlockCompat(ModBlocks.deco_aluminium);
|
||||
registerMicroBlockCompat(ModBlocks.deco_steel);
|
||||
registerMicroBlockCompat(ModBlocks.deco_rusty_steel);
|
||||
registerMicroBlockCompat(ModBlocks.deco_lead);
|
||||
registerMicroBlockCompat(ModBlocks.deco_beryllium);
|
||||
registerMicroBlockCompat(ModBlocks.deco_asbestos);
|
||||
registerMicroBlockCompat(ModBlocks.deco_rbmk);
|
||||
registerMicroBlockCompat(ModBlocks.deco_rbmk_smooth);
|
||||
|
||||
registerMicroBlockCompat(ModBlocks.asphalt);
|
||||
registerMicroBlockCompat(ModBlocks.asphalt_light);
|
||||
|
||||
registerMicroBlockCompat(ModBlocks.reinforced_brick);
|
||||
registerMicroBlockCompat(ModBlocks.reinforced_ducrete);
|
||||
registerMicroBlockCompat(ModBlocks.reinforced_sand);
|
||||
|
||||
registerMicroBlockCompat(ModBlocks.reinforced_stone);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_smooth);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_colored);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_colored_ext);
|
||||
registerMicroBlockCompat(ModBlocks.concrete);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_asbestos);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_super);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_super_broken);
|
||||
registerMicroBlockCompat(ModBlocks.ducrete_smooth);
|
||||
registerMicroBlockCompat(ModBlocks.ducrete);
|
||||
registerMicroBlockCompat(ModBlocks.concrete_pillar);
|
||||
registerMicroBlockCompat(ModBlocks.brick_concrete);
|
||||
registerMicroBlockCompat(ModBlocks.brick_concrete_mossy);
|
||||
registerMicroBlockCompat(ModBlocks.brick_concrete_cracked);
|
||||
registerMicroBlockCompat(ModBlocks.brick_concrete_broken);
|
||||
registerMicroBlockCompat(ModBlocks.brick_concrete_marked);
|
||||
registerMicroBlockCompat(ModBlocks.brick_ducrete);
|
||||
registerMicroBlockCompat(ModBlocks.brick_obsidian);
|
||||
registerMicroBlockCompat(ModBlocks.brick_light);
|
||||
registerMicroBlockCompat(ModBlocks.brick_compound);
|
||||
registerMicroBlockCompat(ModBlocks.brick_asbestos);
|
||||
registerMicroBlockCompat(ModBlocks.brick_fire);
|
||||
registerMicroBlockCompat(ModBlocks.lightstone);
|
||||
|
||||
registerMicroBlockCompat(ModBlocks.cmb_brick);
|
||||
registerMicroBlockCompat(ModBlocks.cmb_brick_reinforced);
|
||||
registerMicroBlockCompat(ModBlocks.vinyl_tile);
|
||||
|
||||
registerMicroBlockCompat(ModBlocks.tile_lab);
|
||||
registerMicroBlockCompat(ModBlocks.tile_lab_cracked);
|
||||
registerMicroBlockCompat(ModBlocks.tile_lab_broken);
|
||||
}
|
||||
|
||||
private static void registerMicroBlockCompat(Block block) {
|
||||
for(int meta = 0; meta < 15; meta++) {
|
||||
registerMicroBlockCompat(block, meta);
|
||||
}
|
||||
}
|
||||
|
||||
private static void registerMicroBlockCompat(Block block, int meta) {
|
||||
FMLInterModComms.sendMessage("ForgeMicroblock", "microMaterial", new ItemStack(block, 1, meta));
|
||||
}
|
||||
}
|
||||
@ -31,7 +31,7 @@ public class UpgradeManagerNT {
|
||||
public UpgradeManagerNT(TileEntity te) { this.owner = te; }
|
||||
@Deprecated public UpgradeManagerNT() { }
|
||||
|
||||
public void checkSlots(ItemStack[] slots, int start, int end) { checkSlots(owner, slots, start, end); }
|
||||
public void checkSlots(ItemStack[] slots, int start, int end) { checkSlotsInternal(owner, slots, start, end); }
|
||||
@Deprecated public void checkSlots(TileEntity te, ItemStack[] slots, int start, int end) { checkSlotsInternal(te, slots, start, end); }
|
||||
|
||||
private void checkSlotsInternal(TileEntity te, ItemStack[] slots, int start, int end) {
|
||||
|
||||
@ -3,7 +3,6 @@ package com.hbm.inventory.container;
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotNonRetarded;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemAssemblyTemplate;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
|
||||
@ -51,12 +50,12 @@ public class ContainerMachineAssemblyMachine extends ContainerBase {
|
||||
|
||||
if(slotOriginal.getItem() instanceof IBatteryItem || slotOriginal.getItem() == ModItems.battery_creative) {
|
||||
if(!this.mergeItemStack(slotStack, 0, 1, false)) return null;
|
||||
} else if(slotOriginal.getItem() instanceof ItemAssemblyTemplate) {
|
||||
} else if(slotOriginal.getItem() == ModItems.blueprints) {
|
||||
if(!this.mergeItemStack(slotStack, 1, 2, false)) return null;
|
||||
} else if(slotOriginal.getItem() instanceof ItemMachineUpgrade) {
|
||||
if(!this.mergeItemStack(slotStack, 2, 4, false)) return null;
|
||||
} else {
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 4, 7, false)) return null;
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, slotStack, 4, 16, false)) return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.inventory.container.ContainerMachineAssemblyMachine;
|
||||
import com.hbm.inventory.recipes.AssemblyMachineRecipes;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.items.machine.ItemBlueprints;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineAssemblyMachine;
|
||||
|
||||
@ -33,8 +34,8 @@ public class GUIMachineAssemblyMachine extends GuiInfoContainer {
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
assembler.inputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 115, 34, 16);
|
||||
assembler.outputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 115, 34, 16);
|
||||
assembler.inputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 99, 52, 16);
|
||||
assembler.outputTank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 99, 52, 16);
|
||||
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 61, assembler.power, assembler.maxPower);
|
||||
|
||||
@ -52,7 +53,7 @@ public class GUIMachineAssemblyMachine extends GuiInfoContainer {
|
||||
protected void mouseClicked(int x, int y, int button) {
|
||||
super.mouseClicked(x, y, button);
|
||||
|
||||
if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(AssemblyMachineRecipes.INSTANCE, assembler, assembler.assemblerModule.recipe, 0, this);
|
||||
if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(AssemblyMachineRecipes.INSTANCE, assembler, assembler.assemblerModule.recipe, 0, ItemBlueprints.grabPool(assembler.slots[1]), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -115,7 +116,7 @@ public class GUIMachineAssemblyMachine extends GuiInfoContainer {
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
}
|
||||
|
||||
assembler.inputTank.renderTank(guiLeft + 8, guiTop + 115, this.zLevel, 34, 16, 1);
|
||||
assembler.outputTank.renderTank(guiLeft + 80, guiTop + 115, this.zLevel, 34, 16, 1);
|
||||
assembler.inputTank.renderTank(guiLeft + 8, guiTop + 115, this.zLevel, 52, 16, 1);
|
||||
assembler.outputTank.renderTank(guiLeft + 80, guiTop + 115, this.zLevel, 52, 16, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.inventory.container.ContainerMachineChemicalFactory;
|
||||
import com.hbm.inventory.recipes.ChemicalPlantRecipes;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.items.machine.ItemBlueprints;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineChemicalFactory;
|
||||
|
||||
@ -57,7 +58,7 @@ public class GUIMachineChemicalFactory extends GuiInfoContainer {
|
||||
protected void mouseClicked(int x, int y, int button) {
|
||||
super.mouseClicked(x, y, button);
|
||||
|
||||
for(int i = 0; i < 4; i++) if(this.checkClick(x, y, 74, 19 + i * 22, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule[i].recipe, i, this);
|
||||
for(int i = 0; i < 4; i++) if(this.checkClick(x, y, 74, 19 + i * 22, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule[i].recipe, i, ItemBlueprints.grabPool(chemplant.slots[4 + i * 7]), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.inventory.container.ContainerMachineChemicalPlant;
|
||||
import com.hbm.inventory.recipes.ChemicalPlantRecipes;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.items.machine.ItemBlueprints;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineChemicalPlant;
|
||||
|
||||
@ -54,7 +55,7 @@ public class GUIMachineChemicalPlant extends GuiInfoContainer {
|
||||
protected void mouseClicked(int x, int y, int button) {
|
||||
super.mouseClicked(x, y, button);
|
||||
|
||||
if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule.recipe, 0, this);
|
||||
if(this.checkClick(x, y, 7, 125, 18, 18)) GUIScreenRecipeSelector.openSelector(ChemicalPlantRecipes.INSTANCE, chemplant, chemplant.chemplantModule.recipe, 0, ItemBlueprints.grabPool(chemplant.slots[1]), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -115,10 +115,13 @@ public class GUIMachineTurbineGas extends GuiInfoContainer {
|
||||
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 26, guiTop + 108, 142, 16, turbinegas.power, turbinegas.getMaxPower());
|
||||
|
||||
if(turbinegas.powerSliderPos == 0)
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 36, guiTop + 36, 16, 66, mouseX, mouseY, new String[] {"Turbine idle"});
|
||||
else
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 36, guiTop + 36, 16, 66, mouseX, mouseY, new String[] {(turbinegas.powerSliderPos) * 100 / 60 + "% power"});
|
||||
if(turbinegas.state == 1) {
|
||||
double consumption = turbinegas.fuelMaxCons.containsKey(turbinegas.tanks[0].getTankType()) ? turbinegas.fuelMaxCons.get(turbinegas.tanks[0].getTankType()) : 5D;
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 36, guiTop + 36, 16, 66, mouseX, mouseY, new String[] {"Fuel consumption: " + 20 * (consumption * 0.05D + consumption * turbinegas.throttle / 100) + " mb/s"});
|
||||
}
|
||||
else {
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 36, guiTop + 36, 16, 66, mouseX, mouseY, new String[] {"Generator offline"});
|
||||
}
|
||||
|
||||
if(turbinegas.temp >= 20)
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 133, guiTop + 23, 8, 72, mouseX, mouseY, new String[] {"Temperature: " + (turbinegas.temp) + "°C"});
|
||||
@ -147,6 +150,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer {
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 34 + 32, 16, 16, guiLeft - 8, guiTop + 44 + 16, warning);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float iinterpolation, int x, int y) {
|
||||
|
||||
|
||||
@ -50,16 +50,18 @@ public class GUIScreenRecipeSelector extends GuiScreen {
|
||||
protected int index;
|
||||
protected IControlReceiver tile;
|
||||
protected GuiScreen previousScreen;
|
||||
protected String installedPool;
|
||||
|
||||
public static void openSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, GuiScreen previousScreen) {
|
||||
FMLCommonHandler.instance().showGuiScreen(new GUIScreenRecipeSelector(recipeSet, tile, selection, index, previousScreen));
|
||||
public static void openSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, String installedPool, GuiScreen previousScreen) {
|
||||
FMLCommonHandler.instance().showGuiScreen(new GUIScreenRecipeSelector(recipeSet, tile, selection, index, installedPool, previousScreen));
|
||||
}
|
||||
|
||||
public GUIScreenRecipeSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, GuiScreen previousScreen) {
|
||||
public GUIScreenRecipeSelector(GenericRecipes recipeSet, IControlReceiver tile, String selection, int index, String installedPool, GuiScreen previousScreen) {
|
||||
this.recipeSet = recipeSet;
|
||||
this.tile = tile;
|
||||
this.selection = selection;
|
||||
this.index = index;
|
||||
this.installedPool = installedPool;
|
||||
this.previousScreen = previousScreen;
|
||||
if(this.selection == null) this.selection = NULL_SELECTION;
|
||||
|
||||
@ -83,7 +85,11 @@ public class GUIScreenRecipeSelector extends GuiScreen {
|
||||
private void regenerateRecipes() {
|
||||
|
||||
this.recipes.clear();
|
||||
this.recipes.addAll(recipeSet.recipeOrderedList);
|
||||
|
||||
for(Object o : recipeSet.recipeOrderedList) {
|
||||
GenericRecipe recipe = (GenericRecipe) o;
|
||||
if(!recipe.isPooled() || (this.installedPool != null && recipe.isPartOfPool(installedPool))) this.recipes.add(recipe);
|
||||
}
|
||||
|
||||
resetPaging();
|
||||
}
|
||||
@ -92,15 +98,17 @@ public class GUIScreenRecipeSelector extends GuiScreen {
|
||||
this.recipes.clear();
|
||||
|
||||
if(search.isEmpty()) {
|
||||
this.recipes.addAll(recipeSet.recipeOrderedList);
|
||||
regenerateRecipes();
|
||||
} else {
|
||||
for(Object o : recipeSet.recipeOrderedList) {
|
||||
GenericRecipe recipe = (GenericRecipe) o;
|
||||
if(recipe.matchesSearch(search)) this.recipes.add(recipe);
|
||||
if(recipe.matchesSearch(search)) {
|
||||
if(!recipe.isPooled() || (this.installedPool != null && recipe.isPartOfPool(installedPool))) this.recipes.add(recipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resetPaging();
|
||||
resetPaging();
|
||||
}
|
||||
}
|
||||
|
||||
private void resetPaging() {
|
||||
|
||||
@ -136,7 +136,7 @@ public class Mats {
|
||||
|
||||
//Alloys
|
||||
public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setAutogen(DUSTTINY, BOLT, WIRE, DUST, PLATE, CASTPLATE, WELDEDPLATE, SHELL, PIPE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, GRIP).m();
|
||||
public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, BLOCK).m();
|
||||
public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, DENSEWIRE, BLOCK).m();
|
||||
public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m();
|
||||
public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x82A59C, 0x06281E, 0x42665C).setAutogen(BOLT, DUST, PLATE, CASTPLATE, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m();
|
||||
public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m();
|
||||
|
||||
@ -23,9 +23,7 @@ import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.inventory.OreDictManager;
|
||||
import com.hbm.inventory.RecipesCommon.*;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.material.MaterialShapes;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.NTMMaterial;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.ItemEnums.EnumCasingType;
|
||||
@ -79,7 +77,6 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.centrifuge_element, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 4), new OreDictStack(TI.plate528(), 4), new ComparableStack(ModItems.motor, 1), }, 100);
|
||||
makeRecipe(new ComparableStack(ModItems.reactor_core, 1), new AStack[] {new OreDictStack(PB.ingot(), 8), new OreDictStack(BE.ingot(), 6), new OreDictStack(STEEL.plate(), 16), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(FIBER.ingot(), 2) },100);
|
||||
makeRecipe(new ComparableStack(ModItems.rtg_unit, 1), new AStack[] {new ComparableStack(ModItems.thermo_element, 2), new OreDictStack(CU.plateCast(), 1), new OreDictStack(PB.ingot(), 2), new OreDictStack(STEEL.plate(), 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), },100);
|
||||
makeRecipe(new ComparableStack(ModItems.levitation_unit, 1), new AStack[] {new ComparableStack(ModItems.coil_copper, 4), new ComparableStack(ModItems.coil_tungsten, 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.nugget_schrabidium, 2), },100);
|
||||
makeRecipe(new ComparableStack(ModItems.drill_titanium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(DURA.ingot(), 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack(TI.plate(), 6), },100);
|
||||
makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new OreDictStack(GOLD.wireDense(), 16), new OreDictStack(Fluids.XENON.getDict(1_000))},200);
|
||||
makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200);
|
||||
@ -101,12 +98,6 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal()) }, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_stealth, 1), new AStack[] { new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(CU.plate(), 10), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32) },1200);
|
||||
makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel) },600);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_head, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_glass, 2), new OreDictStack(CMB.ingot(), 22), new OreDictStack(MAGTUNG.wireFine(), 4), },300);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_gun, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(CMB.ingot(), 2), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 1), new ComparableStack(ModItems.motor, 1), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_torso, 1), new AStack[] {new OreDictStack(CMB.ingot(), 26), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.chopper_blades, 2), },350);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_tail, 1), new AStack[] {new OreDictStack(CMB.plate(), 8), new OreDictStack(CMB.ingot(), 5), new OreDictStack(MAGTUNG.wireFine(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.chopper_blades, 2), },200);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_wing, 1), new AStack[] {new OreDictStack(CMB.plate(), 6), new OreDictStack(CMB.ingot(), 3), new OreDictStack(MAGTUNG.wireFine(), 2), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.chopper_blades, 1), new AStack[] {new OreDictStack(CMB.plate(), 8), new OreDictStack(STEEL.plate(), 2), new OreDictStack(CMB.ingot(), 2), },200);
|
||||
makeRecipe(new ComparableStack(ModItems.tritium_deuterium_cake, 1), new AStack[] {new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.cell_tritium, 2), new OreDictStack(LI.ingot(), 4), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.pellet_cluster, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new ComparableStack(Blocks.tnt, 1), }, 50);
|
||||
makeRecipe(new ComparableStack(ModItems.pellet_buckshot, 1), new AStack[] {new OreDictStack(PB.nugget(), 6), }, 50);
|
||||
@ -168,10 +159,9 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_n2, 1), new AStack[] {new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack("dyeBlack", 8), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_fstbmb, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeGray", 8), },600, ModItems.journal_pip, ModItems.journal_bj);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_custom, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeGray", 4), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.float_bomb, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.levitation_unit, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 6), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.float_bomb, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireDense(), 8), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.therm_endo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4), },250);
|
||||
makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300);
|
||||
makeRecipe(new ComparableStack(ModItems.grenade_fire, 1), new AStack[] {new ComparableStack(ModItems.grenade_frag, 1), new OreDictStack(P_RED.dust(), 1), new OreDictStack(CU.plate(), 2), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.grenade_shrapnel, 1), new AStack[] {new ComparableStack(ModItems.grenade_frag, 1), new ComparableStack(ModItems.pellet_buckshot, 1), new OreDictStack(STEEL.plate(), 2), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.grenade_cluster, 1), new AStack[] {new ComparableStack(ModItems.grenade_frag, 1), new ComparableStack(ModItems.pellet_cluster, 1), new OreDictStack(STEEL.plate(), 2), },200);
|
||||
@ -205,7 +195,6 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.solinium_core, 1), new AStack[] {new OreDictStack(SA327.nugget(), 9), new OreDictStack(EUPH.nugget(), 1), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.solinium_propellant, 1), new AStack[] {new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 3), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.plate_polymer, 6), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.biomass_compressed, 4), },350);
|
||||
makeRecipe(new ComparableStack(ModItems.schrabidium_hammer, 1), new AStack[] {new OreDictStack(SA326.block(), 35), new ComparableStack(ModItems.billet_yharonite, 128), new ComparableStack(Items.nether_star, 3), new ComparableStack(ModItems.fragment_meteorite, 512), },1000);
|
||||
makeRecipe(new ComparableStack(ModItems.component_emitter, 1), new AStack[] {new OreDictStack(STEEL.shell(), 3), new OreDictStack(AL.shell(), 2), new OreDictStack(STEEL.plate(), 32), new OreDictStack(PB.plate(), 24), new ComparableStack(ModItems.plate_desh, 24), new ComparableStack(ModItems.pipes_steel, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new OreDictStack(STAR.ingot(), 26), new ComparableStack(ModItems.powder_magic, 48), new ComparableStack(ModItems.crystal_xen, 1), },2500);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_radar, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(ANY_RUBBER.ingot(), 8), new ComparableStack(ModItems.magnetron, 3), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.coil_copper, 12), new ComparableStack(ModItems.crt_display, 4), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_radar_large, 1), new AStack[] {new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 16), new OreDictStack(ANY_RUBBER.ingot(), 16), new ComparableStack(ModItems.magnetron, 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_copper, 32), new ComparableStack(ModItems.crt_display, 4), },600);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_forcefield, 1), new AStack[] {new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.machine_transformer, 1), },1000);
|
||||
@ -851,19 +840,6 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
|
||||
}, 400);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_chemfac, 1), new AStack[] {
|
||||
!exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2),
|
||||
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8),
|
||||
new OreDictStack(NB.ingot(), 4),
|
||||
new OreDictStack(RUBBER.ingot(), 16),
|
||||
new OreDictStack(STEEL.shell(), 12),
|
||||
new ComparableStack(ModItems.tank_steel, 8),
|
||||
new ComparableStack(ModItems.motor_desh, 4),
|
||||
new ComparableStack(ModItems.coil_tungsten, 24),
|
||||
new OreDictStack(STEEL.pipe(), 8),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
|
||||
}, 400);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_chemical_factory, 1), new AStack[] {
|
||||
new OreDictStack(DURA.ingot(), 16),
|
||||
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8),
|
||||
@ -1319,12 +1295,6 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
}
|
||||
}
|
||||
|
||||
for(NTMMaterial mat : Mats.orderedList) {
|
||||
if(mat.autogen.contains(MaterialShapes.CASTPLATE) && mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) {
|
||||
makeRecipe(new ComparableStack(ModItems.heavy_component, 1, mat.id), new AStack[] { new OreDictStack(MaterialShapes.CASTPLATE.name() + mat.names[0], 256) }, 12_000);
|
||||
}
|
||||
}
|
||||
|
||||
// WarTec compatibility code
|
||||
try {
|
||||
Class wartecmodAssemblerRecipes = ClassLoader.getSystemClassLoader().loadClass("com.wartec.wartecmod.inventory.wartecmodAssemblerRecipes");
|
||||
|
||||
@ -5,17 +5,38 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
import static com.hbm.inventory.material.Mats.*;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockCap.EnumCapBlock;
|
||||
import com.hbm.blocks.machine.BlockICFLaserComponent.EnumICFPart;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.OreDictManager;
|
||||
import com.hbm.inventory.OreDictManager.DictFrame;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.ItemEnums.EnumCasingType;
|
||||
import com.hbm.items.ItemEnums.EnumSecretType;
|
||||
import com.hbm.items.ItemGenericPart.EnumPartType;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||
import com.hbm.items.machine.ItemDrillbit.EnumDrillType;
|
||||
import com.hbm.items.machine.ItemPACoil.EnumCoilType;
|
||||
import com.hbm.items.machine.ItemPistons.EnumPistonType;
|
||||
import com.hbm.items.weapon.ItemAmmoHIMARS;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
|
||||
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
@ -27,15 +48,747 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
@Override public int outputItemLimit() { return 1; }
|
||||
@Override public int outputFluidLimit() { return 1; }
|
||||
|
||||
@Override public String getFileName() { return "hbmAsemblyMachine.json"; }
|
||||
@Override public String getFileName() { return "hbmAssemblyMachine.json"; }
|
||||
@Override public GenericRecipe instantiateRecipe(String name) { return new GenericRecipe(name); }
|
||||
|
||||
@Override
|
||||
public void registerDefaults() {
|
||||
|
||||
this.register(new GenericRecipe("ass.test").setup(100, 1_000)
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 5))
|
||||
.outputItems(new ItemStack(ModItems.plate_welded, 1, MAT_STEEL.id)));
|
||||
// plates and ingots
|
||||
this.register(new GenericRecipe("ass.plateiron").setup(60, 100).outputItems(new ItemStack(ModItems.plate_iron, 1)).inputItems(new OreDictStack(IRON.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.plategold").setup(60, 100).outputItems(new ItemStack(ModItems.plate_gold, 1)).inputItems(new OreDictStack(GOLD.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platetitanium").setup(60, 100).outputItems(new ItemStack(ModItems.plate_titanium, 1)).inputItems(new OreDictStack(TI.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platealu").setup(60, 100).outputItems(new ItemStack(ModItems.plate_aluminium, 1)).inputItems(new OreDictStack(AL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platesteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_steel, 1)).inputItems(new OreDictStack(STEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platelead").setup(60, 100).outputItems(new ItemStack(ModItems.plate_lead, 1)).inputItems(new OreDictStack(PB.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platecopper").setup(60, 100).outputItems(new ItemStack(ModItems.plate_copper, 1)).inputItems(new OreDictStack(CU.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platealloy").setup(60, 100).outputItems(new ItemStack(ModItems.plate_advanced_alloy, 1)).inputItems(new OreDictStack(ALLOY.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.plateschrab").setup(60, 100).outputItems(new ItemStack(ModItems.plate_schrabidium, 1)).inputItems(new OreDictStack(SA326.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platecmb").setup(60, 100).outputItems(new ItemStack(ModItems.plate_combine_steel, 1)).inputItems(new OreDictStack(CMB.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.plategunmetal").setup(60, 100).outputItems(new ItemStack(ModItems.plate_gunmetal, 1)).inputItems(new OreDictStack(GUNMETAL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.plateweaponsteel").setup(60, 100).outputItems(new ItemStack(ModItems.plate_weaponsteel, 1)).inputItems(new OreDictStack(WEAPONSTEEL.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platesaturnite").setup(60, 100).outputItems(new ItemStack(ModItems.plate_saturnite, 1)).inputItems(new OreDictStack(BIGMT.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platedura").setup(60, 100).outputItems(new ItemStack(ModItems.plate_dura_steel, 1)).inputItems(new OreDictStack(DURA.ingot())).setPools(GenericRecipes.POOL_PREFIX_ALT + "plates"));
|
||||
this.register(new GenericRecipe("ass.platemixed").setup(50, 100).outputItems(new ItemStack(ModItems.plate_mixed, 4))
|
||||
.inputItems(new OreDictStack(ALLOY.plate(), 2), new OreDictStack(OreDictManager.getReflector(), 1), new OreDictStack(BIGMT.plate(), 1)));
|
||||
this.register(new GenericRecipe("ass.dalekanium").setup(200, 100).outputItems(new ItemStack(ModItems.plate_dalekanium, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.block_meteor, 1)));
|
||||
this.register(new GenericRecipe("ass.platedesh").setup(200, 100).outputItems(new ItemStack(ModItems.plate_desh, 4))
|
||||
.inputItems(new OreDictStack(DESH.ingot(), 4), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(DURA.ingot(), 1)));
|
||||
this.register(new GenericRecipe("ass.platebismuth").setup(200, 100).outputItems(new ItemStack(ModItems.plate_bismuth, 1))
|
||||
.inputItems(new ComparableStack(ModItems.nugget_bismuth, 2), new OreDictStack(U238.billet(), 2), new OreDictStack(NB.dust(), 1)));
|
||||
this.register(new GenericRecipe("ass.plateeuphemium").setup(600, 100).outputItems(new ItemStack(ModItems.plate_euphemium, 1))
|
||||
.inputItems(new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 3), new OreDictStack(BI.dust(), 1), new OreDictStack(VOLCANIC.gem(), 1), new ComparableStack(ModItems.ingot_osmiridium)));
|
||||
this.register(new GenericRecipe("ass.platednt").setup(600, 100).outputItems(new ItemStack(ModItems.plate_dineutronium, 4))
|
||||
.inputItems(new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack(DESH.ingot(), 1)));
|
||||
|
||||
// cloth
|
||||
this.register(new GenericRecipe("ass.hazcloth").setup(50, 100).outputItems(new ItemStack(ModItems.hazmat_cloth, 4))
|
||||
.inputItems(new OreDictStack(PB.dust(), 4), new ComparableStack(Items.string, 8)));
|
||||
this.register(new GenericRecipe("ass.firecloth").setup(50, 100).outputItems(new ItemStack(ModItems.asbestos_cloth, 4))
|
||||
.inputItems(new OreDictStack(ASBESTOS.ingot(), 1), new ComparableStack(Items.string, 8)));
|
||||
this.register(new GenericRecipe("ass.filtercoal").setup(50, 100).outputItems(new ItemStack(ModItems.filter_coal, 1))
|
||||
.inputItems(new OreDictStack(COAL.dust(), 4), new ComparableStack(Items.string, 2), new ComparableStack(Items.paper, 1)));
|
||||
|
||||
// machine parts
|
||||
this.register(new GenericRecipe("ass.centrifugetower").setup(100, 100).outputItems(new ItemStack(ModItems.centrifuge_element, 1))
|
||||
.inputItems(new OreDictStack(DURA.plate528(), 4), new OreDictStack(TI.plate528(), 4), new ComparableStack(ModItems.motor, 1)));
|
||||
this.register(new GenericRecipe("ass.reactorcore").setup(100, 100).outputItems(new ItemStack(ModItems.reactor_core, 1))
|
||||
.inputItems(new OreDictStack(PB.plateCast(), 4), new OreDictStack(BE.ingot(), 8), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(ASBESTOS.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.thermoelement").setup(60, 100).outputItems(new ItemStack(ModItems.thermo_element, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 1), new OreDictStack(MINGRADE.wireFine(), 2), new OreDictStack(NETHERQUARTZ.dust(), 2)));
|
||||
this.register(new GenericRecipe("ass.thermoelementsilicon").setup(60, 100).outputItems(new ItemStack(ModItems.thermo_element, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 1), new OreDictStack(GOLD.wireFine(), 2), new OreDictStack(SI.billet(), 1)));
|
||||
this.register(new GenericRecipe("ass.rtgunit").setup(100, 100).outputItems(new ItemStack(ModItems.rtg_unit, 1))
|
||||
.inputItems(new OreDictStack(PB.plateCast(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.thermo_element, 2)));
|
||||
this.register(new GenericRecipe("ass.magnetron").setup(40, 100).outputItems(new ItemStack(ModItems.magnetron, 1))
|
||||
.inputItems(new OreDictStack(CU.plate(), 3), new OreDictStack(W.wireFine(), 4)));
|
||||
this.register(new GenericRecipe("ass.titaniumdrill").setup(100, 100).outputItems(new ItemStack(ModItems.drill_titanium, 1))
|
||||
.inputItems(new OreDictStack(DURA.plateCast(), 1), new OreDictStack(TI.plate(), 8)));
|
||||
this.register(new GenericRecipe("ass.entanglementkit").setup(200, 100).outputItems(new ItemStack(ModItems.entanglement_kit, 1))
|
||||
.inputItems(new OreDictStack(DURA.plateCast(), 4), new OreDictStack(CU.plate(), 24), new OreDictStack(GOLD.wireDense(), 16))
|
||||
.inputFluids(new FluidStack(Fluids.XENON, 8_000)));
|
||||
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)));
|
||||
|
||||
// powders
|
||||
this.register(new GenericRecipe("ass.partlith").setup(40, 100).outputItems(new ItemStack(ModItems.part_lithium, 8))
|
||||
.inputItems(new OreDictStack(LI.dust(), 1)));
|
||||
this.register(new GenericRecipe("ass.partberyl").setup(40, 100).outputItems(new ItemStack(ModItems.part_beryllium, 8))
|
||||
.inputItems(new OreDictStack(BE.dust(), 1)));
|
||||
this.register(new GenericRecipe("ass.partcoal").setup(40, 100).outputItems(new ItemStack(ModItems.part_carbon, 8))
|
||||
.inputItems(new OreDictStack(COAL.dust(), 1)));
|
||||
this.register(new GenericRecipe("ass.partcop").setup(40, 100).outputItems(new ItemStack(ModItems.part_copper, 8))
|
||||
.inputItems(new OreDictStack(CU.dust(), 1)));
|
||||
this.register(new GenericRecipe("ass.partplut").setup(40, 100).outputItems(new ItemStack(ModItems.part_plutonium, 8))
|
||||
.inputItems(new OreDictStack(PU.dust(), 1)));
|
||||
|
||||
// bunker blocks
|
||||
this.register(new GenericRecipe("ass.cmbtile").setup(100, 100).outputItems(new ItemStack(ModBlocks.cmb_brick, 8))
|
||||
.inputItems(new OreDictStack(ANY_CONCRETE.any(), 4), new OreDictStack(CMB.plate(), 4)));
|
||||
this.register(new GenericRecipe("ass.cmbbrick").setup(100, 100).outputItems(new ItemStack(ModBlocks.cmb_brick_reinforced, 8))
|
||||
.inputItems(new OreDictStack(MAGTUNG.ingot(), 8), new ComparableStack(ModBlocks.ducrete, 4), new ComparableStack(ModBlocks.cmb_brick, 8)));
|
||||
this.register(new GenericRecipe("ass.sealframe").setup(100, 100).outputItems(new ItemStack(ModBlocks.seal_frame, 1))
|
||||
.inputItems(new OreDictStack(DURA.ingot(), 1), new OreDictStack(STEEL.plateCast(), 1), new OreDictStack(MINGRADE.wireDense(), 1)));
|
||||
this.register(new GenericRecipe("ass.sealcontroller").setup(100, 100).outputItems(new ItemStack(ModBlocks.seal_controller, 1))
|
||||
.inputItems(new OreDictStack(DURA.ingot(), 1), new OreDictStack(STEEL.plateCast(), 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(MINGRADE.wireDense(), 4)));
|
||||
|
||||
// nuclear door mod
|
||||
this.register(new GenericRecipe("ass.vaultdoor").setup(600, 100).outputItems(new ItemStack(ModBlocks.vault_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 32), new OreDictStack(DURA.ingot(), 32), new OreDictStack(PB.plateCast(), 8), new OreDictStack(ANY_RUBBER.ingot(), 12), new OreDictStack(DURA.bolt(), 32), new ComparableStack(ModItems.motor, 3)));
|
||||
this.register(new GenericRecipe("ass.blastdoor").setup(200, 100).outputItems(new ItemStack(ModBlocks.blast_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(PB.plate(), 6), new OreDictStack(ALLOY.plate(), 6), new OreDictStack(ANY_RUBBER.ingot(), 2), new OreDictStack(DURA.bolt(), 8), new ComparableStack(ModItems.motor, 1)));
|
||||
this.register(new GenericRecipe("ass.firedoor").setup(300, 100).outputItems(new ItemStack(ModBlocks.fire_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(ALLOY.plate(), 8), new OreDictStack(DURA.bolt(), 8), new ComparableStack(ModItems.motor, 2)));
|
||||
this.register(new GenericRecipe("ass.seal").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.transition_seal, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.cmb_brick_reinforced, 16), new OreDictStack(STEEL.plate(), 64), new OreDictStack(ALLOY.plate(), 40), new OreDictStack(ANY_RUBBER.ingot(), 36), new OreDictStack(STEEL.block(), 24), new ComparableStack(ModItems.motor_desh, 16), new OreDictStack(DURA.bolt(), 16), new OreDictStack(KEY_YELLOW, 4)));
|
||||
this.register(new GenericRecipe("ass.slidingdoor").setup(200, 100).outputItems(new ItemStack(ModBlocks.sliding_blast_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(W.ingot(), 8), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ANY_RUBBER.ingot(), 4), new OreDictStack(DURA.bolt(), 16), new ComparableStack(ModItems.motor, 2)));
|
||||
this.register(new GenericRecipe("ass.vehicledoor").setup(400, 100).outputItems(new ItemStack(ModBlocks.large_vehicle_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 16), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 4), new OreDictStack(DURA.bolt(), 16), new OreDictStack(KEY_GREEN, 4)));
|
||||
this.register(new GenericRecipe("ass.waterdoor").setup(200, 100).outputItems(new ItemStack(ModBlocks.water_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(DURA.bolt(), 4), new OreDictStack(KEY_RED, 1)));
|
||||
this.register(new GenericRecipe("ass.qedoor").setup(400, 100).outputItems(new ItemStack(ModBlocks.qe_containment, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 32), new OreDictStack(KEY_BLACK, 4)));
|
||||
this.register(new GenericRecipe("ass.queslidingdoor").setup(200, 100).outputItems(new ItemStack(ModBlocks.qe_sliding_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack(KEY_WHITE, 4), new ComparableStack(Blocks.glass, 4)));
|
||||
this.register(new GenericRecipe("ass.roundairlock").setup(400, 100).outputItems(new ItemStack(ModBlocks.round_airlock_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ALLOY.plate(), 8), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 4), new OreDictStack(DURA.bolt(), 16), new OreDictStack(KEY_GREEN, 4)));
|
||||
this.register(new GenericRecipe("ass.secureaccess").setup(400, 100).outputItems(new ItemStack(ModBlocks.secure_access_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ALLOY.plate(), 16), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 4), new OreDictStack(DURA.bolt(), 32), new OreDictStack(KEY_RED, 8)));
|
||||
this.register(new GenericRecipe("ass.slidingseal").setup(200, 100).outputItems(new ItemStack(ModBlocks.sliding_seal_door, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack(KEY_WHITE, 2)));
|
||||
this.register(new GenericRecipe("ass.silohatch").setup(200, 100).outputItems(new ItemStack(ModBlocks.silo_hatch, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 4)));
|
||||
this.register(new GenericRecipe("ass.silohatchlarge").setup(300, 100).outputItems(new ItemStack(ModBlocks.silo_hatch_large, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 8)));
|
||||
|
||||
// decoration
|
||||
this.register(new GenericRecipe("ass.capnuka").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.NUKA))
|
||||
.inputItems(new ComparableStack(ModItems.cap_nuka, 128)));
|
||||
this.register(new GenericRecipe("ass.capquantum").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.QUANTUM))
|
||||
.inputItems(new ComparableStack(ModItems.cap_quantum, 128)));
|
||||
this.register(new GenericRecipe("ass.capsparkle").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.SPARKLE))
|
||||
.inputItems(new ComparableStack(ModItems.cap_sparkle, 128)));
|
||||
this.register(new GenericRecipe("ass.caprad").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.RAD))
|
||||
.inputItems(new ComparableStack(ModItems.cap_rad, 128)));
|
||||
this.register(new GenericRecipe("ass.capfritz").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.FRITZ))
|
||||
.inputItems(new ComparableStack(ModItems.cap_fritz, 128)));
|
||||
this.register(new GenericRecipe("ass.capkorl").setup(10, 100).outputItems(DictFrame.fromOne(ModBlocks.block_cap, EnumCapBlock.KORL))
|
||||
.inputItems(new ComparableStack(ModItems.cap_korl, 128)));
|
||||
/*
|
||||
this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1))
|
||||
.inputItems());
|
||||
*/
|
||||
|
||||
// machines
|
||||
this.register(new GenericRecipe("ass.shredder").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_shredder, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.motor, 2)));
|
||||
this.register(new GenericRecipe("ass.chemplant").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_plant, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.pipe(), 2), new ComparableStack(ModItems.plate_polymer, 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.coil_tungsten, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.centrifuge").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_centrifuge, 1))
|
||||
.inputItems(new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.gascent").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_gascent, 1))
|
||||
.inputItems(new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal())));
|
||||
this.register(new GenericRecipe("ass.arcfurnace").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_arc_furnace, 1))
|
||||
.inputItems(new OreDictStack(ANY_CONCRETE.any(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.ingot_firebrick, 16),new OreDictStack(STEEL.plateCast(), 8), new ComparableStack(ModBlocks.machine_transformer, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal())));
|
||||
this.register(new GenericRecipe("ass.acidizer").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_crystallizer, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(TI.shell(), 3), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.electrolyzer").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_electrolyser, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(CU.plate528(), 16), new OreDictStack(TI.shell(), 3), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.ingot_firebrick, 16), new ComparableStack(ModItems.coil_copper, 16), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.rtg").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_rtg_grey, 1))
|
||||
.inputItems(new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.derrick").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_well, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(CU.plateCast(), 2), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.drill_titanium, 1)));
|
||||
this.register(new GenericRecipe("ass.pumpjack").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_pumpjack, 1))
|
||||
.inputItems(new OreDictStack(DURA.plate(), 8), new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh), new ComparableStack(ModItems.drill_titanium, 1)));
|
||||
this.register(new GenericRecipe("ass.fracker").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_fracking_tower, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 24), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModBlocks.concrete_smooth, 64), new ComparableStack(ModItems.drill_titanium), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.plate_desh, 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)));
|
||||
this.register(new GenericRecipe("ass.flarestack").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_flare, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 12), new OreDictStack(CU.plate528(), 4), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3)));
|
||||
this.register(new GenericRecipe("ass.refinery").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_refinery, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 3), new OreDictStack(CU.plate528(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.crackingtower").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_catalytic_cracker, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(NB.ingot(), 2), new ComparableStack(ModItems.catalyst_clay, 12)));
|
||||
this.register(new GenericRecipe("ass.radiolysis").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_radiolysis, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(PB.plate528(), 12), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.thermo_element, 8)));
|
||||
this.register(new GenericRecipe("ass.coker").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_coker, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new OreDictStack(NB.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.vaccumrefinery").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_vacuum_distill, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.motor_desh, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_BISMOID)));
|
||||
this.register(new GenericRecipe("ass.reformer").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_catalytic_reformer, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.shell(), 3), new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.hydrotreater").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_hydrotreater, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(CU.plateCast(), 4), new OreDictStack(NB.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.shell(), 2), new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.pyrooven").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_pyrooven, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 4), new OreDictStack(CU.pipe(), 12), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.liquefactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_liquefactor, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(CU.plate528(), 12), new OreDictStack(ANY_TAR.any(), 4), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.coil_tungsten, 8)));
|
||||
this.register(new GenericRecipe("ass.solidifier").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_solidifier, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(AL.plate528(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.coil_copper, 4)));
|
||||
this.register(new GenericRecipe("ass.compressor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_compressor, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(CU.plate528(), 4), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.compactcompressor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_compressor_compact, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(TI.shell(), 4), new OreDictStack(CU.pipe(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.epress").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_epress, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 8), new OreDictStack(ANY_RUBBER.ingot(), 4), new ComparableStack(ModItems.part_generic, 2, EnumPartType.PISTON_HYDRAULIC.ordinal()), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.fel").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_fel, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(ALLOY.wireDense(), 64), new OreDictStack(STEEL.plateCast(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.silex").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_silex, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.glass_quartz, 16), new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(DESH.ingot(), 4), new OreDictStack(RUBBER.ingot(), 8), new OreDictStack(STEEL.pipe(), 8)));
|
||||
this.register(new GenericRecipe("ass.excavator").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_excavator, 1))
|
||||
.inputItems(new ComparableStack(Blocks.stonebrick, 8), new OreDictStack(STEEL.ingot(), 8), new OreDictStack(IRON.ingot(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.drillsteel").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.drillsteeldiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.STEEL_DIAMOND.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()), new OreDictStack(DIAMOND.dust(), 16)));
|
||||
this.register(new GenericRecipe("ass.drilldura").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()))
|
||||
.inputItems(new OreDictStack(DURA.ingot(), 12), new OreDictStack(ANY_PLASTIC.ingot(), 12), new OreDictStack(TI.ingot(), 8)));
|
||||
this.register(new GenericRecipe("ass.drillduradiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.HSS_DIAMOND.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), new OreDictStack(DIAMOND.dust(), 24)));
|
||||
this.register(new GenericRecipe("ass.drilldesh").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()))
|
||||
.inputItems(new OreDictStack(DESH.ingot(), 16), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(NB.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.drilldeshdiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.DESH_DIAMOND.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), new OreDictStack(DIAMOND.dust(), 32)));
|
||||
this.register(new GenericRecipe("ass.drilltc").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.ingot(), 20), new OreDictStack(DESH.ingot(), 12), new OreDictStack(RUBBER.ingot(), 8)));
|
||||
this.register(new GenericRecipe("ass.drilltcdiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY_DIAMOND.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new OreDictStack(DIAMOND.dust(), 48)));
|
||||
this.register(new GenericRecipe("ass.drillferro").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()))
|
||||
.inputItems(new OreDictStack(FERRO.ingot(), 24), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), new OreDictStack(BI.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.drillferrodiamond").setup(100, 100).outputItems(new ItemStack(ModItems.drillbit, 1, EnumDrillType.FERRO_DIAMOND.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new OreDictStack(DIAMOND.dust(), 56)));
|
||||
this.register(new GenericRecipe("ass.slopper").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_ore_slopper, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(TI.plate(), 8), new OreDictStack(CU.pipe(), 3), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG)));
|
||||
this.register(new GenericRecipe("ass.mininglaser").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_mining_laser, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 16), new OreDictStack(TI.shell(), 4), new OreDictStack(DURA.plate(), 4), new ComparableStack(ModItems.crystal_redstone, 3), new ComparableStack(Items.diamond, 3), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.motor, 3)));
|
||||
this.register(new GenericRecipe("ass.teleporter").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_teleporter, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(ALLOY.plate528(), 12), new OreDictStack(GOLD.wireFine(), 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1)));
|
||||
this.register(new GenericRecipe("ass.radar").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_radar, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 12), new OreDictStack(ANY_RUBBER.ingot(), 12), new ComparableStack(ModItems.magnetron, 5), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.crt_display, 4)));
|
||||
this.register(new GenericRecipe("ass.radarlarge").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_radar_large, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 6), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_RUBBER.ingot(), 24), new ComparableStack(ModItems.magnetron, 16), new ComparableStack(ModItems.motor_desh, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.crt_display, 4)));
|
||||
this.register(new GenericRecipe("ass.forcefield").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_forcefield, 1))
|
||||
.inputItems(new OreDictStack(ALLOY.plate528(), 8), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.coil_gold_torus, 6), new ComparableStack(ModItems.coil_magnetized_tungsten, 12), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.upgrade_radius, 1), new ComparableStack(ModItems.upgrade_health, 1), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.machine_transformer, 1)));
|
||||
this.register(new GenericRecipe("ass.difurnacertg").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_difurnace_rtg_off, 1))
|
||||
.inputItems(new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(DESH.ingot(), 4), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 8), new OreDictStack(CU.plate(), 12)));
|
||||
this.register(new GenericRecipe("ass.strandcaster").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_strand_caster, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(STEEL.shell(), 2), new OreDictStack(ANY_CONCRETE.any(), 8)));
|
||||
this.register(new GenericRecipe("ass.assemfac").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_assemfac, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 48), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(B.ingot(), 4), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(KEY_ANYPANE, 64), new ComparableStack(ModItems.motor, 18), new OreDictStack(W.bolt(), 16), new OreDictStack(STEEL.pipe(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.chemfac").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_chemical_factory, 1))
|
||||
.inputItems(new OreDictStack(DURA.ingot(), 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(STEEL.shell(), 12), new OreDictStack(CU.pipe(), 8), new ComparableStack(ModItems.motor_desh, 4), new ComparableStack(ModItems.coil_tungsten, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)));
|
||||
|
||||
// generators
|
||||
this.register(new GenericRecipe("ass.dieselgen").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_diesel, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 1), new OreDictStack(CU.plateCast(), 2), new ComparableStack(ModItems.coil_copper, 4)));
|
||||
this.register(new GenericRecipe("ass.combustiongen").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_combustion_engine, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.ingot(), 12), new OreDictStack(GOLD.wireDense(), 8), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.pistonsetsteel").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.STEEL.ordinal()))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 16), new OreDictStack(CU.plate(), 4), new OreDictStack(W.ingot(), 8), new OreDictStack(W.bolt(), 16)));
|
||||
this.register(new GenericRecipe("ass.pistonsetdura").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.DURA.ordinal()))
|
||||
.inputItems(new OreDictStack(DURA.ingot(), 24), new OreDictStack(TI.plate(), 8), new OreDictStack(W.ingot(), 8), new OreDictStack(DURA.bolt(), 16)));
|
||||
this.register(new GenericRecipe("ass.pistonsetdesh").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.DESH.ordinal()))
|
||||
.inputItems(new OreDictStack(DESH.ingot(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 12), new OreDictStack(CU.plate(), 24), new OreDictStack(W.ingot(), 16), new OreDictStack(DURA.pipe(), 4)));
|
||||
this.register(new GenericRecipe("ass.pistonsetstar").setup(200, 100).outputItems(new ItemStack(ModItems.piston_set, 1, EnumPistonType.STARMETAL.ordinal()))
|
||||
.inputItems(new OreDictStack(STAR.ingot(), 24), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(BIGMT.plate(), 24), new OreDictStack(NB.ingot(), 16), new OreDictStack(DURA.pipe(), 4)));
|
||||
this.register(new GenericRecipe("ass.turbofan").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_turbofan, 1))
|
||||
.inputItems(new OreDictStack(TI.shell(), 8), new OreDictStack(DURA.pipe(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 12), new ComparableStack(ModItems.turbine_tungsten, 1), new OreDictStack(GOLD.wireDense(), 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC.ordinal())));
|
||||
this.register(new GenericRecipe("ass.gasturbine").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_turbinegas, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 10), new OreDictStack(GOLD.wireDense(), 12), new OreDictStack(DURA.pipe(), 4),new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.turbine_tungsten, 1), new ComparableStack(ModItems.ingot_rubber, 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC.ordinal())));
|
||||
this.register(new GenericRecipe("ass.hephaestus").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_hephaestus, 1))
|
||||
.inputItems(new OreDictStack(STEEL.pipe(), 12), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(CU.plate(), 24), new OreDictStack(NB.ingot(), 4), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModBlocks.glass_quartz, 16)));
|
||||
this.register(new GenericRecipe("ass.iturbine").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_large_turbine, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 12), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.turbine_titanium, 3), new OreDictStack(GOLD.wireDense(), 6), new OreDictStack(DURA.pipe(), 3), new OreDictStack(STEEL.pipe(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.leviturbine").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_chungus, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.plateWelded(), 16), new OreDictStack(TI.plate528(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 16), new ComparableStack(ModItems.turbine_tungsten, 5), new ComparableStack(ModItems.turbine_titanium, 3), new ComparableStack(ModItems.flywheel_beryllium, 1), new OreDictStack(GOLD.wireDense(), 48), new OreDictStack(DURA.pipe(), 16), new OreDictStack(STEEL.pipe(), 16)));
|
||||
this.register(new GenericRecipe("ass.radgen").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_radgen, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "radgen")
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new OreDictStack(MAGTUNG.wireFine(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1)));
|
||||
|
||||
// condensers
|
||||
this.register(new GenericRecipe("ass.hpcondenser").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_condenser_powered, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4), new OreDictStack(CU.plate528(), 16), new ComparableStack(ModItems.motor_desh, 3), new OreDictStack(STEEL.pipe(), 24), new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4)));
|
||||
|
||||
// batteries
|
||||
this.register(new GenericRecipe("ass.battery").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_battery, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 1), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12)));
|
||||
this.register(new GenericRecipe("ass.batterylithium").setup(100, 100).outputItems(new ItemStack(ModBlocks.machine_lithium_battery, 1))
|
||||
.inputItems(new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(CO.dust(), 12), new OreDictStack(LI.dust(), 12)));
|
||||
this.register(new GenericRecipe("ass.batteryschrabidium").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_schrabidium_battery, 1))
|
||||
.inputItems(new OreDictStack(DESH.ingot(), 16), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12)));
|
||||
this.register(new GenericRecipe("ass.batterydnt").setup(400, 100).outputItems(new ItemStack(ModBlocks.machine_dineutronium_battery, 1))
|
||||
.inputItems(new OreDictStack(DNT.ingot(), 24), new ComparableStack(ModItems.powder_spark_mix, 12), new ComparableStack(ModItems.battery_spark_cell_1000, 1), new OreDictStack(CMB.ingot(), 32)));
|
||||
this.register(new GenericRecipe("ass.fensusan").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.machine_fensu, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_electronium, 32),
|
||||
new ComparableStack(ModBlocks.machine_dineutronium_battery, 16),
|
||||
new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 64),
|
||||
new OreDictStack(DURA.block(), 16),
|
||||
new OreDictStack(STAR.block(), 64),
|
||||
new ComparableStack(ModBlocks.machine_transformer_dnt, 8),
|
||||
new ComparableStack(ModItems.coil_magnetized_tungsten, 24),
|
||||
new ComparableStack(ModItems.powder_magic, 64),
|
||||
new ComparableStack(ModItems.plate_dineutronium, 24),
|
||||
new ComparableStack(ModItems.ingot_u238m2),
|
||||
new ComparableStack(ModItems.ingot_cft, 128)));
|
||||
|
||||
// fluid tanks
|
||||
this.register(new GenericRecipe("ass.tank").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_fluidtank, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 8), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4)));
|
||||
this.register(new GenericRecipe("ass.bat9k").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_bat9000, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16)));
|
||||
this.register(new GenericRecipe("ass.orbus").setup(300, 100).outputItems(new ItemStack(ModBlocks.machine_orbus, 1))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plateCast(), 4), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1)));
|
||||
|
||||
// accelerators
|
||||
this.register(new GenericRecipe("ass.cyclotron").setup(600, 100).outputItems(new ItemStack(ModBlocks.machine_cyclotron, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 3), new OreDictStack(ND.wireDense(), 32), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(AL.plate528(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 24), new OreDictStack(RUBBER.ingot(), 24), new OreDictStack(CU.plateCast(), 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.beamline").setup(200, 100).outputItems(new ItemStack(ModBlocks.pa_beamline, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 8), new OreDictStack(CU.plate(), 16), new OreDictStack(GOLD.wireDense(), 4)));
|
||||
this.register(new GenericRecipe("ass.rfc").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_rfc, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.pa_beamline, 3), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(CU.plate(), 64), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16)));
|
||||
this.register(new GenericRecipe("ass.quadrupole").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_quadrupole, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.pa_beamline, 1), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.dipole").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_dipole, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.pa_beamline, 2), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.source").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_source, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.pa_beamline, 3), new OreDictStack(STEEL.plateCast(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.magnetron, 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.QUANTUM)));
|
||||
this.register(new GenericRecipe("ass.detector").setup(400, 100).outputItems(new ItemStack(ModBlocks.pa_detector, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.pa_beamline, 3), new OreDictStack(STEEL.plateCast(), 24), new OreDictStack(GOLD.wireDense(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.QUANTUM)));
|
||||
this.register(new GenericRecipe("ass.pagold").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.GOLD.ordinal())).inputItems(new OreDictStack(GOLD.wireDense(), 128)));
|
||||
this.register(new GenericRecipe("ass.panbti").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.NIOBIUM.ordinal())).inputItems(new OreDictStack(NB.wireDense(), 64), new OreDictStack(TI.wireDense(), 64)));
|
||||
this.register(new GenericRecipe("ass.pabscco").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.BSCCO.ordinal())).inputItems(new OreDictStack(BSCCO.wireDense(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 64)));
|
||||
this.register(new GenericRecipe("ass.pachlorophyte").setup(400, 100).outputItems(new ItemStack(ModItems.pa_coil, 1, EnumCoilType.CHLOROPHYTE.ordinal())).inputItems(new OreDictStack(CU.wireDense(), 128), new ComparableStack(ModItems.powder_chlorophyte, 16)));
|
||||
this.register(new GenericRecipe("ass.exposurechamber").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_exposure_chamber, 1))
|
||||
.inputItems(new OreDictStack(AL.plateCast(), 12), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new OreDictStack(ALLOY.wireDense(), 32), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModBlocks.capacitor_tantalium, 1), new ComparableStack(ModBlocks.glass_quartz, 16)));
|
||||
|
||||
// reactors
|
||||
this.register(new GenericRecipe("ass.breedingreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_reactor_breeding, 1))
|
||||
.inputItems(new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.researchreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.reactor_research, 1))
|
||||
.inputItems(new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.cirnox").setup(600, 100).outputItems(new ItemStack(ModBlocks.reactor_zirnox, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(B.ingot(), 8), new OreDictStack(GRAPHITE.ingot(), 16), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(ANY_CONCRETE.any(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.rbmk").setup(100, 100).outputItems(new ItemStack(ModBlocks.rbmk_blank, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.concrete_asbestos, 4), new OreDictStack(STEEL.plateCast(), 4), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4)));
|
||||
|
||||
// fusion reactor
|
||||
this.register(new GenericRecipe("ass.fusioncore").setup(600, 100).outputItems(new ItemStack(ModBlocks.struct_iter_core, 1))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 6), new OreDictStack(W.plateWelded(), 6), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.fusionconductor").setup(100, 100).outputItems(new ItemStack(ModBlocks.fusion_conductor, 1))
|
||||
.inputItems(new ComparableStack(ModItems.coil_advanced_alloy, 5)));
|
||||
this.register(new GenericRecipe("ass.fusioncenter").setup(200, 100).outputItems(new ItemStack(ModBlocks.fusion_center, 1))
|
||||
.inputItems(new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new OreDictStack(ALLOY.wireFine(), 24)));
|
||||
this.register(new GenericRecipe("ass.fusionmotor").setup(400, 100).outputItems(new ItemStack(ModBlocks.fusion_motor, 1))
|
||||
.inputItems(new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4)));
|
||||
this.register(new GenericRecipe("ass.fusionheater").setup(200, 100).outputItems(new ItemStack(ModBlocks.fusion_heater, 4))
|
||||
.inputItems(new OreDictStack(W.plateWelded(), 2), new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.magnetron, 2)));
|
||||
this.register(new GenericRecipe("ass.blankettungsten").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_tungsten, 1))
|
||||
.inputItems(new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)));
|
||||
this.register(new GenericRecipe("ass.blanketdesh").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_desh, 1))
|
||||
.inputItems(new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)));
|
||||
this.register(new GenericRecipe("ass.blanketchlorophyte").setup(600, 100).outputItems(new ItemStack(ModItems.fusion_shield_chlorophyte, 1))
|
||||
.inputItems(new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)));
|
||||
|
||||
// watz
|
||||
this.register(new GenericRecipe("ass.watzrod").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_element, 3))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.watzcooler").setup(200, 100).outputItems(new ItemStack(ModBlocks.watz_cooler, 3))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2)));
|
||||
this.register(new GenericRecipe("ass.watzcasing").setup(100, 100).outputItems(new ItemStack(ModBlocks.watz_end, 3))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2)));
|
||||
|
||||
// ICF
|
||||
this.register(new GenericRecipe("ass.icfcell").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CELL.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new ComparableStack(ModBlocks.glass_quartz, 16)));
|
||||
this.register(new GenericRecipe("ass.icfemitter").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.EMITTER.ordinal()))
|
||||
.inputItems(new OreDictStack(W.plateWelded(), 4), new OreDictStack(MAGTUNG.wireDense(), 16))
|
||||
.inputFluids(new FluidStack(Fluids.XENON, 16_000)));
|
||||
this.register(new GenericRecipe("ass.icfcapacitor").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CAPACITOR.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 1), new OreDictStack(ND.wireDense(), 16), new OreDictStack(SBD.ingot(), 2)));
|
||||
this.register(new GenericRecipe("ass.icfturbo").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.TURBO.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new OreDictStack(DNT.wireDense(), 4), new OreDictStack(SBD.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.icfcasing").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.CASING.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(BIGMT.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16)));
|
||||
this.register(new GenericRecipe("ass.icfport").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_laser_component, 1, EnumICFPart.PORT.ordinal()))
|
||||
.inputItems(new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ND.wireDense(), 4)));
|
||||
this.register(new GenericRecipe("ass.icfcontroller").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_controller, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)));
|
||||
this.register(new GenericRecipe("ass.icfscaffold").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 0))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plateWelded(), 2)));
|
||||
this.register(new GenericRecipe("ass.icfvessel").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_cft, 1), new OreDictStack(CMB.plateCast(), 1), new OreDictStack(W.plateWelded(), 2)));
|
||||
this.register(new GenericRecipe("ass.icfstructural").setup(200, 100).outputItems(new ItemStack(ModBlocks.icf_component, 1, 3))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 2), new OreDictStack(CU.plateWelded(), 2), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 1)));
|
||||
this.register(new GenericRecipe("ass.icfcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_icf_core, 1))
|
||||
.inputItems(new OreDictStack(CMB.plateWelded(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 16), new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 16), new OreDictStack(SBD.wireDense(), 32), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.BISMOID), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.QUANTUM)));
|
||||
this.register(new GenericRecipe("ass.icfpress").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_icf_press, 1))
|
||||
.inputItems(new OreDictStack(GOLD.plateCast(), 8), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BISMOID)));
|
||||
|
||||
// upgrades
|
||||
this.register(new GenericRecipe("ass.overdrive1").setup(200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_1, 1))
|
||||
.inputItems(new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.overdrive2").setup(600, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_2, 1))
|
||||
.inputItems(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(BIGMT.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)));
|
||||
this.register(new GenericRecipe("ass.overdrive3").setup(1_200, 100).outputItems(new ItemStack(ModItems.upgrade_overdrive_3, 1))
|
||||
.inputItems(new ComparableStack(ModItems.upgrade_overdrive_2, 1), new ComparableStack(ModItems.upgrade_speed_3, 1), new ComparableStack(ModItems.upgrade_effect_3, 1), new OreDictStack(ANY_BISMOIDBRONZE.ingot(), 16), new ComparableStack(ModItems.ingot_cft, 16), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID)));
|
||||
/*
|
||||
this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1))
|
||||
.inputItems());
|
||||
*/
|
||||
|
||||
// rancid shit mob spawners
|
||||
this.register(new GenericRecipe("ass.chopper").setup(1_200, 100).outputItems(new ItemStack(ModItems.spawn_chopper, 8))
|
||||
.inputItems(new OreDictStack(CMB.plateCast(), 24), new OreDictStack(STEEL.plate(), 32), new OreDictStack(MAGTUNG.wireFine(), 48), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.ballsotron").setup(1_200, 100).outputItems(new ItemStack(ModItems.spawn_worm, 1))
|
||||
.inputItems(new OreDictStack(TI.plateWelded(), 32), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.motor, 64), new OreDictStack(GOLD.wireDense(), 64), new OreDictStack(U238.block(), 10), new ComparableStack(ModItems.mech_key, 1)));
|
||||
|
||||
// weapon parts
|
||||
this.register(new GenericRecipe("ass.clusterpellets").setup(50, 100).outputItems(new ItemStack(ModItems.pellet_cluster, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 1)));
|
||||
this.register(new GenericRecipe("ass.buckshot").setup(50, 100).outputItems(new ItemStack(ModItems.pellet_buckshot, 1))
|
||||
.inputItems(new OreDictStack(PB.nugget(), 6)));
|
||||
|
||||
// bombs
|
||||
this.register(new GenericRecipe("ass.minenaval").setup(300, 100).outputItems(new ItemStack(ModBlocks.mine_naval, 1))
|
||||
.inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.pipe(), 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 24)));
|
||||
this.register(new GenericRecipe("ass.gadget").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_gadget, 1))
|
||||
.inputItems(new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GRAY, 8)));
|
||||
this.register(new GenericRecipe("ass.littleboy").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_boy, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_BLUE, 4)));
|
||||
this.register(new GenericRecipe("ass.fatman").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_man, 1))
|
||||
.inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_YELLOW, 6)));
|
||||
this.register(new GenericRecipe("ass.ivymike").setup(600, 100).outputItems(new ItemStack(ModBlocks.nuke_mike, 1))
|
||||
.inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_LIGHTGRAY, 16)));
|
||||
this.register(new GenericRecipe("ass.tsarbomba").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.nuke_tsar, 1))
|
||||
.inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_tri_steel, 1), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_BLACK, 8)));
|
||||
this.register(new GenericRecipe("ass.ninadidnothingwrong").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_prototype, 1))
|
||||
.inputItems(new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.fleija").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_fleija, 1))
|
||||
.inputItems(new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_WHITE, 4)));
|
||||
this.register(new GenericRecipe("ass.solinium").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_solinium, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GRAY, 8)));
|
||||
this.register(new GenericRecipe("ass.n2mine").setup(200, 100).outputItems(new ItemStack(ModBlocks.nuke_n2, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack(KEY_GREEN, 8)));
|
||||
this.register(new GenericRecipe("ass.balefirebomb").setup(400, 100).outputItems(new ItemStack(ModBlocks.nuke_fstbmb, 1))
|
||||
.inputItems(new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(TI.shell(), 6), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.powder_magic, 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 8)));
|
||||
this.register(new GenericRecipe("ass.customnuke").setup(300, 100).outputItems(new ItemStack(ModBlocks.nuke_custom, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack(KEY_GRAY, 4)));
|
||||
this.register(new GenericRecipe("ass.levibomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.float_bomb, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(SA326.nugget(), 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireDense(), 8)));
|
||||
this.register(new GenericRecipe("ass.endobomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.therm_endo, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.powder_ice, 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4)));
|
||||
this.register(new GenericRecipe("ass.exobomb").setup(200, 100).outputItems(new ItemStack(ModBlocks.therm_exo, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.coil_gold, 4)));
|
||||
|
||||
/*
|
||||
this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModItems., 1))
|
||||
.inputItems());
|
||||
*/
|
||||
|
||||
// bomb parts
|
||||
this.register(new GenericRecipe("ass.explosivelenses1").setup(400, 100).outputItems(new ItemStack(ModItems.early_explosive_lenses, 1))
|
||||
.inputItems(new OreDictStack(AL.plate(), 8), new OreDictStack(GOLD.wireFine(), 16), new ComparableStack(ModBlocks.det_cord, 8), new OreDictStack(CU.plate(), 2), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 20), new OreDictStack(ANY_PLASTIC.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.explosivelenses2").setup(400, 100).outputItems(new ItemStack(ModItems.explosive_lenses, 1))
|
||||
.inputItems(new OreDictStack(AL.plate(), 8), new OreDictStack(MINGRADE.wireFine(), 16), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 4), new OreDictStack(CU.plate(), 2), new ComparableStack(ModItems.ball_tatb, 16), new OreDictStack(RUBBER.ingot(), 2)));
|
||||
this.register(new GenericRecipe("ass.wiring").setup(200, 100).outputItems(new ItemStack(ModItems.gadget_wireing, 1))
|
||||
.inputItems(new OreDictStack(IRON.plate(), 1), new OreDictStack(GOLD.wireFine(), 12)));
|
||||
this.register(new GenericRecipe("ass.core1").setup(1_200, 100).outputItems(new ItemStack(ModItems.gadget_core, 1))
|
||||
.inputItems(new OreDictStack(PU239.nugget(), 7), new OreDictStack(U238.nugget(), 3)));
|
||||
this.register(new GenericRecipe("ass.boyshield").setup(200, 100).outputItems(new ItemStack(ModItems.boy_shielding, 1))
|
||||
.inputItems(new OreDictStack(OreDictManager.getReflector(), 12), new OreDictStack(STEEL.plate528(), 4)));
|
||||
this.register(new GenericRecipe("ass.boytarget").setup(200, 100).outputItems(new ItemStack(ModItems.boy_target, 1))
|
||||
.inputItems(new OreDictStack(U235.nugget(), 18)));
|
||||
this.register(new GenericRecipe("ass.boybullet").setup(200, 100).outputItems(new ItemStack(ModItems.boy_bullet, 1))
|
||||
.inputItems(new OreDictStack(U235.nugget(), 9)));
|
||||
this.register(new GenericRecipe("ass.boypropellant").setup(200, 100).outputItems(new ItemStack(ModItems.boy_propellant, 1))
|
||||
.inputItems(new ComparableStack(ModItems.cordite, 8), new OreDictStack(IRON.plate528(), 8), new OreDictStack(AL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 4)));
|
||||
this.register(new GenericRecipe("ass.boyigniter").setup(200, 100).outputItems(new ItemStack(ModItems.boy_igniter, 1))
|
||||
.inputItems(new OreDictStack(AL.shell(), 3), new OreDictStack(DURA.plateCast(), 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(MINGRADE.wireFine(), 16)));
|
||||
this.register(new GenericRecipe("ass.manigniter").setup(200, 100).outputItems(new ItemStack(ModItems.man_igniter, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(MINGRADE.wireFine(), 9)));
|
||||
this.register(new GenericRecipe("ass.mancore").setup(1_200, 100).outputItems(new ItemStack(ModItems.man_core, 1))
|
||||
.inputItems(new OreDictStack(PU239.nugget(), 8), new OreDictStack(BE.nugget(), 2)));
|
||||
this.register(new GenericRecipe("ass.mikecore").setup(1_200, 100).outputItems(new ItemStack(ModItems.mike_core, 1))
|
||||
.inputItems(new OreDictStack(U238.nugget(), 24), new OreDictStack(PB.ingot(), 6)));
|
||||
this.register(new GenericRecipe("ass.mikedeut").setup(600, 100).outputItems(new ItemStack(ModItems.mike_deut, 1))
|
||||
.inputItems(new OreDictStack(IRON.plate528(), 12), new OreDictStack(STEEL.plate528(), 16))
|
||||
.inputFluids(new FluidStack(Fluids.DEUTERIUM, 10_000)));
|
||||
this.register(new GenericRecipe("ass.mikecooler").setup(300, 100).outputItems(new ItemStack(ModItems.mike_cooling_unit, 1))
|
||||
.inputItems(new OreDictStack(IRON.plate528(), 8), new ComparableStack(ModItems.coil_copper, 5), new ComparableStack(ModItems.coil_tungsten, 5), new ComparableStack(ModItems.motor, 2)));
|
||||
this.register(new GenericRecipe("ass.fleijaigniter").setup(200, 100).outputItems(new ItemStack(ModItems.fleija_igniter, 1))
|
||||
.inputItems(new OreDictStack(TI.plate528(), 6), new OreDictStack(SA326.wireFine(), 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal())));
|
||||
this.register(new GenericRecipe("ass.fleijacore").setup(600, 100).outputItems(new ItemStack(ModItems.fleija_core, 1))
|
||||
.inputItems(new OreDictStack(U235.nugget(), 8), new OreDictStack(NP237.nugget(), 2), new OreDictStack(BE.nugget(), 4), new ComparableStack(ModItems.coil_copper, 2)));
|
||||
this.register(new GenericRecipe("ass.fleijacharge").setup(300, 100).outputItems(new ItemStack(ModItems.fleija_propellant, 1))
|
||||
.inputItems(new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 3), new OreDictStack(SA326.plate(), 8)));
|
||||
this.register(new GenericRecipe("ass.soliniumigniter").setup(200, 100).outputItems(new ItemStack(ModItems.solinium_igniter, 1))
|
||||
.inputItems(new OreDictStack(TI.plate528(), 4), new OreDictStack(ALLOY.wireFine(), 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(ModItems.coil_gold, 1)));
|
||||
this.register(new GenericRecipe("ass.soliniumcore").setup(600, 100).outputItems(new ItemStack(ModItems.solinium_core, 1))
|
||||
.inputItems(new OreDictStack(SA327.nugget(), 9), new OreDictStack(EUPH.nugget(), 1)));
|
||||
this.register(new GenericRecipe("ass.soliniumcharge").setup(300, 100).outputItems(new ItemStack(ModItems.solinium_propellant, 1))
|
||||
.inputItems(new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 3), new OreDictStack(OreDictManager.getReflector(), 2), new ComparableStack(ModItems.plate_polymer, 6), new OreDictStack(W.wireFine(), 6), new ComparableStack(ModItems.biomass_compressed, 4)));
|
||||
|
||||
// grenades
|
||||
this.register(new GenericRecipe("ass.incgrenade").setup(100, 100).outputItems(new ItemStack(ModItems.grenade_fire, 1))
|
||||
.inputItems(new ComparableStack(ModItems.grenade_frag, 1), new OreDictStack(P_RED.dust(), 1), new OreDictStack(CU.plate(), 2)));
|
||||
this.register(new GenericRecipe("ass.shrapgrenade").setup(100, 100).outputItems(new ItemStack(ModItems.grenade_shrapnel, 1))
|
||||
.inputItems(new ComparableStack(ModItems.grenade_frag, 1), new ComparableStack(ModItems.pellet_buckshot, 1), new OreDictStack(STEEL.plate(), 2)));
|
||||
this.register(new GenericRecipe("ass.clustergrenade").setup(100, 100).outputItems(new ItemStack(ModItems.grenade_cluster, 1))
|
||||
.inputItems(new ComparableStack(ModItems.grenade_frag, 1), new ComparableStack(ModItems.pellet_cluster, 1), new OreDictStack(STEEL.plate(), 2)));
|
||||
this.register(new GenericRecipe("ass.signalflare").setup(100, 100).outputItems(new ItemStack(ModItems.grenade_flare, 1))
|
||||
.inputItems(new ComparableStack(ModItems.grenade_generic, 1), new ComparableStack(Items.glowstone_dust, 1), new OreDictStack(AL.plate(), 2)));
|
||||
this.register(new GenericRecipe("ass.electricgrenade").setup(100, 100).outputItems(new ItemStack(ModItems.grenade_electric, 1))
|
||||
.inputItems(new ComparableStack(ModItems.grenade_generic, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CAPACITOR.ordinal()), new OreDictStack(GOLD.plate(), 2)));
|
||||
this.register(new GenericRecipe("ass.pulsegrenade").setup(100, 100).outputItems(new ItemStack(ModItems.grenade_pulse, 4))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 1), new OreDictStack(IRON.plate(), 3), new OreDictStack(MINGRADE.wireFine(), 6), new ComparableStack(Items.diamond, 1)));
|
||||
this.register(new GenericRecipe("ass.plasmagrenade").setup(200, 100).outputItems(new ItemStack(ModItems.grenade_plasma, 2))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 3), new OreDictStack(ALLOY.plate(), 1), new ComparableStack(ModItems.coil_advanced_torus, 1), new ComparableStack(ModItems.cell_deuterium, 1), new ComparableStack(ModItems.cell_tritium, 1)));
|
||||
this.register(new GenericRecipe("ass.taugrenade").setup(200, 100).outputItems(new ItemStack(ModItems.grenade_tau, 2))
|
||||
.inputItems(new OreDictStack(PB.plate(), 3), new OreDictStack(ALLOY.plate(), 1), new ComparableStack(ModItems.coil_advanced_torus, 1), new ComparableStack(ModItems.ammo_standard, 1, EnumAmmo.TAU_URANIUM)));
|
||||
this.register(new GenericRecipe("ass.schrabgrenade").setup(200, 100).outputItems(new ItemStack(ModItems.grenade_schrabidium, 1))
|
||||
.inputItems(new ComparableStack(ModItems.grenade_flare, 1), new OreDictStack(SA326.dust(), 1), new OreDictStack(OreDictManager.getReflector(), 2)));
|
||||
this.register(new GenericRecipe("ass.nukagrenade").setup(600, 100).outputItems(new ItemStack(ModItems.grenade_nuclear, 1))
|
||||
.inputItems(new OreDictStack(IRON.plate(), 1), new OreDictStack(STEEL.plate(), 1), new OreDictStack(PU239.nugget(), 2), new OreDictStack(MINGRADE.wireFine(), 2)));
|
||||
this.register(new GenericRecipe("ass.zomggrenade").setup(600, 100).outputItems(new ItemStack(ModItems.grenade_zomg, 1))
|
||||
.inputItems(new ComparableStack(ModItems.plate_paa, 3), new OreDictStack(OreDictManager.getReflector(), 1), new ComparableStack(ModItems.coil_magnetized_tungsten, 3), new ComparableStack(ModItems.powder_power, 3)));
|
||||
this.register(new GenericRecipe("ass.bholegrenade").setup(1_200, 100).outputItems(new ItemStack(ModItems.grenade_black_hole, 1))
|
||||
.inputItems(new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(OreDictManager.getReflector(), 3), new ComparableStack(ModItems.coil_magnetized_tungsten, 2), new ComparableStack(ModItems.black_hole, 1)));
|
||||
|
||||
/*
|
||||
this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModBlocks., 1))
|
||||
.inputItems());
|
||||
*/
|
||||
|
||||
// turrets
|
||||
this.register(new GenericRecipe("ass.turretchekhov").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_chekhov, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.turretfriendly").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_friendly, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), new OreDictStack(STEEL.pipe(), 3), new OreDictStack(GUNMETAL.mechanism(), 1), new ComparableStack(ModBlocks.crate_iron, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.turretjeremy").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_jeremy, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(STEEL.shell(), 3), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.turrettauon").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_tauon, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModItems.motor_desh, 1), new OreDictStack(CU.ingot(), 32), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.battery_lithium, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.turretrichard").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_richard, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.shell(), 8), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.turrethoward").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_howard, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.motor_desh, 2), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 10), new OreDictStack(WEAPONSTEEL.mechanism(), 3), new ComparableStack(ModBlocks.crate_steel, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.maxwell").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_maxwell, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_lithium_battery, 1), new OreDictStack(STEEL.ingot(), 24), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 4), new OreDictStack(BIGMT.mechanism(), 3), new ComparableStack(ModItems.magnetron, 16), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.fritz").setup(200, 100).outputItems(new ItemStack(ModBlocks.turret_fritz, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 16), new ComparableStack(ModItems.motor, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(GUNMETAL.mechanism(), 3), new ComparableStack(ModBlocks.barrel_steel)));
|
||||
this.register(new GenericRecipe("ass.arty").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.turret_arty, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 128), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(STEEL.pipe(), 12), new OreDictStack(WEAPONSTEEL.mechanism(), 16), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.himars").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.turret_himars, 1))
|
||||
.inputItems(new ComparableStack(ModBlocks.machine_battery, 1), new OreDictStack(STEEL.ingot(), 128), new OreDictStack(ANY_PLASTIC.ingot(), 64), new ComparableStack(ModItems.motor_desh, 5), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(BIGMT.mechanism(), 8), new ComparableStack(ModBlocks.machine_radar, 1), new ComparableStack(ModItems.crt_display, 1)));
|
||||
this.register(new GenericRecipe("ass.himarssmall").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.himarssmallhe").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_HE))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 18), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.himarssmallwp").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_WP))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new OreDictStack(P_WHITE.ingot(), 18), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 48), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.himarssmalltb").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_TB))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new ComparableStack(ModItems.ball_tatb, 32), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 12), new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 12), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.himarssmallnuke").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_MINI_NUKE))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_PLASTIC.ingot(), 24), new ComparableStack(ModItems.rocket_fuel, 48), new ComparableStack(ModItems.ball_tatb, 6), new OreDictStack(PU239.nugget(), 12), new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.himarssmalllava").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_LAVA))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 32), new ComparableStack(ModItems.ball_tatb, 4), new OreDictStack(VOLCANIC.gem(), 1), new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.himarslarge").setup(200, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 36), new ComparableStack(ModItems.ball_tatb, 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.himarslargetb").setup(200, 100).outputItems(new ItemStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE_TB))
|
||||
.inputItems(new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), new ComparableStack(ModItems.rocket_fuel, 36), new ComparableStack(ModItems.ball_tatb, 24), new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 16), new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED)));
|
||||
|
||||
// missile parts
|
||||
this.register(new GenericRecipe("ass.missileassembly").setup(200, 100).outputItems(new ItemStack(ModItems.missile_assembly, 1))
|
||||
.inputItems(new OreDictStack(AL.shell(), 2), new OreDictStack(TI.shell(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.rocket_fuel, 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.warheadhe1").setup(100, 100).outputItems(new ItemStack(ModItems.warhead_generic_small, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 4), new ComparableStack(ModItems.ball_dynamite, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CHIP)));
|
||||
this.register(new GenericRecipe("ass.warheadhe2").setup(200, 100).outputItems(new ItemStack(ModItems.warhead_generic_medium, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 8), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC)));
|
||||
this.register(new GenericRecipe("ass.warheadhe3").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_generic_large, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.warheadinc1").setup(100, 100).outputItems(new ItemStack(ModItems.warhead_incendiary_small, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_small, 1), new OreDictStack(P_RED.dust(), 2)));
|
||||
this.register(new GenericRecipe("ass.warheadinc2").setup(200, 100).outputItems(new ItemStack(ModItems.warhead_incendiary_medium, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_medium, 1), new OreDictStack(P_RED.dust(), 4)));
|
||||
this.register(new GenericRecipe("ass.warheadinc3").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_incendiary_large, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_large, 1), new OreDictStack(P_RED.dust(), 8)));
|
||||
this.register(new GenericRecipe("ass.warheadcl1").setup(100, 100).outputItems(new ItemStack(ModItems.warhead_cluster_small, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModItems.pellet_cluster, 2)));
|
||||
this.register(new GenericRecipe("ass.warheadcl2").setup(200, 100).outputItems(new ItemStack(ModItems.warhead_cluster_medium, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModItems.pellet_cluster, 4)));
|
||||
this.register(new GenericRecipe("ass.warheadcl3").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_cluster_large, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModItems.pellet_cluster, 8)));
|
||||
this.register(new GenericRecipe("ass.warheadbb1").setup(100, 100).outputItems(new ItemStack(ModItems.warhead_buster_small, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_small, 1), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 2)));
|
||||
this.register(new GenericRecipe("ass.warheadbb2").setup(200, 100).outputItems(new ItemStack(ModItems.warhead_buster_medium, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_medium, 1), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4)));
|
||||
this.register(new GenericRecipe("ass.warheadbb3").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_buster_large, 1))
|
||||
.inputItems(new ComparableStack(ModItems.warhead_generic_large, 1), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8)));
|
||||
this.register(new GenericRecipe("ass.warheadnuke").setup(400, 100).outputItems(new ItemStack(ModItems.warhead_nuclear, 1))
|
||||
.inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(PB.plateCast(), 6), new OreDictStack(U235.billet(), 6), new ComparableStack(ModItems.cordite, 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER)));
|
||||
this.register(new GenericRecipe("ass.warheadthermonuke").setup(600, 100).outputItems(new ItemStack(ModItems.warhead_mirv, 1))
|
||||
.inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(PB.plateCast(), 6), new OreDictStack(PU239.billet(), 8), new ComparableStack(ModItems.ball_tatb, 12), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED))
|
||||
.inputFluids(new FluidStack(Fluids.DEUTERIUM, 4_000)));
|
||||
this.register(new GenericRecipe("ass.warheadvolcano").setup(600, 100).outputItems(new ItemStack(ModItems.warhead_volcano, 1))
|
||||
.inputItems(new OreDictStack(TI.plateCast(), 12), new OreDictStack(STEEL.plateCast(), 6), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CAPACITOR_BOARD.ordinal())));
|
||||
this.register(new GenericRecipe("ass.thrusternerva").setup(600, 100).outputItems(new ItemStack(ModItems.thruster_nuclear, 1))
|
||||
.inputItems(new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new OreDictStack(STEEL.pipe(), 4)));
|
||||
this.register(new GenericRecipe("ass.stealthmissile").setup(1_200, 100).outputItems(new ItemStack(ModItems.missile_stealth, 1))
|
||||
.inputItems(new OreDictStack(TI.plate(), 20), new OreDictStack(AL.plate(), 20), new OreDictStack(KEY_BLACK, 16), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(STEEL.bolt(), 32)));
|
||||
this.register(new GenericRecipe("ass.shuttlemissile").setup(200, 100).outputItems(new ItemStack(ModItems.missile_shuttle, 1))
|
||||
.inputItems(new ComparableStack(ModItems.missile_generic, 2), new ComparableStack(ModItems.missile_strong, 1), new OreDictStack(KEY_ORANGE, 5), new ComparableStack(ModItems.canister_full, 24, Fluids.GASOLINE_LEADED.getID()), new OreDictStack(FIBER.ingot(), 12), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.BASIC), new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 8), new OreDictStack(KEY_ANYPANE, 6), new OreDictStack(STEEL.plate(), 4)));
|
||||
this.register(new GenericRecipe("ass.launchpad").setup(200, 100).outputItems(new ItemStack(ModBlocks.launch_pad_large, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 6), new OreDictStack(ANY_CONCRETE.any(), 64), new OreDictStack(ANY_PLASTIC.ingot(), 16), new ComparableStack(ModBlocks.steel_scaffold, 24), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.launchpadsilo").setup(200, 100).outputItems(new ItemStack(ModBlocks.launch_pad, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 8), new OreDictStack(ANY_CONCRETE.any(), 8), new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED)));
|
||||
/*
|
||||
this.register(new GenericRecipe("ass.").setup(, 100).outputItems(new ItemStack(ModItems., 1))
|
||||
.inputItems());
|
||||
*/
|
||||
|
||||
// weapons
|
||||
this.register(new GenericRecipe("ass.schrabhammer").setup(6_000, 100).outputItems(new ItemStack(ModItems.schrabidium_hammer, 1))
|
||||
.inputItems(
|
||||
new OreDictStack(SA326.block(), 35),
|
||||
new ComparableStack(ModItems.billet_yharonite, 64),
|
||||
new ComparableStack(ModItems.billet_yharonite, 64),
|
||||
new ComparableStack(ModItems.coin_ufo, 1),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64),
|
||||
new ComparableStack(ModItems.fragment_meteorite, 64)));
|
||||
|
||||
// ammo
|
||||
this.register(new GenericRecipe("ass.50bmgsm").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_standard, 6, EnumAmmo.BMG50_SM.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 6), new OreDictStack(STAR.ingot(), 3))
|
||||
.setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "silverstorm"));
|
||||
this.register(new GenericRecipe("ass.50bmgbypass").setup(100, 100).outputItems(new ItemStack(ModItems.ammo_secret, 12, EnumAmmoSecret.BMG50_BLACK.ordinal()))
|
||||
.inputItems(new ComparableStack(ModItems.casing, 2, EnumCasingType.LARGE_STEEL), new OreDictStack(ANY_SMOKELESS.dust(), 24), new ComparableStack(ModItems.item_secret, 1, EnumSecretType.SELENIUM_STEEL), new ComparableStack(ModItems.black_diamond))
|
||||
.setPools(GenericRecipes.POOL_PREFIX_SECRET + "psalm"));
|
||||
|
||||
// tools
|
||||
this.register(new GenericRecipe("ass.multitool").setup(100, 100).outputItems(new ItemStack(ModItems.multitool_hit, 1))
|
||||
.inputItems(new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new OreDictStack(STEEL.plate(), 4), new OreDictStack(GOLD.wireFine(), 12), new ComparableStack(ModItems.motor, 4), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)));
|
||||
|
||||
// space
|
||||
this.register(new GenericRecipe("ass.soyuz").setup(6_000, 100).outputItems(new ItemStack(ModItems.missile_soyuz, 1))
|
||||
.inputItems(new OreDictStack(TI.shell(), 32),
|
||||
new OreDictStack(RUBBER.ingot(), 64),
|
||||
new ComparableStack(ModItems.rocket_fuel, 64),
|
||||
new ComparableStack(ModItems.thruster_small, 12),
|
||||
new ComparableStack(ModItems.thruster_medium, 12),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER),
|
||||
new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz"));
|
||||
this.register(new GenericRecipe("ass.lander").setup(2_400, 100).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1))
|
||||
.inputItems(new OreDictStack(AL.shell(), 4),
|
||||
new OreDictStack(RUBBER.ingot(), 16),
|
||||
new ComparableStack(ModItems.rocket_fuel, 16),
|
||||
new ComparableStack(ModItems.thruster_small, 3),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED),
|
||||
new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz"));
|
||||
this.register(new GenericRecipe("ass.satellitebase").setup(600, 100).outputItems(new ItemStack(ModItems.sat_base, 1))
|
||||
.inputItems(new OreDictStack(RUBBER.ingot(), 12),
|
||||
new OreDictStack(TI.shell(), 3),
|
||||
new ComparableStack(ModItems.thruster_large, 1),
|
||||
new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.photo_panel, 24),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)));
|
||||
this.register(new GenericRecipe("ass.satellitemapper").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_mapper, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8)));
|
||||
this.register(new GenericRecipe("ass.satellitescanner").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_scanner, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 3),
|
||||
new OreDictStack(TI.plateCast(), 8),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.magnetron, 8),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal())));
|
||||
this.register(new GenericRecipe("ass.satelliteradar").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_radar, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 3),
|
||||
new OreDictStack(TI.plateCast(), 12),
|
||||
new ComparableStack(ModItems.magnetron, 12),
|
||||
new ComparableStack(ModItems.coil_gold, 16),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal())));
|
||||
this.register(new GenericRecipe("ass.satellitelaser").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_laser, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 6),
|
||||
new OreDictStack(CU.plateCast(), 24),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD),
|
||||
new ComparableStack(ModItems.crystal_diamond, 8),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8)));
|
||||
this.register(new GenericRecipe("ass.satelliteresonator").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_resonator, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 6),
|
||||
new OreDictStack(STAR.ingot(), 12),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 48),
|
||||
new ComparableStack(ModItems.crystal_xen, 1),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.satelliterelay").setup(600, 100).outputItems(new ItemStack(ModItems.sat_foeq, 1))
|
||||
.inputItems(new OreDictStack(TI.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 8),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()),
|
||||
new ComparableStack(ModItems.photo_panel, 16),
|
||||
new ComparableStack(ModItems.thruster_nuclear, 1),
|
||||
new ComparableStack(ModItems.ingot_uranium_fuel, 6),
|
||||
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModItems.magnetron, 3),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)));
|
||||
this.register(new GenericRecipe("ass.satelliteasteroidminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_miner, 1))
|
||||
.inputItems(new OreDictStack(BIGMT.plate(), 24),
|
||||
new ComparableStack(ModItems.motor_desh, 2),
|
||||
new ComparableStack(ModItems.drill_titanium, 2),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModItems.centrifuge_element, 4),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)));
|
||||
this.register(new GenericRecipe("ass.satellitelunarminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_lunar_miner, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_meteorite, 4),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.motor, 2),
|
||||
new ComparableStack(ModItems.drill_titanium, 2),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModBlocks.machine_lithium_battery, 1)));
|
||||
this.register(new GenericRecipe("ass.gerald").setup(6_000, 100).outputItems(new ItemStack(ModItems.sat_gerald, 1))
|
||||
.inputItems(new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(SBD.plateCast(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new OreDictStack(BSCCO.wireDense(), 64),
|
||||
new ComparableStack(ModBlocks.det_nuke, 64),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.part_generic, 64, EnumPartType.HDE),
|
||||
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
|
||||
new ComparableStack(ModItems.coin_ufo, 1)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "gerald"));
|
||||
|
||||
if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) {
|
||||
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
|
||||
if(mb != null) {
|
||||
|
||||
this.register(new GenericRecipe("ass.digimemer").setup(1_200, 100).outputItems(new ItemStack(mb, 1, 4))
|
||||
.inputItems(new OreDictStack(BIGMT.plateCast(), 16),
|
||||
new OreDictStack(CU.plateWelded(), 12),
|
||||
new OreDictStack("alloyUltimate", 32),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
|
||||
new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_BOARD),
|
||||
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_GOLD.id),
|
||||
new ComparableStack(ModItems.motor_bismuth, 3)));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static HashMap getRecipes() {
|
||||
|
||||
@ -31,11 +31,22 @@ public class GenericRecipe {
|
||||
protected ItemStack icon;
|
||||
public boolean writeIcon = false;
|
||||
public boolean customLocalization = false;
|
||||
protected String[] blueprintPools = null;
|
||||
|
||||
public GenericRecipe(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean isPooled() {
|
||||
return blueprintPools != null;
|
||||
}
|
||||
|
||||
public boolean isPartOfPool(String lookingFor) {
|
||||
if(!isPooled()) return false;
|
||||
for(String pool : blueprintPools) if (pool.equals(lookingFor)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public GenericRecipe setDuration(int duration) { this.duration = duration; return this; }
|
||||
public GenericRecipe setPower(long power) { this.power = power; return this; }
|
||||
public GenericRecipe setup(int duration, long power) { return this.setDuration(duration).setPower(power); }
|
||||
@ -45,6 +56,7 @@ public class GenericRecipe {
|
||||
public GenericRecipe setIcon(Item item) { return this.setIcon(new ItemStack(item)); }
|
||||
public GenericRecipe setIcon(Block block) { return this.setIcon(new ItemStack(block)); }
|
||||
public GenericRecipe setNamed() { this.customLocalization = true; return this; }
|
||||
public GenericRecipe setPools(String... pools) { this.blueprintPools = pools; for(String pool : pools) GenericRecipes.addToPool(pool, this); return this; }
|
||||
|
||||
public GenericRecipe inputItems(AStack... input) { this.inputItem = input; return this; }
|
||||
public GenericRecipe inputFluids(FluidStack... input) { this.inputFluid = input; return this; }
|
||||
|
||||
@ -32,9 +32,21 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
|
||||
|
||||
public static final Random RNG = new Random();
|
||||
|
||||
/** Alternate recipes, i.e. obtainable otherwise */
|
||||
public static final String POOL_PREFIX_ALT = "alt.";
|
||||
/** Discoverable recipes, i.e. not obtainable otherwise */
|
||||
public static final String POOL_PREFIX_DISCOVER = "discover.";
|
||||
/** Secret recipes, self-explantory. Why even have this comment? */
|
||||
public static final String POOL_PREFIX_SECRET = "secret.";
|
||||
|
||||
public List<T> recipeOrderedList = new ArrayList();
|
||||
public HashMap<String, T> recipeNameMap = new HashMap();
|
||||
|
||||
/** Blueprint pool name to list of recipe names that are part of this pool */
|
||||
public static HashMap<String, List<String>> blueprintPools = new HashMap();
|
||||
/** Name to recipe map for all recipes that are part of pools for lookup */
|
||||
public static HashMap<String, GenericRecipe> pooledBlueprints = new HashMap();
|
||||
|
||||
public abstract int inputItemLimit();
|
||||
public abstract int inputFluidLimit();
|
||||
public abstract int outputItemLimit();
|
||||
@ -42,6 +54,21 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
|
||||
public boolean hasDuration() { return true; }
|
||||
public boolean hasPower() { return true; }
|
||||
|
||||
public static void addToPool(String pool, GenericRecipe recipe) {
|
||||
List<String> list = blueprintPools.get(pool);
|
||||
if(list == null) {
|
||||
list = new ArrayList();
|
||||
blueprintPools.put(pool, list);
|
||||
}
|
||||
list.add(recipe.name);
|
||||
pooledBlueprints.put(recipe.name, recipe);
|
||||
}
|
||||
|
||||
public static void clearPools() {
|
||||
blueprintPools.clear();
|
||||
pooledBlueprints.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getRecipeObject() {
|
||||
return this.recipeOrderedList;
|
||||
@ -55,7 +82,7 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
|
||||
|
||||
public void register(T recipe) {
|
||||
this.recipeOrderedList.add(recipe);
|
||||
if(recipeNameMap.containsKey(recipe.name)) throw new IllegalStateException("Recipe " + recipe.name + " has been reciped with a duplicate ID!");
|
||||
if(recipeNameMap.containsKey(recipe.name)) throw new IllegalStateException("Recipe " + recipe.name + " has been registered with a duplicate ID!");
|
||||
this.recipeNameMap.put(recipe.name, recipe);
|
||||
}
|
||||
|
||||
@ -75,6 +102,7 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
|
||||
|
||||
if(obj.has("icon")) recipe.setIcon(this.readItemStack(obj.get("icon").getAsJsonArray()));
|
||||
if(obj.has("named") && obj.get("named").getAsBoolean()) recipe.setNamed();
|
||||
if(obj.has("blueprintpool")) recipe.setPools(obj.get("blueprintpool").getAsString().split(":"));
|
||||
|
||||
readExtraData(element, recipe);
|
||||
|
||||
@ -123,6 +151,7 @@ public abstract class GenericRecipes<T extends GenericRecipe> extends Serializab
|
||||
}
|
||||
|
||||
if(recipe.customLocalization) writer.name("named").value(true);
|
||||
if(recipe.blueprintPools != null && recipe.blueprintPools.length > 0) writer.name("blueprintpool").value(String.join(":", recipe.blueprintPools));
|
||||
|
||||
writeExtraData(recipe, writer);
|
||||
}
|
||||
|
||||
@ -106,6 +106,8 @@ public abstract class SerializableRecipe {
|
||||
|
||||
MainRegistry.logger.info("Starting recipe init!");
|
||||
|
||||
GenericRecipes.clearPools();
|
||||
|
||||
for(SerializableRecipe recipe : recipeHandlers) {
|
||||
|
||||
recipe.deleteRecipes();
|
||||
|
||||
@ -322,7 +322,7 @@ public class ModItems {
|
||||
public static Item plate_combine_steel;
|
||||
public static Item plate_mixed;
|
||||
public static Item plate_paa;
|
||||
public static Item pipes_steel;
|
||||
@Deprecated public static Item pipes_steel;
|
||||
public static Item drill_titanium;
|
||||
public static Item plate_dalekanium;
|
||||
public static Item plate_euphemium;
|
||||
@ -553,22 +553,19 @@ public class ModItems {
|
||||
public static Item coil_copper;
|
||||
public static Item coil_copper_torus;
|
||||
public static Item coil_tungsten;
|
||||
public static Item tank_steel;
|
||||
@Deprecated public static Item tank_steel;
|
||||
public static Item motor;
|
||||
public static Item motor_desh;
|
||||
public static Item motor_bismuth;
|
||||
public static Item centrifuge_element;
|
||||
public static Item reactor_core;
|
||||
public static Item rtg_unit;
|
||||
public static Item levitation_unit;
|
||||
|
||||
public static Item coil_advanced_alloy;
|
||||
public static Item coil_advanced_torus;
|
||||
public static Item coil_magnetized_tungsten;
|
||||
public static Item coil_gold;
|
||||
public static Item coil_gold_torus;
|
||||
public static Item component_limiter;
|
||||
public static Item component_emitter;
|
||||
public static Item chlorine_pinwheel;
|
||||
public static Item deuterium_filter;
|
||||
|
||||
@ -644,12 +641,6 @@ public class ModItems {
|
||||
public static Item seg_15;
|
||||
public static Item seg_20;
|
||||
|
||||
public static Item chopper_head;
|
||||
public static Item chopper_gun;
|
||||
public static Item chopper_torso;
|
||||
public static Item chopper_tail;
|
||||
public static Item chopper_wing;
|
||||
public static Item chopper_blades;
|
||||
public static Item combine_scrap;
|
||||
|
||||
public static Item shimmer_head;
|
||||
@ -747,15 +738,12 @@ public class ModItems {
|
||||
public static Item pellet_rtg_gold;
|
||||
public static Item pellet_rtg_lead;
|
||||
|
||||
public static Item tritium_deuterium_cake;
|
||||
@Deprecated public static Item tritium_deuterium_cake;
|
||||
|
||||
public static Item piston_selenium;
|
||||
public static Item piston_set;
|
||||
public static Item drillbit;
|
||||
|
||||
//public static Item crystal_energy;
|
||||
//public static Item pellet_coolant;
|
||||
|
||||
public static Item rune_blank;
|
||||
public static Item rune_isa;
|
||||
public static Item rune_dagaz;
|
||||
@ -926,8 +914,6 @@ public class ModItems {
|
||||
public static Item bottle2_empty;
|
||||
public static Item bottle2_korl;
|
||||
public static Item bottle2_fritz;
|
||||
public static Item bottle2_korl_special;
|
||||
public static Item bottle2_fritz_special;
|
||||
public static Item flask_empty;
|
||||
public static Item flask_infusion;
|
||||
public static Item chocolate_milk;
|
||||
@ -1193,6 +1179,7 @@ public class ModItems {
|
||||
public static Item radar_linker;
|
||||
public static Item settings_tool;
|
||||
|
||||
public static Item blueprints;
|
||||
public static Item template_folder;
|
||||
public static Item journal_pip;
|
||||
public static Item journal_bj;
|
||||
@ -2192,7 +2179,6 @@ public class ModItems {
|
||||
|
||||
public static Item polaroid;
|
||||
public static Item glitch;
|
||||
public static Item letter;
|
||||
public static Item book_secret;
|
||||
public static Item book_of_;
|
||||
public static Item page_of_;
|
||||
@ -2724,12 +2710,9 @@ public class ModItems {
|
||||
centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element");
|
||||
reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core");
|
||||
rtg_unit = new Item().setUnlocalizedName("rtg_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":rtg_unit");
|
||||
levitation_unit = new Item().setUnlocalizedName("levitation_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":levitation_unit");
|
||||
coil_magnetized_tungsten = new Item().setUnlocalizedName("coil_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_magnetized_tungsten");
|
||||
coil_gold = new Item().setUnlocalizedName("coil_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold");
|
||||
coil_gold_torus = new Item().setUnlocalizedName("coil_gold_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_gold_torus");
|
||||
component_limiter = new Item().setUnlocalizedName("component_limiter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_limiter");
|
||||
component_emitter = new Item().setUnlocalizedName("component_emitter").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":component_emitter");
|
||||
chlorine_pinwheel = new ItemInfiniteFluid(Fluids.CHLORINE, 1, 2).setUnlocalizedName("chlorine_pinwheel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chlorine_pinwheel");
|
||||
FluidTank.noDualUnload.add(chlorine_pinwheel);
|
||||
ring_starmetal = new Item().setUnlocalizedName("ring_starmetal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ring_starmetal");
|
||||
@ -2793,12 +2776,6 @@ public class ModItems {
|
||||
seg_15 = new Item().setUnlocalizedName("seg_15").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_15");
|
||||
seg_20 = new Item().setUnlocalizedName("seg_20").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_20");
|
||||
|
||||
chopper_head = new Item().setUnlocalizedName("chopper_head").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chopper_head");
|
||||
chopper_gun = new Item().setUnlocalizedName("chopper_gun").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chopper_gun");
|
||||
chopper_torso = new Item().setUnlocalizedName("chopper_torso").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chopper_torso");
|
||||
chopper_tail = new Item().setUnlocalizedName("chopper_tail").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chopper_tail");
|
||||
chopper_wing = new Item().setUnlocalizedName("chopper_wing").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chopper_wing");
|
||||
chopper_blades = new Item().setUnlocalizedName("chopper_blades").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chopper_blades");
|
||||
combine_scrap = new Item().setUnlocalizedName("combine_scrap").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":combine_scrap");
|
||||
|
||||
shimmer_head = new Item().setUnlocalizedName("shimmer_head").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":shimmer_head_original");
|
||||
@ -2946,7 +2923,7 @@ public class ModItems {
|
||||
ingot_raw = new ItemAutogen(MaterialShapes.INGOT).setUnlocalizedName("ingot_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_raw");
|
||||
plate_cast = new ItemAutogen(MaterialShapes.CASTPLATE).aot(Mats.MAT_BISMUTH, "plate_cast_bismuth").setUnlocalizedName("plate_cast").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_cast");
|
||||
plate_welded = new ItemAutogen(MaterialShapes.WELDEDPLATE).setUnlocalizedName("plate_welded").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_welded");
|
||||
heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":heavy_component");
|
||||
heavy_component = new ItemAutogen(MaterialShapes.HEAVY_COMPONENT).setUnlocalizedName("heavy_component").setCreativeTab(null).setTextureName(RefStrings.MODID + ":heavy_component");
|
||||
wire_fine = new ItemAutogen(MaterialShapes.WIRE)
|
||||
.aot(Mats.MAT_ALUMINIUM, "wire_aluminium").aot(Mats.MAT_COPPER, "wire_copper")
|
||||
.aot(Mats.MAT_MINGRADE, "wire_red_copper").aot(Mats.MAT_GOLD, "wire_gold")
|
||||
@ -3114,8 +3091,6 @@ public class ModItems {
|
||||
bottle2_empty = new Item().setUnlocalizedName("bottle2_empty").setTextureName(RefStrings.MODID + ":bottle2_empty");
|
||||
bottle2_korl = new ItemEnergy().makeBottle(bottle2_empty, cap_korl).setUnlocalizedName("bottle2_korl").setContainerItem(ModItems.bottle2_empty).setTextureName(RefStrings.MODID + ":bottle2_korl");
|
||||
bottle2_fritz = new ItemEnergy().makeBottle(bottle2_empty, cap_fritz).setUnlocalizedName("bottle2_fritz").setContainerItem(ModItems.bottle2_empty).setTextureName(RefStrings.MODID + ":bottle2_fritz");
|
||||
bottle2_korl_special = new ItemEnergy().makeBottle(bottle2_empty, cap_korl).setUnlocalizedName("bottle2_korl_special").setContainerItem(ModItems.bottle2_empty).setTextureName(RefStrings.MODID + ":bottle2_korl");
|
||||
bottle2_fritz_special = new ItemEnergy().makeBottle(bottle2_empty, cap_fritz).setUnlocalizedName("bottle2_fritz_special").setContainerItem(ModItems.bottle2_empty).setTextureName(RefStrings.MODID + ":bottle2_fritz");
|
||||
flask_infusion = new ItemFlask().setUnlocalizedName("flask_infusion").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":flask");
|
||||
chocolate_milk = new ItemEnergy().setUnlocalizedName("chocolate_milk").setTextureName(RefStrings.MODID + ":chocolate_milk");
|
||||
coffee = new ItemEnergy().setUnlocalizedName("coffee").setTextureName(RefStrings.MODID + ":coffee");
|
||||
@ -4121,6 +4096,7 @@ public class ModItems {
|
||||
|
||||
mech_key = new ItemCustomLore().setUnlocalizedName("mech_key").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":mech_key");
|
||||
|
||||
blueprints = new ItemBlueprints().setUnlocalizedName("blueprints").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":blueprints");
|
||||
template_folder = new ItemTemplateFolder().setUnlocalizedName("template_folder").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":template_folder");
|
||||
journal_pip = new ItemTemplateFolder().setUnlocalizedName("journal_pip").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":journal_pip");
|
||||
journal_bj = new ItemTemplateFolder().setUnlocalizedName("journal_bj").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":journal_bj");
|
||||
@ -4935,7 +4911,6 @@ public class ModItems {
|
||||
|
||||
polaroid = new ItemPolaroid().setUnlocalizedName("polaroid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":polaroid_" + MainRegistry.polaroidID);
|
||||
glitch = new ItemGlitch().setUnlocalizedName("glitch").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glitch_" + MainRegistry.polaroidID);
|
||||
letter = new ItemStarterKit().setUnlocalizedName("letter").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":letter");
|
||||
book_secret = new ItemCustomLore().setUnlocalizedName("book_secret").setCreativeTab(MainRegistry.polaroidID == 11 ? MainRegistry.consumableTab : null).setTextureName(RefStrings.MODID + ":book_secret");
|
||||
book_of_ = new ItemBook().setUnlocalizedName("book_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_of_");
|
||||
page_of_ = new ItemEnumMulti(ItemEnums.EnumPages.class, true, false).setUnlocalizedName("page_of_").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":page_of_");
|
||||
@ -5511,7 +5486,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(centrifuge_element, centrifuge_element.getUnlocalizedName());
|
||||
GameRegistry.registerItem(reactor_core, reactor_core.getUnlocalizedName());
|
||||
GameRegistry.registerItem(rtg_unit, rtg_unit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(levitation_unit, levitation_unit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(pipes_steel, pipes_steel.getUnlocalizedName());
|
||||
GameRegistry.registerItem(drill_titanium, drill_titanium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(photo_panel, photo_panel.getUnlocalizedName());
|
||||
@ -5541,10 +5515,6 @@ public class ModItems {
|
||||
//GameRegistry.registerItem(telepad, telepad.getUnlocalizedName());
|
||||
GameRegistry.registerItem(entanglement_kit, entanglement_kit.getUnlocalizedName());
|
||||
|
||||
//AMS Parts
|
||||
GameRegistry.registerItem(component_limiter, component_limiter.getUnlocalizedName());
|
||||
GameRegistry.registerItem(component_emitter, component_emitter.getUnlocalizedName());
|
||||
|
||||
//Bomb Parts
|
||||
GameRegistry.registerItem(fins_flat, fins_flat.getUnlocalizedName());
|
||||
GameRegistry.registerItem(fins_small_steel, fins_small_steel.getUnlocalizedName());
|
||||
@ -5596,12 +5566,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(seg_20, seg_20.getUnlocalizedName());
|
||||
|
||||
//Chopper parts
|
||||
GameRegistry.registerItem(chopper_head, chopper_head.getUnlocalizedName());
|
||||
GameRegistry.registerItem(chopper_gun, chopper_gun.getUnlocalizedName());
|
||||
GameRegistry.registerItem(chopper_torso, chopper_torso.getUnlocalizedName());
|
||||
GameRegistry.registerItem(chopper_tail, chopper_tail.getUnlocalizedName());
|
||||
GameRegistry.registerItem(chopper_wing, chopper_wing.getUnlocalizedName());
|
||||
GameRegistry.registerItem(chopper_blades, chopper_blades.getUnlocalizedName());
|
||||
GameRegistry.registerItem(combine_scrap, combine_scrap.getUnlocalizedName());
|
||||
|
||||
//Hammer Parts
|
||||
@ -5774,6 +5738,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(fusion_core_infinite, fusion_core_infinite.getUnlocalizedName());
|
||||
|
||||
//Folders
|
||||
GameRegistry.registerItem(blueprints, blueprints.getUnlocalizedName());
|
||||
GameRegistry.registerItem(template_folder, template_folder.getUnlocalizedName());
|
||||
GameRegistry.registerItem(journal_pip, journal_pip.getUnlocalizedName());
|
||||
GameRegistry.registerItem(journal_bj, journal_bj.getUnlocalizedName());
|
||||
@ -6736,8 +6701,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(bottle2_empty, bottle2_empty.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bottle2_korl, bottle2_korl.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bottle2_fritz, bottle2_fritz.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bottle2_korl_special, bottle2_korl_special.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bottle2_fritz_special, bottle2_fritz_special.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bottle_opener, bottle_opener.getUnlocalizedName());
|
||||
|
||||
//Flasks
|
||||
@ -7119,7 +7082,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(euphemium_kit, euphemium_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(legacy_toolbox, legacy_toolbox.getUnlocalizedName());
|
||||
GameRegistry.registerItem(toolbox, toolbox.getUnlocalizedName());
|
||||
GameRegistry.registerItem(letter, letter.getUnlocalizedName());
|
||||
|
||||
//Misile Loot Boxes
|
||||
GameRegistry.registerItem(loot_10, loot_10.getUnlocalizedName());
|
||||
|
||||
@ -23,6 +23,7 @@ import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
|
||||
@Spaghetti("wtf is this shit")
|
||||
public class ItemEnergy extends Item {
|
||||
|
||||
private Item container = null;
|
||||
@ -142,18 +143,6 @@ public class ItemEnergy extends Item {
|
||||
player.addPotionEffect(new PotionEffect(Potion.resistance.id, 30 * 20, 2));
|
||||
player.addPotionEffect(new PotionEffect(Potion.jump.id, 30 * 20, 2));
|
||||
}
|
||||
if(this == ModItems.bottle2_korl_special) {
|
||||
player.heal(16);
|
||||
player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 120 * 20, 1));
|
||||
player.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 120 * 20, 2));
|
||||
player.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 120 * 20, 2));
|
||||
}
|
||||
if(this == ModItems.bottle2_fritz_special) {
|
||||
player.heal(16);
|
||||
player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 120 * 20, 1));
|
||||
player.addPotionEffect(new PotionEffect(Potion.resistance.id, 120 * 20, 2));
|
||||
player.addPotionEffect(new PotionEffect(Potion.jump.id, 120 * 20, 2));
|
||||
}
|
||||
if(this == ModItems.bottle_sparkle) {
|
||||
player.heal(10F);
|
||||
player.addPotionEffect(new PotionEffect(Potion.moveSpeed.id, 120 * 20, 1));
|
||||
@ -202,28 +191,24 @@ public class ItemEnergy extends Item {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxItemUseDuration(ItemStack p_77626_1_) {
|
||||
public int getMaxItemUseDuration(ItemStack stack) {
|
||||
return 32;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumAction getItemUseAction(ItemStack p_77661_1_) {
|
||||
public EnumAction getItemUseAction(ItemStack stack) {
|
||||
return EnumAction.drink;
|
||||
}
|
||||
|
||||
@Spaghetti("cover yourself in oil")
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) {
|
||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
||||
if(VersatileConfig.hasPotionSickness(player)) return stack;
|
||||
if(this.requiresOpener && !player.inventory.hasItem(ModItems.bottle_opener)) return stack;
|
||||
|
||||
if(VersatileConfig.hasPotionSickness(p_77659_3_))
|
||||
return p_77659_1_;
|
||||
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
|
||||
|
||||
if(this.requiresOpener && !p_77659_3_.inventory.hasItem(ModItems.bottle_opener))
|
||||
return p_77659_1_;
|
||||
|
||||
p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_));
|
||||
|
||||
return p_77659_1_;
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -260,51 +245,32 @@ public class ItemEnergy extends Item {
|
||||
}
|
||||
if(this == ModItems.bottle_nuka) {
|
||||
list.add("Contains about 210 kcal and 1500 mSv.");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle_cherry) {
|
||||
list.add("Now with severe radiation poisoning in every seventh bottle!");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle_quantum) {
|
||||
list.add("Comes with a colorful mix of over 70 isotopes!");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle2_korl) {
|
||||
list.add("Contains actual orange juice!");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle2_fritz) {
|
||||
list.add("moremore caffeine");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle2_korl_special) {
|
||||
if(MainRegistry.polaroidID == 11)
|
||||
list.add("shgehgev u rguer");
|
||||
else
|
||||
list.add("Contains actual orange juice!");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle2_fritz_special) {
|
||||
if(MainRegistry.polaroidID == 11)
|
||||
list.add("ygrogr fgrof bf");
|
||||
else
|
||||
list.add("moremore caffeine");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle_sparkle) {
|
||||
if(MainRegistry.polaroidID == 11)
|
||||
list.add("Contains trace amounts of taint.");
|
||||
else
|
||||
list.add("The most delicious beverage in the wasteland!");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
if(this == ModItems.bottle_rad) {
|
||||
if(MainRegistry.polaroidID == 11)
|
||||
list.add("Now with 400% more radiation!");
|
||||
else
|
||||
list.add("Tastes like radish and radiation.");
|
||||
list.add("[Requires bottle opener]");
|
||||
}
|
||||
|
||||
if(this.requiresOpener) list.add("[Requires bottle opener]");
|
||||
}
|
||||
}
|
||||
|
||||
132
src/main/java/com/hbm/items/machine/ItemBlueprints.java
Normal file
@ -0,0 +1,132 @@
|
||||
package com.hbm.items.machine;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemBlueprints extends Item {
|
||||
|
||||
@SideOnly(Side.CLIENT) protected IIcon iconDiscover;
|
||||
@SideOnly(Side.CLIENT) protected IIcon iconSecret;
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister reg) {
|
||||
super.registerIcons(reg);
|
||||
this.iconDiscover = reg.registerIcon(this.getIconString() + "_discover");
|
||||
this.iconSecret = reg.registerIcon(this.getIconString() + "_secret");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIconIndex(ItemStack stack) {
|
||||
return this.getIcon(stack, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIcon(ItemStack stack, int pass) {
|
||||
|
||||
if(stack.hasTagCompound()) {
|
||||
String poolName = stack.stackTagCompound.getString("pool");
|
||||
if(poolName == null) return this.itemIcon;
|
||||
if(poolName.startsWith(GenericRecipes.POOL_PREFIX_DISCOVER)) return this.iconDiscover;
|
||||
if(poolName.startsWith(GenericRecipes.POOL_PREFIX_SECRET)) return this.iconSecret;
|
||||
}
|
||||
|
||||
return this.itemIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tab, List list) {
|
||||
for(Entry<String, List<String>> pool : GenericRecipes.blueprintPools.entrySet()) {
|
||||
list.add(make(pool.getKey()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
||||
if(world.isRemote) return stack;
|
||||
if(!player.inventory.hasItem(Items.paper)) return stack;
|
||||
|
||||
player.inventory.consumeInventoryItem(Items.paper);
|
||||
player.swingItem();
|
||||
|
||||
ItemStack copy = stack.copy();
|
||||
copy.stackSize = 1;
|
||||
|
||||
if(!player.capabilities.isCreativeMode) {
|
||||
if(stack.stackSize < stack.getMaxStackSize()) {
|
||||
stack.stackSize++;
|
||||
return stack;
|
||||
}
|
||||
|
||||
if(!player.inventory.addItemStackToInventory(copy)) {
|
||||
copy = stack.copy();
|
||||
copy.stackSize = 1;
|
||||
player.dropPlayerItemWithRandomChoice(copy, false);
|
||||
}
|
||||
|
||||
player.inventoryContainer.detectAndSendChanges();
|
||||
} else {
|
||||
player.dropPlayerItemWithRandomChoice(copy, false);
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.RED + "Right-click to copy (requires paper)");
|
||||
|
||||
if(!stack.hasTagCompound()) {
|
||||
return;
|
||||
}
|
||||
|
||||
String poolName = stack.stackTagCompound.getString("pool");
|
||||
List<String> pool = GenericRecipes.blueprintPools.get(poolName);
|
||||
|
||||
if(pool == null || pool.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for(String name : pool) {
|
||||
GenericRecipe recipe = GenericRecipes.pooledBlueprints.get(name);
|
||||
if(recipe != null) {
|
||||
list.add(recipe.getLocalizedName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String grabPool(ItemStack stack) {
|
||||
if(stack == null) return null;
|
||||
if(stack.getItem() != ModItems.blueprints) return null;
|
||||
if(!stack.hasTagCompound()) return null;
|
||||
if(!stack.stackTagCompound.hasKey("pool")) return null;
|
||||
return stack.stackTagCompound.getString("pool");
|
||||
}
|
||||
|
||||
public ItemStack make(String pool) {
|
||||
ItemStack stack = new ItemStack(ModItems.blueprints);
|
||||
stack.stackTagCompound = new NBTTagCompound();
|
||||
stack.stackTagCompound.setString("pool", pool);
|
||||
return stack;
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,6 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemBattery;
|
||||
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
|
||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||
import com.hbm.util.ShadyUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -22,10 +21,9 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@Deprecated //not deprecated per se but please stop using it wherever possible
|
||||
@Deprecated
|
||||
@Spaghetti("i do not care how much 'optimization' you want to throw at this dumpster fire but there's no saving grace here")
|
||||
public class ItemStarterKit extends Item {
|
||||
|
||||
@ -75,8 +73,8 @@ public class ItemStarterKit extends Item {
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_difurnace_off, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_gascent, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_reactor_breeding, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemplant, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembly_machine, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemical_plant, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.reactor_research, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_turbine, 2));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.radaway, 8));
|
||||
@ -95,7 +93,6 @@ public class ItemStarterKit extends Item {
|
||||
|
||||
if(this == ModItems.nuke_advanced_kit)
|
||||
{
|
||||
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.powder_yellowcake, 64));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.powder_plutonium, 64));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.ingot_steel, 64));
|
||||
@ -113,8 +110,8 @@ public class ItemStarterKit extends Item {
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_turbine, 4));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_radgen, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_rtg_grey, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembler, 3));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemplant, 2));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_assembly_machine, 3));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_chemical_plant, 2));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModBlocks.machine_fluidtank, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.pellet_rtg, 1));
|
||||
@ -128,7 +125,6 @@ public class ItemStarterKit extends Item {
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.radaway_strong, 4));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.radx, 4));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.pill_iodine, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.tritium_deuterium_cake, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.geiger_counter, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.survey_scanner, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.gas_mask_m65, 1));
|
||||
@ -440,72 +436,60 @@ public class ItemStarterKit extends Item {
|
||||
player.inventory.addItemStackToInventory(new ItemStack(Item.getItemFromBlock(ModBlocks.statue_elb_f), 1));
|
||||
}
|
||||
|
||||
if(this == ModItems.hazmat_kit)
|
||||
{
|
||||
if(this == ModItems.hazmat_kit) {
|
||||
giveHaz(world, player, 0);
|
||||
}
|
||||
|
||||
if(this == ModItems.hazmat_red_kit)
|
||||
{
|
||||
if(this == ModItems.hazmat_red_kit) {
|
||||
giveHaz(world, player, 1);
|
||||
}
|
||||
|
||||
if(this == ModItems.hazmat_grey_kit)
|
||||
{
|
||||
if(this == ModItems.hazmat_grey_kit) {
|
||||
giveHaz(world, player, 2);
|
||||
}
|
||||
|
||||
if(this == ModItems.letter && world.isRemote)
|
||||
{
|
||||
if(player.getUniqueID().toString().equals(ShadyUtil.a20)) {
|
||||
player.addChatMessage(new ChatComponentText("Error: null reference @ com.hbm.items.ItemStarterKit.class, please report this to the modder!"));
|
||||
} else {
|
||||
player.addChatMessage(new ChatComponentText("You rip the letter in half; nothing happens."));
|
||||
}
|
||||
}
|
||||
|
||||
world.playSoundAtEntity(player, "hbm:item.unpack", 1.0F, 1.0F);
|
||||
stack.stackSize--;
|
||||
return stack;
|
||||
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) {
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean b) {
|
||||
|
||||
if(this == ModItems.nuke_starter_kit ||
|
||||
this == ModItems.nuke_advanced_kit ||
|
||||
this == ModItems.nuke_commercially_kit ||
|
||||
this == ModItems.nuke_electric_kit ||
|
||||
this == ModItems.gadget_kit ||
|
||||
this == ModItems.boy_kit ||
|
||||
this == ModItems.man_kit ||
|
||||
this == ModItems.mike_kit ||
|
||||
this == ModItems.tsar_kit ||
|
||||
this == ModItems.prototype_kit ||
|
||||
this == ModItems.fleija_kit ||
|
||||
this == ModItems.solinium_kit ||
|
||||
this == ModItems.t45_kit ||
|
||||
this == ModItems.grenade_kit ||
|
||||
this == ModItems.missile_kit ||
|
||||
this == ModItems.multi_kit) {
|
||||
list.add("Please empty inventory before opening!");
|
||||
}
|
||||
if(this == ModItems.nuke_starter_kit ||
|
||||
this == ModItems.nuke_advanced_kit ||
|
||||
this == ModItems.nuke_commercially_kit ||
|
||||
this == ModItems.gadget_kit ||
|
||||
this == ModItems.boy_kit ||
|
||||
this == ModItems.man_kit ||
|
||||
this == ModItems.mike_kit ||
|
||||
this == ModItems.tsar_kit ||
|
||||
this == ModItems.prototype_kit ||
|
||||
this == ModItems.fleija_kit ||
|
||||
this == ModItems.solinium_kit ||
|
||||
this == ModItems.hazmat_kit) {
|
||||
list.add("Armor will be displaced by hazmat suit.");
|
||||
}
|
||||
}
|
||||
if(this == ModItems.nuke_starter_kit ||
|
||||
this == ModItems.nuke_advanced_kit ||
|
||||
this == ModItems.nuke_commercially_kit ||
|
||||
this == ModItems.nuke_electric_kit ||
|
||||
this == ModItems.gadget_kit ||
|
||||
this == ModItems.boy_kit ||
|
||||
this == ModItems.man_kit ||
|
||||
this == ModItems.mike_kit ||
|
||||
this == ModItems.tsar_kit ||
|
||||
this == ModItems.prototype_kit ||
|
||||
this == ModItems.fleija_kit ||
|
||||
this == ModItems.solinium_kit ||
|
||||
this == ModItems.t45_kit ||
|
||||
this == ModItems.grenade_kit ||
|
||||
this == ModItems.missile_kit ||
|
||||
this == ModItems.multi_kit) {
|
||||
list.add("Please empty inventory before opening!");
|
||||
}
|
||||
if(this == ModItems.nuke_starter_kit ||
|
||||
this == ModItems.nuke_advanced_kit ||
|
||||
this == ModItems.nuke_commercially_kit ||
|
||||
this == ModItems.gadget_kit ||
|
||||
this == ModItems.boy_kit ||
|
||||
this == ModItems.man_kit ||
|
||||
this == ModItems.mike_kit ||
|
||||
this == ModItems.tsar_kit ||
|
||||
this == ModItems.prototype_kit ||
|
||||
this == ModItems.fleija_kit ||
|
||||
this == ModItems.solinium_kit ||
|
||||
this == ModItems.hazmat_kit) {
|
||||
list.add("Armor will be displaced by hazmat suit.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -184,8 +184,10 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
|
||||
}
|
||||
|
||||
float maxDura = config.getDurability(stack);
|
||||
int dura = MathHelper.clamp_int((int)((maxDura - this.getWear(stack, i)) * 100 / maxDura), 0, 100);
|
||||
list.add("Condition: " + dura + "%");
|
||||
if(maxDura > 0) {
|
||||
int dura = MathHelper.clamp_int((int)((maxDura - this.getWear(stack, i)) * 100 / maxDura), 0, 100);
|
||||
list.add("Condition: " + dura + "%");
|
||||
}
|
||||
|
||||
for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) {
|
||||
list.add(EnumChatFormatting.YELLOW + upgrade.getDisplayName());
|
||||
|
||||
@ -157,7 +157,6 @@ public class XFactory762mm {
|
||||
|
||||
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CARBINE_ANIMS = (stack, type) -> {
|
||||
int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory);
|
||||
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= ammo;
|
||||
switch(type) {
|
||||
case EQUIP: return new BusAnimation()
|
||||
.addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL));
|
||||
@ -170,7 +169,7 @@ public class XFactory762mm {
|
||||
case RELOAD: return new BusAnimation()
|
||||
.addBus("MAG", new BusAnimationSequence().addPos(0, -4, 0, 250, IType.SIN_UP).addPos(0, -4, 0, 750).addPos(0, 0, 0, 500, IType.SIN_DOWN))
|
||||
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1000))
|
||||
.addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0).addPos(0, 0, 0, 1000));
|
||||
.addBus("BULLET", new BusAnimationSequence().addPos(ammo == 0 ? 1 : 0, 0, 0, 0).addPos(0, 0, 0, 1000));
|
||||
case RELOAD_END: return new BusAnimation()
|
||||
.addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 0).addPos(-25, 0, 0, 750).addPos(0, 0, 0, 500, IType.SIN_FULL))
|
||||
.addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -1, 100, IType.SIN_DOWN).addPos(0, 0, -1, 50).addPos(0, 0, 0, 100, IType.SIN_UP))
|
||||
@ -182,7 +181,7 @@ public class XFactory762mm {
|
||||
case INSPECT: return new BusAnimation()
|
||||
.addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1500).addPos(0, 0, 0, 500, IType.SIN_FULL))
|
||||
.addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -0.75, 150, IType.SIN_DOWN).addPos(0, 0, -0.75, 1000).addPos(0, 0, 0, 100, IType.SIN_UP))
|
||||
.addBus(empty ? "NULL" : "REL", new BusAnimationSequence().addPos(0, 0.125, 1.25, 0).addPos(0, 0.125, 1.25, 500).addPos(0, 0.125, 0.5, 150, IType.SIN_DOWN).addPos(0, 0.125, 0.5, 1000).addPos(0, 0.125, 1.25, 100, IType.SIN_UP));
|
||||
.addBus(ammo == 0 ? "NULL" : "REL", new BusAnimationSequence().addPos(0, 0.125, 1.25, 0).addPos(0, 0.125, 1.25, 500).addPos(0, 0.125, 0.5, 150, IType.SIN_DOWN).addPos(0, 0.125, 0.5, 1000).addPos(0, 0.125, 1.25, 100, IType.SIN_UP));
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@ -242,7 +242,7 @@ public class XFactoryTool {
|
||||
.setOnUpdate(LAMBDA_FOAM_UPDATE)
|
||||
.setOnEntityHit((bulletEntity, target) -> { if(target.entityHit != null) target.entityHit.extinguish(); })
|
||||
.setOnRicochet(LAMBDA_FOAM_HIT);
|
||||
fext_sand = new BulletConfig().setItem(new ItemStack(ModItems.ammo_fireext, 1, 1)).setReloadCount(300).setLife(100).setVel(0.75F).setGrav(0.04D).setSpread(0.05F)
|
||||
fext_sand = new BulletConfig().setItem(new ItemStack(ModItems.ammo_fireext, 1, 2)).setReloadCount(300).setLife(100).setVel(0.75F).setGrav(0.04D).setSpread(0.05F)
|
||||
.setOnUpdate(LAMBDA_SAND_UPDATE)
|
||||
.setOnEntityHit((bulletEntity, target) -> { if(target.entityHit != null) target.entityHit.extinguish(); })
|
||||
.setOnRicochet(LAMBDA_SAND_HIT);
|
||||
|
||||
@ -237,6 +237,8 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_electric_furnace_off), 1), new Object[] { "BBB", "WFW", "RRR", 'B', BE.ingot(), 'R', ModItems.coil_tungsten, 'W', CU.plateCast(), 'F', Item.getItemFromBlock(Blocks.furnace) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.red_wire_coated, 16), new Object[] { "WRW", "RIR", "WRW", 'W', ModItems.plate_polymer, 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.red_cable_paintable, 16), new Object[] { "WRW", "RIR", "WRW", 'W', STEEL.plate(), 'I', MINGRADE.ingot(), 'R', MINGRADE.wireFine() });
|
||||
if (ModBlocks.oc_cable_paintable != null)
|
||||
addRecipeAuto(new ItemStack(ModBlocks.oc_cable_paintable, 16), new Object[] { "WRW", "RIR", "WRW", 'W', STEEL.plate(), 'I', REDSTONE.dust(), 'R', MINGRADE.wireFine() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_switch, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.red_wire_coated });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', SI.nugget(), 'C', ModBlocks.red_cable, 'A', AL.ingot() });
|
||||
@ -258,7 +260,6 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.capacitor_niobium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', RUBBER.ingot(), 'C', NB.block(), 'W', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.capacitor_tantalium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', TA.block(), 'W', STEEL.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.capacitor_schrabidate, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', SBD.block(), 'W', STEEL.ingot() });
|
||||
//addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_wood_burner, 1), new Object[] { "PPP", "CFC", "I I" , 'P', STEEL.plate528(), 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'F', Blocks.furnace});
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "SMS", "PTP", "SMS", 'S', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper, 'P', ANY_PLASTIC.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_converter_he_rf, 1), new Object[] { "RRR", "WWW", "III", 'R', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'W', REDSTONE.dust(), 'I', STEEL.ingot() });
|
||||
|
||||
@ -18,6 +18,7 @@ import com.hbm.handler.imc.IMCBlastFurnace;
|
||||
import com.hbm.handler.imc.IMCCentrifuge;
|
||||
import com.hbm.handler.imc.IMCCrystallizer;
|
||||
import com.hbm.handler.imc.IMCHandler;
|
||||
import com.hbm.handler.microblocks.MicroBlocksCompatHandler;
|
||||
import com.hbm.handler.neutron.NeutronHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
@ -661,6 +662,8 @@ public class MainRegistry {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
MicroBlocksCompatHandler.preInit();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -877,6 +880,8 @@ public class MainRegistry {
|
||||
BlockToolConversion.registerRecipes();
|
||||
AchievementHandler.register();
|
||||
|
||||
MobUtil.intializeMobPools();
|
||||
|
||||
proxy.registerMissileItems();
|
||||
|
||||
// Load compatibility for OC.
|
||||
@ -1701,6 +1706,18 @@ public class MainRegistry {
|
||||
ignoreMappings.add("hbm:tile.hadron_cooler");
|
||||
ignoreMappings.add("hbm:tile.machine_transformer_20");
|
||||
ignoreMappings.add("hbm:tile.machine_transformer_dnt_20");
|
||||
ignoreMappings.add("hbm:item.levitation_unit");
|
||||
ignoreMappings.add("hbm:item.letter");
|
||||
ignoreMappings.add("hbm:item.chopper_head");
|
||||
ignoreMappings.add("hbm:item.chopper_gun");
|
||||
ignoreMappings.add("hbm:item.chopper_torso");
|
||||
ignoreMappings.add("hbm:item.chopper_tail");
|
||||
ignoreMappings.add("hbm:item.chopper_wing");
|
||||
ignoreMappings.add("hbm:item.chopper_blades");
|
||||
ignoreMappings.add("hbm:item.component_emitter");
|
||||
ignoreMappings.add("hbm:item.component_limiter");
|
||||
ignoreMappings.add("hbm:item.bottle2_korl_special");
|
||||
ignoreMappings.add("hbm:item.bottle2_fritz_special");
|
||||
|
||||
/// REMAP ///
|
||||
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
|
||||
|
||||
@ -10,7 +10,6 @@ import com.hbm.config.MobConfig;
|
||||
import com.hbm.config.RadiationConfig;
|
||||
import com.hbm.config.ServerConfig;
|
||||
import com.hbm.entity.mob.*;
|
||||
import com.hbm.entity.mob.ai.EntityAIFireGun;
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.entity.projectile.EntityBurningFOEQ;
|
||||
import com.hbm.entity.train.EntityRailCarBase;
|
||||
@ -76,7 +75,6 @@ import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.EntityAITasks;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.monster.*;
|
||||
@ -387,74 +385,18 @@ public class ModEventHandler {
|
||||
|
||||
if(entity instanceof EntityZombie) {
|
||||
if(world.rand.nextFloat() < 0.005F && soot > 2) { // full hazmat zombine
|
||||
equipFullSet(entity, ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots);
|
||||
MobUtil.equipFullSet(entity, ModItems.hazmat_helmet, ModItems.hazmat_plate, ModItems.hazmat_legs, ModItems.hazmat_boots);
|
||||
return;
|
||||
}
|
||||
|
||||
if(world.rand.nextFloat() < 0.005F && soot > 20) { // full security zombine
|
||||
equipFullSet(entity, ModItems.security_helmet, ModItems.security_plate, ModItems.security_legs, ModItems.security_boots);
|
||||
return;
|
||||
}
|
||||
|
||||
slotPools.put(4, createSlotPool(8000, new Object[][]{ //new slots, smooth, brushed, no wrinkles // old slots, wrinkled, rusty, not smooth
|
||||
{ModItems.gas_mask_m65, 16}, {ModItems.gas_mask_olde, 12}, {ModItems.mask_of_infamy, 8},
|
||||
{ModItems.gas_mask_mono, 8}, {ModItems.robes_helmet, 32}, {ModItems.no9, 16},
|
||||
{ModItems.cobalt_helmet, 2}, {ModItems.rag_piss, 1}, {ModItems.hat, 1}, {ModItems.alloy_helmet, 2},
|
||||
{ModItems.titanium_helmet, 4}, {ModItems.steel_helmet, 8}
|
||||
}));
|
||||
slotPools.put(3, createSlotPool(7000, new Object[][]{
|
||||
{ModItems.starmetal_plate, 1}, {ModItems.cobalt_plate, 2}, {ModItems.robes_plate, 32},
|
||||
{ModItems.jackt, 32}, {ModItems.jackt2, 32}, {ModItems.alloy_plate, 2},
|
||||
{ModItems.steel_plate, 2}
|
||||
}));
|
||||
slotPools.put(2, createSlotPool(7000, new Object[][]{
|
||||
{ModItems.zirconium_legs, 1}, {ModItems.cobalt_legs, 2}, {ModItems.steel_legs, 16},
|
||||
{ModItems.titanium_legs, 8}, {ModItems.robes_legs, 32}, {ModItems.alloy_legs, 2}
|
||||
}));
|
||||
slotPools.put(1, createSlotPool(7000, new Object[][]{
|
||||
{ModItems.robes_boots, 32}, {ModItems.steel_boots, 16}, {ModItems.cobalt_boots, 2}, {ModItems.alloy_boots, 2}
|
||||
}));
|
||||
slotPools.put(0, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.pipe_lead, 30}, {ModItems.crowbar, 25}, {ModItems.geiger_counter, 20},
|
||||
{ModItems.reer_graar, 16}, {ModItems.steel_pickaxe, 12}, {ModItems.stopsign, 10},
|
||||
{ModItems.sopsign, 8}, {ModItems.chernobylsign, 6}, {ModItems.steel_sword, 15},
|
||||
{ModItems.alloy_axe, 5}, {ModItems.titanium_sword, 8}, {ModItems.lead_gavel, 4},
|
||||
{ModItems.wrench, 20}, {ModItems.cobalt_decorated_sword, 2}, {ModItems.detonator_de, 1}
|
||||
}));
|
||||
slotPools = MobUtil.slotPoolCommon;
|
||||
|
||||
} else if(entity instanceof EntitySkeleton) {
|
||||
|
||||
slotPools.put(4, createSlotPool(12000, new Object[][]{
|
||||
{ModItems.gas_mask_m65, 16}, {ModItems.gas_mask_olde, 12}, {ModItems.mask_of_infamy, 8},
|
||||
{ModItems.gas_mask_mono, 8}, {ModItems.robes_helmet, 32}, {ModItems.no9, 16},
|
||||
{ModItems.cobalt_helmet, 2}, {ModItems.rag_piss, 1}, {ModItems.hat, 1}, {ModItems.alloy_helmet, 2},
|
||||
{ModItems.titanium_helmet, 4}, {ModItems.steel_helmet, 8}
|
||||
}));
|
||||
slotPools.put(3, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.starmetal_plate, 1}, {ModItems.cobalt_plate, 2}, {ModItems.alloy_plate, 2}, //sadly they cant wear jackets bc it breaks it
|
||||
{ModItems.steel_plate, 8}, {ModItems.titanium_plate, 4}
|
||||
}));
|
||||
slotPools.put(2, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.zirconium_legs, 1}, {ModItems.cobalt_legs, 2}, {ModItems.steel_legs, 16},
|
||||
{ModItems.titanium_legs, 8}, {ModItems.robes_legs, 32}, {ModItems.alloy_legs, 2},
|
||||
}));
|
||||
slotPools.put(1, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.robes_boots, 32}, {ModItems.steel_boots, 16}, {ModItems.cobalt_boots, 2}, {ModItems.alloy_boots, 2},
|
||||
{ModItems.titanium_boots, 6}
|
||||
}));
|
||||
|
||||
slotPools = MobUtil.slotPoolRanged;
|
||||
ItemStack bowReplacement = getSkelegun(soot, world.rand);
|
||||
slotPools.put(0, createSlotPool(50, bowReplacement != null ? new Object[][]{{bowReplacement, 1}} : new Object[][]{}));
|
||||
}
|
||||
|
||||
assignItemsToEntity(entity, slotPools);
|
||||
}
|
||||
|
||||
private void equipFullSet(EntityLivingBase entity, Item helmet, Item chest, Item legs, Item boots) { //for brainlets (me) to add more armorsets later when i forget about how this works
|
||||
entity.setCurrentItemOrArmor(4, new ItemStack(helmet)); //p_70062_1_ is the slot number
|
||||
entity.setCurrentItemOrArmor(3, new ItemStack(chest));
|
||||
entity.setCurrentItemOrArmor(2, new ItemStack(legs));
|
||||
entity.setCurrentItemOrArmor(1, new ItemStack(boots));
|
||||
MobUtil.assignItemsToEntity(entity, slotPools, rand);
|
||||
}
|
||||
|
||||
private List<WeightedRandomObject> createSlotPool(int nullWeight, Object[][] items) {
|
||||
@ -473,74 +415,30 @@ public class ModEventHandler {
|
||||
return pool;
|
||||
}
|
||||
|
||||
|
||||
public void assignItemsToEntity(EntityLivingBase entity, Map<Integer, List<WeightedRandomObject>> slotPools) {
|
||||
for (Map.Entry<Integer, List<WeightedRandomObject>> entry : slotPools.entrySet()) {
|
||||
int slot = entry.getKey();
|
||||
List<WeightedRandomObject> pool = entry.getValue();
|
||||
|
||||
WeightedRandomObject choice = (WeightedRandomObject) WeightedRandom.getRandomItem(rand, pool); //NullPointerException sludge fix
|
||||
if (choice == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ItemStack stack = choice.asStack();
|
||||
if (stack == null || stack.getItem() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (stack.getItem() == ModItems.gas_mask_m65 //eyesore
|
||||
|| stack.getItem() == ModItems.gas_mask_olde
|
||||
|| stack.getItem() == ModItems.gas_mask_mono) {
|
||||
ArmorUtil.installGasMaskFilter(stack, new ItemStack(ModItems.gas_mask_filter));
|
||||
}
|
||||
|
||||
entity.setCurrentItemOrArmor(slot, stack);
|
||||
|
||||
//Give skeleton AI if it has a gun
|
||||
if (slot == 0 && entity instanceof EntitySkeleton && pool == slotPools.get(0)) {
|
||||
addFireTask((EntityLiving) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static ItemStack getSkelegun(float soot, Random rand) {
|
||||
if(!MobConfig.enableMobWeapons) return null;
|
||||
if(rand.nextDouble() > Math.log(soot) * 0.25) return null;
|
||||
if (!MobConfig.enableMobWeapons) return null;
|
||||
if (rand.nextDouble() > Math.log(soot) * 0.25) return null;
|
||||
|
||||
ArrayList<WeightedRandomObject> pool = new ArrayList<WeightedRandomObject>();
|
||||
pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_light_revolver), 12));
|
||||
pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_heavy_revolver), 8));
|
||||
ArrayList<WeightedRandomObject> pool = new ArrayList<>();
|
||||
|
||||
if(soot > 2) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_pepperbox), 10));
|
||||
if(soot > 2) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_henry), 8));
|
||||
if(soot > 2) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_greasegun), 6));
|
||||
|
||||
if(soot > 4) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_maresleg), 4));
|
||||
if(soot > 4) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_uzi), 6));
|
||||
|
||||
if(soot > 8) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_spas12), 3));
|
||||
if(soot > 8) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_am180), 4));
|
||||
|
||||
if(soot > 12) pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_congolake), 1));
|
||||
if(soot < 0.3){
|
||||
pool.add(new WeightedRandomObject(new ItemStack(ModItems.gun_pepperbox), 5));
|
||||
pool.add(new WeightedRandomObject(null, 20));
|
||||
} else if(soot > 0.3 && soot < 1) {
|
||||
pool.addAll(MobUtil.slotPoolGuns.get(0.3));
|
||||
} else if (soot < 3) {
|
||||
pool.addAll(MobUtil.slotPoolGuns.get(1D));
|
||||
} else if (soot < 5) {
|
||||
pool.addAll(MobUtil.slotPoolGuns.get(3D));
|
||||
} else {
|
||||
pool.addAll(MobUtil.slotPoolGuns.get(5D));
|
||||
}
|
||||
|
||||
WeightedRandomObject selected = (WeightedRandomObject) WeightedRandom.getRandomItem(rand, pool);
|
||||
|
||||
return selected.asStack();
|
||||
}
|
||||
|
||||
// these fucking tasks keep stacking on top of themselves
|
||||
private static void addFireTask(EntityLiving entity) {
|
||||
entity.setEquipmentDropChance(0, 0); // Prevent dropping guns
|
||||
|
||||
for(Object entry : entity.tasks.taskEntries) {
|
||||
EntityAITasks.EntityAITaskEntry task = (EntityAITasks.EntityAITaskEntry) entry;
|
||||
if(task.action instanceof EntityAIFireGun) return;
|
||||
}
|
||||
|
||||
entity.tasks.addTask(3, new EntityAIFireGun(entity));
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void addAITasks(EntityJoinWorldEvent event) {
|
||||
if(event.world.isRemote || !(event.entity instanceof EntityLiving)) return;
|
||||
@ -549,7 +447,7 @@ public class ModEventHandler {
|
||||
ItemStack held = living.getHeldItem();
|
||||
|
||||
if(held != null && held.getItem() instanceof ItemGunBaseNT) {
|
||||
addFireTask(living);
|
||||
MobUtil.addFireTask(living);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.module.machine;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipe;
|
||||
import com.hbm.inventory.recipes.loader.GenericRecipes.IOutput;
|
||||
import com.hbm.items.machine.ItemBlueprints;
|
||||
|
||||
import api.hbm.energymk2.IEnergyHandlerMK2;
|
||||
import cpw.mods.fml.common.network.ByteBufUtils;
|
||||
@ -130,8 +131,16 @@ public abstract class ModuleMachineBase {
|
||||
|
||||
public abstract GenericRecipe getRecipe();
|
||||
|
||||
public void update(double speed, double power, boolean extraCondition) {
|
||||
public void update(double speed, double power, boolean extraCondition, ItemStack blueprint) {
|
||||
GenericRecipe recipe = getRecipe();
|
||||
|
||||
if(recipe != null && recipe.isPooled() && !recipe.isPartOfPool(ItemBlueprints.grabPool(blueprint))) {
|
||||
this.didProcess = false;
|
||||
this.progress = 0F;
|
||||
this.recipe = "null";
|
||||
return;
|
||||
}
|
||||
|
||||
this.setupTanks(recipe);
|
||||
|
||||
this.didProcess = false;
|
||||
|
||||
@ -111,8 +111,16 @@ public class RenderAssemblyMachine extends TileEntitySpecialRenderer implements
|
||||
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
ItemStack stack = recipe.getIcon();
|
||||
stack.stackSize = 1;
|
||||
|
||||
if(!(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType()))) {
|
||||
if(stack.getItemSpriteNumber() == 0 && stack.getItem() instanceof ItemBlock) {
|
||||
if(RenderBlocks.renderItemIn3d(Block.getBlockFromItem(stack.getItem()).getRenderType())) {
|
||||
GL11.glTranslated(0, -0.0625, 0);
|
||||
} else {
|
||||
GL11.glTranslated(0, -0.125, 0);
|
||||
GL11.glScaled(0.5, 0.5, 0.5);
|
||||
}
|
||||
} else {
|
||||
GL11.glRotated(-90, 1, 0, 0);
|
||||
GL11.glTranslated(0, -0.25, 0);
|
||||
}
|
||||
|
||||
@ -22,12 +22,14 @@ public class RenderCraneConsole extends TileEntitySpecialRenderer {
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
int teFacing = 0;
|
||||
switch(te.getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
case 2: teFacing = 90; break;
|
||||
case 4: teFacing = 180; break;
|
||||
case 3: teFacing = 270; break;
|
||||
case 5: teFacing = 0; break;
|
||||
}
|
||||
GL11.glRotatef(teFacing, 0F, 1F, 0F);
|
||||
|
||||
TileEntityCraneConsole console = (TileEntityCraneConsole) te;
|
||||
|
||||
@ -99,12 +101,7 @@ public class RenderCraneConsole extends TileEntitySpecialRenderer {
|
||||
double cranePosZ = (-te.zCoord + console.centerZ);
|
||||
|
||||
GL11.glTranslated(cranePosX, cranePosY, cranePosZ);
|
||||
switch(te.getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 3: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
}
|
||||
GL11.glRotatef(teFacing, 0F, 1F, 0F);
|
||||
|
||||
double posX = (console.lastPosFront + (console.posFront - console.lastPosFront) * interp);
|
||||
double posZ = (console.lastPosLeft + (console.posLeft - console.lastPosLeft) * interp);
|
||||
@ -118,27 +115,27 @@ public class RenderCraneConsole extends TileEntitySpecialRenderer {
|
||||
GL11.glRotatef(-craneRotationOffset, 0F, 1F, 0F);
|
||||
switch(craneRotationOffset) {
|
||||
case 0:
|
||||
girderSpan = console.spanL + console.spanR + 1;
|
||||
GL11.glTranslated(posX - console.spanL, 0, 0);
|
||||
girderSpan = console.spanF + console.spanB + 1;
|
||||
GL11.glTranslated(posX + console.spanB, 0, 0);
|
||||
break;
|
||||
case 90:
|
||||
girderSpan = console.spanF + console.spanB + 1;
|
||||
GL11.glTranslated(0, 0, -posZ + console.spanB);
|
||||
girderSpan = console.spanL + console.spanR + 1;
|
||||
GL11.glTranslated(0, 0, -posZ - console.spanR);
|
||||
break;
|
||||
case 180:
|
||||
girderSpan = console.spanL + console.spanR + 1;
|
||||
GL11.glTranslated(posX + console.spanR, 0, 0);
|
||||
girderSpan = console.spanF + console.spanB + 1;
|
||||
GL11.glTranslated(posX - console.spanF, 0, 0);
|
||||
break;
|
||||
case 270:
|
||||
girderSpan = console.spanF + console.spanB + 1;
|
||||
GL11.glTranslated(0, 0, -posZ - console.spanF);
|
||||
girderSpan = console.spanL + console.spanR + 1;
|
||||
GL11.glTranslated(0, 0, -posZ + console.spanL);
|
||||
break;
|
||||
}
|
||||
GL11.glRotatef(craneRotationOffset, 0F, 1F, 0F);
|
||||
|
||||
for(int i = 0; i < girderSpan; i++) {
|
||||
ResourceManager.rbmk_crane.renderPart("Girder");
|
||||
GL11.glTranslated(1, 0, 0);
|
||||
GL11.glTranslated(-1, 0, 0);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
|
||||
|
||||
@ -23,6 +23,10 @@ public class RenderSkeletonHolder extends TileEntitySpecialRenderer {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5, y, z + 0.5);
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
|
||||
switch(te.getBlockMetadata()) {
|
||||
case 2: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
@ -30,10 +34,6 @@ public class RenderSkeletonHolder extends TileEntitySpecialRenderer {
|
||||
case 5: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
} //why the FUCK did this not commit properl;y
|
||||
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
|
||||
bindTexture(ResourceManager.skeleton_holder_tex);
|
||||
ResourceManager.skeleton_holder.renderPart("Holder1");
|
||||
|
||||
|
||||
@ -67,8 +67,8 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -156,7 +156,7 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open)
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||
if(z == 1) {
|
||||
@ -166,9 +166,9 @@ public abstract class DoorDecl {
|
||||
} else if(y > 1) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1);
|
||||
} else if(y == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, forCollision ? 0 : 0.1, 1);
|
||||
} else {
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
}
|
||||
}
|
||||
|
||||
@ -240,15 +240,15 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(open) {
|
||||
if(y == 3) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1);
|
||||
} else if(y == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.08, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, forCollision ? 0 : 0.08, 1);
|
||||
}
|
||||
}
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -327,10 +327,9 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
if(open) {
|
||||
if(y == 0) return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 0, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.9375, 1 - 0.25, 1, 1, 1);
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(forCollision && open) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.25, 1, 1, 1);
|
||||
}
|
||||
@ -429,7 +428,7 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open) {
|
||||
if(y > 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.375, 1, 1, 0.625);
|
||||
@ -437,11 +436,13 @@ public abstract class DoorDecl {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||
}
|
||||
if(y == 1) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, forCollision ? 0 : 0.0625, 1);
|
||||
} else if(y == 4) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.5, 0.15, 1, 1, 0.85);
|
||||
} else {
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
} else if(y == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||
}else {
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
}
|
||||
}
|
||||
|
||||
@ -504,9 +505,9 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open)
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
if(z == 1) {
|
||||
return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1);
|
||||
} else if(z == -2) {
|
||||
@ -514,9 +515,9 @@ public abstract class DoorDecl {
|
||||
} else if(y == 3) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1);
|
||||
} else if(y == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.0625, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, forCollision ? 0 : 0.0625, 1);
|
||||
}
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
};
|
||||
|
||||
@Override
|
||||
@ -586,7 +587,7 @@ public abstract class DoorDecl {
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void doOffsetTransform() {
|
||||
GL11.glTranslated(0.4375, 0, 0.5);
|
||||
GL11.glTranslated(0.40625, 0, 0.5);
|
||||
};
|
||||
|
||||
@Override
|
||||
@ -595,15 +596,15 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
if(open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(forCollision && open) {
|
||||
if(z == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(1 - 0.125, 0, 1 - 0.125, 1, 1, 1);
|
||||
return AxisAlignedBB.getBoundingBox(1 - 0.125, 0, 1 - 0.1875, 1, 1, 1);
|
||||
} else {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.125, 0.125, 1, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.1875, 0.125, 1, 1);
|
||||
}
|
||||
} else {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.125, 1, 1, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 1 - 0.1875, 1, 1, 1);
|
||||
}
|
||||
};
|
||||
|
||||
@ -691,14 +692,14 @@ public abstract class DoorDecl {
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open)
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 1, 1);
|
||||
if(y > 1)
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.5, 0.5, 1, 1, 1);
|
||||
else if(y == 0)
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, 0.1, 1);
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.5, 1, forCollision ? 0 : 0.1, 1);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
};
|
||||
|
||||
@Override
|
||||
@ -814,15 +815,15 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 1, 1);
|
||||
} else if(y > 1) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0.85, 0.75, 1, 1, 1);
|
||||
} else if(y == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, 0.15, 1);
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0.75, 1, forCollision ? 0 : 0.15, 1);
|
||||
}
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
};
|
||||
|
||||
@Override
|
||||
@ -1018,15 +1019,17 @@ public abstract class DoorDecl {
|
||||
};
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
if(!open)
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
if(z == 3) {
|
||||
return AxisAlignedBB.getBoundingBox(0.4, 0, 0, 1, 1, 1);
|
||||
} else if(z == -3) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.6, 1, 1);
|
||||
} else if(y == 0) {
|
||||
return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, forCollision ? 0 : 0.0625, 1);
|
||||
}
|
||||
return super.getBlockBound(x, y, z, open);
|
||||
return super.getBlockBound(x, y, z, open, forCollision);
|
||||
};
|
||||
|
||||
@Override
|
||||
@ -1159,7 +1162,7 @@ public abstract class DoorDecl {
|
||||
public void doOffsetTransform() {
|
||||
}
|
||||
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) {
|
||||
public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open, boolean forCollision) {
|
||||
return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1);
|
||||
}
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
||||
public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
||||
|
||||
//0: closed, 1: open, 2: closing, 3: opening
|
||||
public byte state = 0;
|
||||
@ -318,6 +318,15 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**Useful for logic block interactions, as a way to close/open doors**/
|
||||
public void open(){
|
||||
if(state == 0) state = 3;
|
||||
}
|
||||
|
||||
public void close() {
|
||||
if(state == 1) state = 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return INFINITE_EXTENT_AABB;
|
||||
|
||||
@ -19,7 +19,9 @@ import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe;
|
||||
import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate;
|
||||
import com.hbm.blocks.generic.BlockWandJigsaw.TileEntityWandJigsaw;
|
||||
import com.hbm.blocks.generic.BlockWandLoot.TileEntityWandLoot;
|
||||
import com.hbm.blocks.generic.BlockWandLogic.TileEntityWandLogic;
|
||||
import com.hbm.blocks.generic.DungeonSpawner.TileEntityDungeonSpawner;
|
||||
import com.hbm.blocks.generic.LogicBlock;
|
||||
import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter;
|
||||
import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF;
|
||||
import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR;
|
||||
@ -39,6 +41,7 @@ import com.hbm.blocks.network.FluidDuctPaintableBlockExhaust.TileEntityPipeExhau
|
||||
import com.hbm.blocks.network.FluidPump.TileEntityFluidPump;
|
||||
import com.hbm.blocks.network.PneumoTubePaintableBlock.TileEntityPneumoTubePaintable;
|
||||
import com.hbm.blocks.rail.RailStandardSwitch.TileEntityRailSwitch;
|
||||
import com.hbm.blocks.network.BlockOpenComputersCablePaintable.TileEntityOpenComputersCablePaintable;
|
||||
import com.hbm.tileentity.bomb.*;
|
||||
import com.hbm.tileentity.deco.*;
|
||||
import com.hbm.tileentity.machine.*;
|
||||
@ -49,6 +52,7 @@ import com.hbm.tileentity.machine.rbmk.*;
|
||||
import com.hbm.tileentity.machine.storage.*;
|
||||
import com.hbm.tileentity.network.*;
|
||||
import com.hbm.tileentity.turret.*;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
@ -209,6 +213,7 @@ public class TileMappings {
|
||||
put(TileEntityPedestal.class, "tileentity_ntm_pedestal");
|
||||
put(TileEntitySkeletonHolder.class, "tileentity_ntm_skeleton");
|
||||
put(TileEntityDungeonSpawner.class, "tileentity_ntm_dungeon_spawner");
|
||||
put(LogicBlock.TileEntityLogicBlock.class, "tileentity_ntm_logic_block");
|
||||
put(TileEntityBobble.class, "tileentity_ntm_bobblehead");
|
||||
put(TileEntitySnowglobe.class, "tileentity_ntm_snowglobe");
|
||||
put(TileEntityPlushie.class, "tileentity_ntm_plushie");
|
||||
@ -237,6 +242,7 @@ public class TileMappings {
|
||||
|
||||
put(TileEntityWandLoot.class, "tileentity_wand_loot");
|
||||
put(TileEntityWandJigsaw.class, "tileentity_wand_jigsaw");
|
||||
put(TileEntityWandLogic.class, "tileentity_wand_spawner");
|
||||
|
||||
putNetwork();
|
||||
putBombs();
|
||||
@ -449,6 +455,13 @@ public class TileMappings {
|
||||
put(TileEntityDroneRequester.class, "tileentity_drone_requester");
|
||||
|
||||
put(TileEntityRailSwitch.class, "tileentity_rail_switch");
|
||||
|
||||
// OC Compat items
|
||||
boolean ocPresent = Loader.isModLoaded("OpenComputers");
|
||||
|
||||
if (ocPresent) {
|
||||
put(TileEntityOpenComputersCablePaintable.class, "tileentity_oc_cable_paintable");
|
||||
}
|
||||
}
|
||||
|
||||
private static void put(Class<? extends TileEntity> clazz, String... names) {
|
||||
|
||||
@ -67,6 +67,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
public MaterialStack rightStack;
|
||||
public int maxMaterial = MaterialShapes.BLOCK.q(16);
|
||||
|
||||
private int lastSelectedGUI = 0;
|
||||
|
||||
public FluidTank[] tanks;
|
||||
|
||||
public UpgradeManagerNT upgradeManager = new UpgradeManagerNT();
|
||||
@ -248,6 +250,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
buf.writeInt(rightStack.material.id);
|
||||
buf.writeInt(rightStack.amount);
|
||||
}
|
||||
buf.writeInt(lastSelectedGUI);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -269,6 +272,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
if(right) {
|
||||
this.rightStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt());
|
||||
}
|
||||
this.lastSelectedGUI = buf.readInt();
|
||||
}
|
||||
|
||||
public boolean canProcessFluid() {
|
||||
@ -423,6 +427,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount"));
|
||||
else this.rightStack = null;
|
||||
for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i);
|
||||
this.lastSelectedGUI = nbt.getInteger("lastSelectedGUI");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -443,7 +448,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
nbt.setInteger("rightAmount", rightStack.amount);
|
||||
}
|
||||
for(int i = 0; i < 4; i++) tanks[i].writeToNBT(nbt, "t" + i);
|
||||
|
||||
nbt.setInteger("lastSelectedGUI", this.lastSelectedGUI);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
@ -503,6 +508,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
if(ID == -1) ID = lastSelectedGUI;
|
||||
if(ID == 0) return new ContainerElectrolyserFluid(player.inventory, this);
|
||||
return new ContainerElectrolyserMetal(player.inventory, this);
|
||||
}
|
||||
@ -510,6 +516,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
if(ID == -1) ID = lastSelectedGUI;
|
||||
if(ID == 0) return new GUIElectrolyserFluid(player.inventory, this);
|
||||
return new GUIElectrolyserMetal(player.inventory, this);
|
||||
}
|
||||
@ -520,8 +527,10 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
@Override
|
||||
public void receiveControl(EntityPlayer player, NBTTagCompound data) {
|
||||
|
||||
if(data.hasKey("sgm")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord);
|
||||
if(data.hasKey("sgf")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, xCoord, yCoord, zCoord);
|
||||
if(data.hasKey("sgm")) lastSelectedGUI = 1;
|
||||
if(data.hasKey("sgf")) lastSelectedGUI = 0;
|
||||
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, lastSelectedGUI, worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -104,7 +104,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
pow += Math.min(upgradeManager.getLevel(UpgradeType.SPEED), 3) * 1D;
|
||||
pow += Math.min(upgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 10D / 3D;
|
||||
|
||||
this.assemblerModule.update(speed, pow, true);
|
||||
this.assemblerModule.update(speed, pow, true, slots[1]);
|
||||
this.didProcess = this.assemblerModule.didProcess;
|
||||
if(this.assemblerModule.markDirty) this.markDirty();
|
||||
|
||||
@ -129,7 +129,8 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
audio = rebootAudio(audio);
|
||||
}
|
||||
audio.keepAlive();
|
||||
audio.updateVolume(this.getVolume(1F));
|
||||
audio.updatePitch(0.75F);
|
||||
audio.updateVolume(this.getVolume(0.5F));
|
||||
|
||||
} else {
|
||||
if(audio != null) {
|
||||
@ -145,6 +146,10 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
} else{
|
||||
arm.returnToNullPos();
|
||||
}
|
||||
|
||||
if(!this.muffled && arm.prevAngles[3] != arm.angles[3] && arm.angles[3] == -0.75) {
|
||||
MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.assemblerStrike", this.getVolume(0.5F), 1F);
|
||||
}
|
||||
}
|
||||
|
||||
this.prevRing = this.ring;
|
||||
@ -167,12 +172,14 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
this.prevRing += 360D;
|
||||
}
|
||||
this.ringDelay = 20 + worldObj.rand.nextInt(21);
|
||||
//MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.assemblerStop", this.getVolume(0.25F), 1.5F);
|
||||
}
|
||||
} else {
|
||||
if(this.ringDelay > 0) this.ringDelay--;
|
||||
if(this.ringDelay <= 0) {
|
||||
this.ringTarget += (worldObj.rand.nextDouble() * 2 - 1) * 135;
|
||||
this.ringSpeed = 10D + worldObj.rand.nextDouble() * 5D;
|
||||
if(!this.muffled) MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.assemblerStart", this.getVolume(0.25F), 1.25F + worldObj.rand.nextFloat() * 0.25F);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -180,7 +187,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
}
|
||||
|
||||
@Override public AudioWrapper createAudioLoop() {
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:block.chemicalPlant", xCoord, yCoord, zCoord, 1F, 15F, 1.0F, 20);
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:block.motor", xCoord, yCoord, zCoord, 0.5F, 15F, 0.75F, 20);
|
||||
}
|
||||
|
||||
@Override public void onChunkUnload() {
|
||||
@ -223,12 +230,17 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
super.deserialize(buf);
|
||||
boolean wasProcessing = this.didProcess;
|
||||
this.inputTank.deserialize(buf);
|
||||
this.outputTank.deserialize(buf);
|
||||
this.power = buf.readLong();
|
||||
this.maxPower = buf.readLong();
|
||||
this.didProcess = buf.readBoolean();
|
||||
this.assemblerModule.deserialize(buf);
|
||||
|
||||
if(wasProcessing && !didProcess) {
|
||||
MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:block.assemblerStop", this.getVolume(0.25F), 1.5F);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -254,6 +266,7 @@ public class TileEntityMachineAssemblyMachine extends TileEntityMachineBase impl
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
if(slot == 0) return true; // battery
|
||||
if(slot == 1 && stack.getItem() == ModItems.blueprints) return true;
|
||||
if(slot >= 2 && slot <= 3 && stack.getItem() instanceof ItemMachineUpgrade) return true; // upgrades
|
||||
if(this.assemblerModule.isItemValid(slot, stack)) return true; // recipe input crap
|
||||
return false;
|
||||
|
||||
@ -236,7 +236,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement
|
||||
|
||||
audioDuration = MathHelper.clamp_int(audioDuration, 0, 60);
|
||||
|
||||
if(audioDuration > 10) {
|
||||
if(audioDuration > 10 && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 25) {
|
||||
|
||||
if(audio == null) {
|
||||
audio = createAudioLoop();
|
||||
@ -247,6 +247,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement
|
||||
|
||||
audio.updateVolume(getVolume(1F));
|
||||
audio.updatePitch((audioDuration - 10) / 100F + 0.5F);
|
||||
audio.keepAlive();
|
||||
|
||||
} else {
|
||||
|
||||
@ -276,7 +277,7 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement
|
||||
|
||||
@Override
|
||||
public AudioWrapper createAudioLoop() {
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 20);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.inventory.container.ContainerMachineChemicalFactory;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.inventory.gui.GUIMachineChemicalFactory;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType;
|
||||
import com.hbm.lib.Library;
|
||||
@ -101,6 +102,7 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
if(slot == 0) return true; // battery
|
||||
for(int i = 0; i < 4; i++) if(slot == 4 + i * 7 && stack.getItem() == ModItems.blueprints) return true;
|
||||
if(slot >= 1 && slot <= 3 && stack.getItem() instanceof ItemMachineUpgrade) return true; // upgrades
|
||||
for(int i = 0; i < 4; i++) if(this.chemplantModule[i].isItemValid(slot, stack)) return true; // recipe input crap
|
||||
return false;
|
||||
@ -163,7 +165,7 @@ public class TileEntityMachineChemicalFactory extends TileEntityMachineBase impl
|
||||
boolean markDirty = false;
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
this.chemplantModule[i].update(speed * 2D, pow * 2D, canCool());
|
||||
this.chemplantModule[i].update(speed * 2D, pow * 2D, canCool(), slots[4 + i * 7]);
|
||||
this.didProcess[i] = this.chemplantModule[i].didProcess;
|
||||
markDirty |= this.chemplantModule[i].markDirty;
|
||||
|
||||
|
||||
@ -110,7 +110,7 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem
|
||||
pow += Math.min(upgradeManager.getLevel(UpgradeType.SPEED), 3) * 1D;
|
||||
pow += Math.min(upgradeManager.getLevel(UpgradeType.OVERDRIVE), 3) * 10D / 3D;
|
||||
|
||||
this.chemplantModule.update(speed, pow, true);
|
||||
this.chemplantModule.update(speed, pow, true, slots[1]);
|
||||
this.didProcess = this.chemplantModule.didProcess;
|
||||
if(this.chemplantModule.markDirty) this.markDirty();
|
||||
|
||||
@ -232,6 +232,7 @@ public class TileEntityMachineChemicalPlant extends TileEntityMachineBase implem
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int slot, ItemStack stack) {
|
||||
if(slot == 0) return true; // battery
|
||||
if(slot == 1 && stack.getItem() == ModItems.blueprints) return true;
|
||||
if(slot >= 2 && slot <= 3 && stack.getItem() instanceof ItemMachineUpgrade) return true; // upgrades
|
||||
if(slot >= 10 && slot <= 12) return true; // input fluid
|
||||
if(slot >= 16 && slot <= 18) return true; // output fluid
|
||||
|
||||
@ -31,7 +31,6 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
@ -51,7 +50,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
|
||||
public FluidTank tank;
|
||||
|
||||
public UpgradeManagerNT upgradeManager = new UpgradeManagerNT();
|
||||
public UpgradeManagerNT upgradeManager = new UpgradeManagerNT(this);
|
||||
|
||||
public TileEntityMachineCrystallizer() {
|
||||
super(8);
|
||||
@ -76,7 +75,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
tank.setType(7, slots);
|
||||
tank.loadTank(3, 4, slots);
|
||||
|
||||
upgradeManager.checkSlots(this, slots, 5, 6);
|
||||
upgradeManager.checkSlots(slots, 5, 6);
|
||||
|
||||
for(int i = 0; i < getCycleCount(); i++) {
|
||||
|
||||
@ -299,14 +298,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(int i, ItemStack itemStack) {
|
||||
|
||||
CrystallizerRecipe recipe = CrystallizerRecipes.getOutput(itemStack, tank.getTankType());
|
||||
if(i == 0 && recipe != null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(i == 1 && itemStack.getItem() instanceof IBatteryItem)
|
||||
return true;
|
||||
if(i == 0 && CrystallizerRecipes.getOutput(itemStack, tank.getTankType()) != null) return true;
|
||||
if(i == 1 && itemStack.getItem() instanceof IBatteryItem) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -318,13 +311,26 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int side) {
|
||||
|
||||
return side == 0 ? new int[] { 2 } : new int[] { 0, 2 };
|
||||
return new int[] { 0, 2 };
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
return TileEntity.INFINITE_EXTENT_AABB;
|
||||
|
||||
if(bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(
|
||||
xCoord - 1,
|
||||
yCoord,
|
||||
zCoord - 1,
|
||||
xCoord + 2,
|
||||
yCoord + 10,
|
||||
zCoord + 2
|
||||
);
|
||||
}
|
||||
|
||||
return bb;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -151,7 +151,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
if(te instanceof TileEntityMachineGasCent) {
|
||||
TileEntityMachineGasCent cent = (TileEntityMachineGasCent) te;
|
||||
|
||||
if(cent.tank.getFill() == 0 && cent.tank.getTankType() == tank.getTankType()) {
|
||||
if(cent.tank.getTankType() == tank.getTankType()) {
|
||||
if(cent.inputTank.getTankType() != outputTank.getTankType() && outputTank.getTankType() != PseudoFluidType.NONE) {
|
||||
cent.inputTank.setTankType(outputTank.getTankType());
|
||||
cent.outputTank.setTankType(outputTank.getTankType().getOutputType());
|
||||
@ -237,7 +237,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
|
||||
audioDuration = MathHelper.clamp_int(audioDuration, 0, 60);
|
||||
|
||||
if(audioDuration > 10) {
|
||||
if(audioDuration > 10 && MainRegistry.proxy.me().getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 25) {
|
||||
|
||||
if(audio == null) {
|
||||
audio = createAudioLoop();
|
||||
@ -248,6 +248,7 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
|
||||
audio.updateVolume(getVolume(1F));
|
||||
audio.updatePitch((audioDuration - 10) / 100F + 0.5F);
|
||||
audio.keepAlive();
|
||||
|
||||
} else {
|
||||
|
||||
@ -261,7 +262,27 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
|
||||
@Override
|
||||
public AudioWrapper createAudioLoop() {
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 20);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChunkUnload() {
|
||||
|
||||
if(audio != null) {
|
||||
audio.stopSound();
|
||||
audio = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
|
||||
super.invalidate();
|
||||
|
||||
if(audio != null) {
|
||||
audio.stopSound();
|
||||
audio = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -314,21 +335,9 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(long i) {
|
||||
power = i;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPower() {
|
||||
return power;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxPower() {
|
||||
return maxPower;
|
||||
}
|
||||
@Override public void setPower(long i) { power = i; }
|
||||
@Override public long getPower() { return power; }
|
||||
@Override public long getMaxPower() { return maxPower; }
|
||||
|
||||
public int getProcessingSpeed() {
|
||||
if(slots[6] != null && slots[6].getItem() == ModItems.upgrade_gc_speed) {
|
||||
@ -352,7 +361,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
tank.setTankType(newType);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -374,7 +382,6 @@ public class TileEntityMachineGasCent extends TileEntityMachineBase implements I
|
||||
if(bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 5, zCoord + 1);
|
||||
}
|
||||
|
||||
return bb;
|
||||
}
|
||||
|
||||
|
||||
@ -106,10 +106,17 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement
|
||||
}
|
||||
}
|
||||
|
||||
if(autoMode) { //power production depending on power requirement
|
||||
if(autoMode) { //power production depending on power requirement and fuel level
|
||||
|
||||
//scales the slider proportionally to the power gauge
|
||||
int powerSliderTarget = 60 - (int) (60 * power / maxPower);
|
||||
int powerSliderTarget;
|
||||
|
||||
//when low on fuel, decrease consumption linearly
|
||||
if(tanks[0].getFill() * 10 > tanks[0].getMaxFill()) {
|
||||
powerSliderTarget = 60 - (int) (60 * power / maxPower); //scales the slider proportionally to the power gauge
|
||||
}
|
||||
else {
|
||||
powerSliderTarget = (int) ( tanks[0].getFill() * 0.0001 * (60 - (int) (60 * power / maxPower)) );
|
||||
}
|
||||
|
||||
if(powerSliderTarget > powerSliderPos) { //makes the auto slider slide instead of snapping into position
|
||||
powerSliderPos++;
|
||||
|
||||
@ -275,10 +275,16 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
this.centerY = y + RBMKDials.getColumnHeight(worldObj) + 1;
|
||||
this.centerZ = z;
|
||||
|
||||
this.spanF = 7;
|
||||
this.spanB = 7;
|
||||
this.spanL = 7;
|
||||
this.spanR = 7;
|
||||
int girderY = centerY + 6;
|
||||
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite();
|
||||
this.spanF = this.findRoomExtent(x, girderY, z, dir, 16);
|
||||
dir = dir.getRotation(ForgeDirection.UP);
|
||||
this.spanR = this.findRoomExtent(x, girderY, z, dir, 16);
|
||||
dir = dir.getRotation(ForgeDirection.UP);
|
||||
this.spanB = this.findRoomExtent(x, girderY, z, dir, 16);
|
||||
dir = dir.getRotation(ForgeDirection.UP);
|
||||
this.spanL = this.findRoomExtent(x, girderY, z, dir, 16);
|
||||
|
||||
this.height = 7;
|
||||
|
||||
@ -287,6 +293,16 @@ public class TileEntityCraneConsole extends TileEntityLoadedBase implements Simp
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
private int findRoomExtent(int x, int y, int z, ForgeDirection dir, int max) {
|
||||
for (int i = 1; i < max; i++) {
|
||||
if (!worldObj.isAirBlock(x + dir.offsetX * i, y, z + dir.offsetZ * i)) {
|
||||
return i - 1;
|
||||
}
|
||||
}
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
public void cycleCraneRotation() {
|
||||
this.craneRotationOffset = (this.craneRotationOffset + 90) % 360;
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ import net.minecraft.entity.monster.EntityCreeper;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.EntityDamageSource;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
@ -48,7 +49,7 @@ public class DamageResistanceHandler {
|
||||
|
||||
public static final String CATEGORY_EXPLOSION = "EXPL";
|
||||
public static final String CATEGORY_FIRE = "FIRE";
|
||||
public static final String CATEGORY_PROJECTILE = "PROJ";
|
||||
public static final String CATEGORY_PHYSICAL = "PHYS";
|
||||
public static final String CATEGORY_ENERGY = "EN";
|
||||
|
||||
public static final Gson gson = new Gson();
|
||||
@ -121,70 +122,70 @@ public class DamageResistanceHandler {
|
||||
entityStats.put(EntityCreeper.class, new ResistanceStats().addCategory(CATEGORY_EXPLOSION, 2F, 0.25F));
|
||||
|
||||
itemStats.put(ModItems.jackt, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 5F, 0.5F));
|
||||
.addCategory(CATEGORY_PHYSICAL, 5F, 0.5F));
|
||||
itemStats.put(ModItems.jackt2, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 5F, 0.5F));
|
||||
.addCategory(CATEGORY_PHYSICAL, 5F, 0.5F));
|
||||
|
||||
registerSet(ModItems.steel_helmet, ModItems.steel_plate, ModItems.steel_legs, ModItems.steel_boots, new ResistanceStats());
|
||||
registerSet(ModItems.titanium_helmet, ModItems.titanium_plate, ModItems.titanium_legs, ModItems.titanium_boots, new ResistanceStats());
|
||||
registerSet(ModItems.alloy_helmet, ModItems.alloy_plate, ModItems.alloy_legs, ModItems.alloy_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.1F));
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.1F));
|
||||
registerSet(ModItems.cobalt_helmet, ModItems.cobalt_plate, ModItems.cobalt_legs, ModItems.cobalt_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.1F));
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.1F));
|
||||
registerSet(ModItems.starmetal_helmet, ModItems.starmetal_plate, ModItems.starmetal_legs, ModItems.starmetal_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 3F, 0.25F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 3F, 0.25F)
|
||||
.setOther(1F, 0.1F));
|
||||
registerSet(ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, ModItems.zirconium_legs, new ResistanceStats()
|
||||
.setOther(0F, 1F));
|
||||
registerSet(ModItems.dnt_helmet, ModItems.dnt_plate, ModItems.dnt_legs, ModItems.dnt_boots, new ResistanceStats());
|
||||
registerSet(ModItems.cmb_helmet, ModItems.cmb_plate, ModItems.cmb_legs, ModItems.cmb_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 5F, 0.5F)
|
||||
.setOther(5F, 0.25F));
|
||||
registerSet(ModItems.schrabidium_helmet, ModItems.schrabidium_plate, ModItems.schrabidium_legs, ModItems.schrabidium_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 10F, 0.65F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 10F, 0.65F)
|
||||
.setOther(5F, 0.5F));
|
||||
registerSet(ModItems.robes_helmet, ModItems.robes_plate, ModItems.robes_legs, ModItems.robes_boots, new ResistanceStats());
|
||||
|
||||
registerSet(ModItems.security_helmet, ModItems.security_plate, ModItems.security_legs, ModItems.security_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 2F, 0.25F));
|
||||
registerSet(ModItems.steamsuit_helmet, ModItems.steamsuit_plate, ModItems.steamsuit_legs, ModItems.steamsuit_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 5F, 0.25F)
|
||||
.setOther(0F, 0.1F));
|
||||
registerSet(ModItems.dieselsuit_helmet, ModItems.dieselsuit_plate, ModItems.dieselsuit_legs, ModItems.dieselsuit_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 1F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 1F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.5F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 2F, 0.15F)
|
||||
.setOther(0F, 0.1F));
|
||||
registerSet(ModItems.t45_helmet, ModItems.t45_plate, ModItems.t45_legs, ModItems.t45_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.35F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
.setOther(0F, 0.1F));
|
||||
registerSet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 4F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 4F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.35F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
.setOther(0F, 0.15F));
|
||||
registerSet(ModItems.ajro_helmet, ModItems.ajro_plate, ModItems.ajro_legs, ModItems.ajro_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 4F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 4F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.35F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 7.5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
.setOther(0F, 0.15F));
|
||||
registerSet(ModItems.rpa_helmet, ModItems.rpa_plate, ModItems.rpa_legs, ModItems.rpa_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 25F, 0.65F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 25F, 0.65F)
|
||||
.addCategory(CATEGORY_FIRE, 10F, 0.9F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 15F, 0.25F)
|
||||
.addCategory(CATEGORY_ENERGY, 25F, 0.75F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
.setOther(15F, 0.3F));
|
||||
ResistanceStats bj = new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_FIRE, 2.5F, 0.5F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 10F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
@ -197,14 +198,14 @@ public class DamageResistanceHandler {
|
||||
.addExact(DamageSource.fall.damageType, 5F, 0.75F)
|
||||
.setOther(0F, 0.1F));
|
||||
registerSet(ModItems.hev_helmet, ModItems.hev_plate, ModItems.hev_legs, ModItems.hev_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.25F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.25F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.5F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 5F, 0.25F)
|
||||
.addExact(DamageSource.onFire.damageType, 0F, 1F)
|
||||
.addExact(DamageSource.fall.damageType, 10F, 0F)
|
||||
.setOther(2F, 0.25F));
|
||||
registerSet(ModItems.bismuth_helmet, ModItems.bismuth_plate, ModItems.bismuth_legs, ModItems.bismuth_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
@ -220,13 +221,13 @@ public class DamageResistanceHandler {
|
||||
.addCategory(CATEGORY_FIRE, 0F, 1F)
|
||||
.setOther(1000F, 1F));
|
||||
registerSet(ModItems.taurun_helmet, ModItems.taurun_plate, ModItems.taurun_legs, ModItems.taurun_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0F, 0.25F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 0F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 4F, 0.5F)
|
||||
.setOther(2F, 0.1F));
|
||||
registerSet(ModItems.trenchmaster_helmet, ModItems.trenchmaster_plate, ModItems.trenchmaster_legs, ModItems.trenchmaster_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PROJECTILE, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_PHYSICAL, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_FIRE, 5F, 0.5F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 5F, 0.25F)
|
||||
.addExact(DamageClass.LASER.name(), 15F, 0.9F)
|
||||
@ -443,10 +444,13 @@ public class DamageResistanceHandler {
|
||||
public static String typeToCategory(DamageSource source) {
|
||||
if(source.isExplosion()) return CATEGORY_EXPLOSION;
|
||||
if(source.isFireDamage()) return CATEGORY_FIRE;
|
||||
if(source.isProjectile()) return CATEGORY_PROJECTILE;
|
||||
if(source.isProjectile()) return CATEGORY_PHYSICAL;
|
||||
if(source.damageType.equals(DamageClass.LASER.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.equals(DamageClass.MICROWAVE.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.equals(DamageClass.SUBATOMIC.name())) return CATEGORY_ENERGY;
|
||||
if(source.damageType.equals(DamageClass.ELECTRIC.name())) return CATEGORY_ENERGY;
|
||||
if(source == DamageSource.cactus) return CATEGORY_PHYSICAL;
|
||||
if(source instanceof EntityDamageSource) return CATEGORY_PHYSICAL;
|
||||
return source.damageType;
|
||||
}
|
||||
|
||||
|
||||
197
src/main/java/com/hbm/util/MobUtil.java
Normal file
@ -0,0 +1,197 @@
|
||||
package com.hbm.util;
|
||||
|
||||
import com.hbm.entity.mob.ai.EntityAIFireGun;
|
||||
import com.hbm.items.ModItems;
|
||||
import net.minecraft.entity.EntityLiving;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.ai.EntityAITasks;
|
||||
import net.minecraft.entity.monster.EntitySkeleton;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.WeightedRandom;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class MobUtil {
|
||||
|
||||
|
||||
public static Map<Integer, List<WeightedRandomObject>> slotPoolCommon = new HashMap<>();
|
||||
public static Map<Integer, List<WeightedRandomObject>> slotPoolRanged = new HashMap<>();
|
||||
|
||||
public static Map<Integer, List<WeightedRandomObject>> slotPoolAdv = new HashMap<>();
|
||||
public static Map<Integer, List<WeightedRandomObject>> slotPoolAdvRanged;
|
||||
/**Unlike the above two, the Double is interpreted as minimum soot level, instead of armor slot **/
|
||||
public static HashMap<Double, List<WeightedRandomObject>> slotPoolGuns = new HashMap<>();
|
||||
|
||||
|
||||
public static void intializeMobPools(){
|
||||
slotPoolCommon.put(4, createSlotPool(8000, new Object[][]{ //new slots, smooth, brushed, no wrinkles // old slots, wrinkled, rusty, not smooth
|
||||
{ModItems.gas_mask_m65, 16}, {ModItems.gas_mask_olde, 12}, {ModItems.mask_of_infamy, 8},
|
||||
{ModItems.gas_mask_mono, 8}, {ModItems.robes_helmet, 32}, {ModItems.no9, 16},
|
||||
{ModItems.cobalt_helmet, 2}, {ModItems.rag_piss, 1}, {ModItems.hat, 1}, {ModItems.alloy_helmet, 2},
|
||||
{ModItems.titanium_helmet, 4}, {ModItems.steel_helmet, 8}
|
||||
}));
|
||||
slotPoolCommon.put(3, createSlotPool(7000, new Object[][]{
|
||||
{ModItems.starmetal_plate, 1}, {ModItems.cobalt_plate, 2}, {ModItems.robes_plate, 32},
|
||||
{ModItems.jackt, 32}, {ModItems.jackt2, 32}, {ModItems.alloy_plate, 2},
|
||||
{ModItems.steel_plate, 2}
|
||||
}));
|
||||
slotPoolCommon.put(2, createSlotPool(7000, new Object[][]{
|
||||
{ModItems.zirconium_legs, 1}, {ModItems.cobalt_legs, 2}, {ModItems.steel_legs, 16},
|
||||
{ModItems.titanium_legs, 8}, {ModItems.robes_legs, 32}, {ModItems.alloy_legs, 2}
|
||||
}));
|
||||
slotPoolCommon.put(1, createSlotPool(7000, new Object[][]{
|
||||
{ModItems.robes_boots, 32}, {ModItems.steel_boots, 16}, {ModItems.cobalt_boots, 2}, {ModItems.alloy_boots, 2}
|
||||
}));
|
||||
slotPoolCommon.put(0, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.pipe_lead, 30}, {ModItems.crowbar, 25}, {ModItems.geiger_counter, 20},
|
||||
{ModItems.reer_graar, 16}, {ModItems.steel_pickaxe, 12}, {ModItems.stopsign, 10},
|
||||
{ModItems.sopsign, 8}, {ModItems.chernobylsign, 6}, {ModItems.steel_sword, 15},
|
||||
{ModItems.titanium_sword, 8}, {ModItems.lead_gavel, 4}, {ModItems.wrench_flipped, 2},
|
||||
{ModItems.wrench, 20}
|
||||
}));
|
||||
|
||||
slotPoolRanged.put(4, createSlotPool(12000, new Object[][]{
|
||||
{ModItems.gas_mask_m65, 16}, {ModItems.gas_mask_olde, 12}, {ModItems.mask_of_infamy, 8},
|
||||
{ModItems.gas_mask_mono, 8}, {ModItems.robes_helmet, 32}, {ModItems.no9, 16},
|
||||
{ModItems.rag_piss, 1}, {ModItems.goggles, 1}, {ModItems.alloy_helmet, 2},
|
||||
{ModItems.titanium_helmet, 4}, {ModItems.steel_helmet, 8}
|
||||
}));
|
||||
slotPoolRanged.put(3, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.starmetal_plate, 1}, {ModItems.cobalt_plate, 2}, {ModItems.alloy_plate, 2}, //sadly they cant wear jackets bc it breaks it
|
||||
{ModItems.steel_plate, 8}, {ModItems.titanium_plate, 4}
|
||||
}));
|
||||
slotPoolRanged.put(2, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.zirconium_legs, 1}, {ModItems.cobalt_legs, 2}, {ModItems.steel_legs, 16},
|
||||
{ModItems.titanium_legs, 8}, {ModItems.robes_legs, 32}, {ModItems.alloy_legs, 2},
|
||||
}));
|
||||
slotPoolRanged.put(1, createSlotPool(10000, new Object[][]{
|
||||
{ModItems.robes_boots, 32}, {ModItems.steel_boots, 16}, {ModItems.cobalt_boots, 2}, {ModItems.alloy_boots, 2},
|
||||
{ModItems.titanium_boots, 6}
|
||||
}));
|
||||
|
||||
slotPoolGuns.put(0.3, createSlotPool(new Object[][]{
|
||||
{ModItems.gun_light_revolver, 16}, {ModItems.gun_greasegun, 8}, {ModItems.gun_maresleg, 2}
|
||||
}));
|
||||
slotPoolGuns.put(1D, createSlotPool(new Object[][]{
|
||||
{ModItems.gun_light_revolver, 6}, {ModItems.gun_greasegun, 8}, {ModItems.gun_maresleg, 4}, {ModItems.gun_henry, 6}
|
||||
}));
|
||||
slotPoolGuns.put(3D, createSlotPool(new Object[][]{
|
||||
{ModItems.gun_uzi, 10}, {ModItems.gun_maresleg, 8}, {ModItems.gun_henry, 12}, {ModItems.gun_heavy_revolver, 4}, {ModItems.gun_flaregun, 2}
|
||||
}));
|
||||
slotPoolGuns.put(5D, createSlotPool(new Object[][]{
|
||||
{ModItems.gun_am180, 6}, {ModItems.gun_uzi, 10}, {ModItems.gun_spas12, 8}, {ModItems.gun_henry_lincoln, 2}, {ModItems.gun_heavy_revolver, 12}, {ModItems.gun_flaregun, 4}, {ModItems.gun_flamer, 2}
|
||||
}));
|
||||
|
||||
slotPoolAdv.put(4, createSlotPool(new Object[][]{
|
||||
{ModItems.security_helmet, 10}, {ModItems.t45_helmet, 4}, {ModItems.asbestos_helmet, 12},
|
||||
{ModItems.liquidator_helmet, 4}, {ModItems.no9, 12},
|
||||
{ModItems.hazmat_helmet, 6}
|
||||
}));
|
||||
slotPoolAdv.put(3, createSlotPool(new Object[][]{
|
||||
{ModItems.liquidator_plate, 4}, {ModItems.security_plate, 8}, {ModItems.asbestos_plate, 12},
|
||||
{ModItems.t45_plate, 4}, {ModItems.hazmat_plate, 6},
|
||||
{ModItems.steel_plate, 8}
|
||||
}));
|
||||
slotPoolAdv.put(2, createSlotPool(new Object[][]{
|
||||
{ModItems.liquidator_legs, 4}, {ModItems.security_legs, 8}, {ModItems.asbestos_legs, 12},
|
||||
{ModItems.t45_legs, 4}, {ModItems.hazmat_legs, 6},
|
||||
{ModItems.steel_legs, 8}
|
||||
}));
|
||||
slotPoolAdv.put(1, createSlotPool(new Object[][]{
|
||||
{ModItems.liquidator_boots, 4}, {ModItems.security_boots, 8}, {ModItems.asbestos_boots, 12},
|
||||
{ModItems.t45_boots, 4}, {ModItems.hazmat_boots, 6},
|
||||
{ModItems.robes_boots, 8}
|
||||
}));
|
||||
slotPoolAdv.put(0, createSlotPool(new Object[][]{
|
||||
{ModItems.pipe_lead, 20}, {ModItems.crowbar, 30}, {ModItems.geiger_counter, 20},
|
||||
{ModItems.reer_graar, 20}, {ModItems.wrench_flipped, 12}, {ModItems.stopsign, 16},
|
||||
{ModItems.sopsign, 4}, {ModItems.chernobylsign, 16},
|
||||
{ModItems.titanium_sword, 18}, {ModItems.lead_gavel, 8},
|
||||
{ModItems.wrench, 20}
|
||||
}));
|
||||
|
||||
slotPoolAdvRanged = new HashMap<>(slotPoolAdv);
|
||||
slotPoolAdvRanged.remove(0);
|
||||
|
||||
}
|
||||
|
||||
public static List<WeightedRandomObject> createSlotPool(int nullWeight, Object[][] items) {
|
||||
List<WeightedRandomObject> pool = new ArrayList<>();
|
||||
pool.add(new WeightedRandomObject(null, nullWeight));
|
||||
for (Object[] item : items) {
|
||||
Object obj = item[0];
|
||||
int weight = (int) item[1];
|
||||
|
||||
if (obj instanceof Item) {
|
||||
pool.add(new WeightedRandomObject(new ItemStack((Item) obj), weight));
|
||||
} else if (obj instanceof ItemStack) { //lol just make it pass ItemStack aswell
|
||||
pool.add(new WeightedRandomObject(obj, weight));
|
||||
}
|
||||
}
|
||||
return pool;
|
||||
}
|
||||
public static List<WeightedRandomObject> createSlotPool(Object[][] items) {
|
||||
List<WeightedRandomObject> pool = new ArrayList<>();
|
||||
for (Object[] item : items) {
|
||||
Object obj = item[0];
|
||||
int weight = (int) item[1];
|
||||
|
||||
if (obj instanceof Item) {
|
||||
pool.add(new WeightedRandomObject(new ItemStack((Item) obj), weight));
|
||||
} else if (obj instanceof ItemStack) { //lol just make it pass ItemStack aswell
|
||||
pool.add(new WeightedRandomObject(obj, weight));
|
||||
}
|
||||
}
|
||||
return pool;
|
||||
}
|
||||
|
||||
public static void equipFullSet(EntityLivingBase entity, Item helmet, Item chest, Item legs, Item boots) { //for brainlets (me) to add more armorsets later when i forget about how this works
|
||||
entity.setCurrentItemOrArmor(4, new ItemStack(helmet)); //p_70062_1_ is the slot number
|
||||
entity.setCurrentItemOrArmor(3, new ItemStack(chest));
|
||||
entity.setCurrentItemOrArmor(2, new ItemStack(legs));
|
||||
entity.setCurrentItemOrArmor(1, new ItemStack(boots));
|
||||
}
|
||||
|
||||
public static void assignItemsToEntity(EntityLivingBase entity, Map<Integer, List<WeightedRandomObject>> slotPools, Random rand) {
|
||||
for (Map.Entry<Integer, List<WeightedRandomObject>> entry : slotPools.entrySet()) {
|
||||
int slot = entry.getKey();
|
||||
List<WeightedRandomObject> pool = entry.getValue();
|
||||
|
||||
WeightedRandomObject choice = (WeightedRandomObject) WeightedRandom.getRandomItem(rand, pool); //NullPointerException sludge fix
|
||||
if (choice == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ItemStack stack = choice.asStack();
|
||||
if (stack == null || stack.getItem() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (stack.getItem() == ModItems.gas_mask_m65 //eyesore
|
||||
|| stack.getItem() == ModItems.gas_mask_olde
|
||||
|| stack.getItem() == ModItems.gas_mask_mono) {
|
||||
ArmorUtil.installGasMaskFilter(stack, new ItemStack(ModItems.gas_mask_filter));
|
||||
}
|
||||
|
||||
entity.setCurrentItemOrArmor(slot, stack);
|
||||
|
||||
//Give skeleton AI if it has a gun
|
||||
if (slot == 0 && entity instanceof EntitySkeleton && pool == slotPools.get(0)) {
|
||||
addFireTask((EntityLiving) entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// these fucking tasks keep stacking on top of themselves
|
||||
public static void addFireTask(EntityLiving entity) {
|
||||
entity.setEquipmentDropChance(0, 0); // Prevent dropping guns
|
||||
|
||||
for(Object entry : entity.tasks.taskEntries) {
|
||||
EntityAITasks.EntityAITaskEntry task = (EntityAITasks.EntityAITaskEntry) entry;
|
||||
if(task.action instanceof EntityAIFireGun) return;
|
||||
}
|
||||
|
||||
entity.tasks.addTask(3, new EntityAIFireGun(entity));
|
||||
}
|
||||
}
|
||||
268
src/main/java/com/hbm/world/gen/util/LogicBlockActions.java
Normal file
@ -0,0 +1,268 @@
|
||||
package com.hbm.world.gen.util;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockSkeletonHolder;
|
||||
import com.hbm.blocks.generic.LogicBlock;
|
||||
import com.hbm.entity.item.EntityFallingBlockNT;
|
||||
import com.hbm.entity.missile.EntityMissileTier2;
|
||||
import com.hbm.entity.mob.EntityUndeadSoldier;
|
||||
import com.hbm.items.ItemEnums;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.TileEntityDoorGeneric;
|
||||
import com.hbm.tileentity.machine.storage.TileEntityCrateBase;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
import com.hbm.util.MobUtil;
|
||||
import com.hbm.util.Vec3NT;
|
||||
import com.hbm.world.WorldUtil;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
||||
import net.minecraft.entity.monster.EntityZombie;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class LogicBlockActions {
|
||||
|
||||
public static LinkedHashMap<String, Consumer<LogicBlock.TileEntityLogicBlock>> actions = new LinkedHashMap<>();
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> PHASE_ABERRATOR = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
if (tile.phase == 1 || tile.phase == 2) {
|
||||
tile.player = world.getClosestPlayer(x,y,z, 25);
|
||||
if (tile.timer == 0) {
|
||||
Vec3NT vec = new Vec3NT(20, 0, 0);
|
||||
for (int i = 0; i < 10; i++) {
|
||||
|
||||
if(vec.xCoord > 8) vec.xCoord += world.rand.nextInt(10) - 5;
|
||||
|
||||
EntityUndeadSoldier mob = new EntityUndeadSoldier(world);
|
||||
for (int j = 0; j < 7; j++) {
|
||||
mob.setPositionAndRotation(x + 0.5 + vec.xCoord, world.getHeightValue((int) (x + 0.5 + vec.xCoord),(int) (z + 0.5 + vec.zCoord)), z + 0.5 + vec.zCoord, i * 36F, 0);
|
||||
if (mob.getCanSpawnHere()) {
|
||||
mob.onSpawnWithEgg(null);
|
||||
if(tile.player != null){
|
||||
mob.setTarget(tile.player);
|
||||
}
|
||||
world.spawnEntityInWorld(mob);
|
||||
break;
|
||||
}
|
||||
}
|
||||
vec.rotateAroundYDeg(36D);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (tile.phase > 2) {
|
||||
TileEntity te = world.getTileEntity(x, y + 18, z);
|
||||
if (te instanceof BlockSkeletonHolder.TileEntitySkeletonHolder) {
|
||||
BlockSkeletonHolder.TileEntitySkeletonHolder skeleton = (BlockSkeletonHolder.TileEntitySkeletonHolder) te;
|
||||
if (world.rand.nextInt(5) == 0) {
|
||||
skeleton.item = new ItemStack(ModItems.item_secret, 1, ItemEnums.EnumSecretType.ABERRATOR.ordinal());
|
||||
} else {
|
||||
skeleton.item = new ItemStack(ModItems.clay_tablet, 1, 1);
|
||||
}
|
||||
skeleton.markDirty();
|
||||
world.markBlockForUpdate(x, y + 18, z);
|
||||
}
|
||||
world.setBlock(x, y, z, Blocks.obsidian);
|
||||
}
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> COLLAPSE_ROOF_RAD_5 = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
if(tile.phase == 0) return;
|
||||
|
||||
//from explosionChaos because i cannot be assed
|
||||
int r = 4;
|
||||
int r2 = r * r;
|
||||
int r22 = r2 / 2;
|
||||
|
||||
for (int xx = -r; xx < r; xx++) {
|
||||
int X = xx + x;
|
||||
int XX = xx * xx;
|
||||
for (int yy = -r; yy < r; yy++) {
|
||||
int Y = yy + y;
|
||||
int YY = XX + yy * yy;
|
||||
for (int zz = -r; zz < r; zz++) {
|
||||
int Z = zz + z;
|
||||
int ZZ = YY + zz * zz;
|
||||
if (ZZ < r22) {
|
||||
|
||||
if (world.getBlock(X, Y, Z).getExplosionResistance(null) <= 70) {
|
||||
EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, X + 0.5, Y + 0.5, Z + 0.5, world.getBlock(X, Y, Z), world.getBlockMetadata(X, Y, Z));
|
||||
world.spawnEntityInWorld(entityfallingblock);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
world.setBlock(x, y, z, ModBlocks.block_steel);
|
||||
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> FODDER_WAVE = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
if (tile.phase == 1) {
|
||||
Vec3NT vec = new Vec3NT(5, 0, 0);
|
||||
for (int i = 0; i < 10; i++) {
|
||||
EntityZombie mob = new EntityZombie(world);
|
||||
mob.setPositionAndRotation(x + 0.5 + vec.xCoord, world.getHeightValue(x,z), z + 0.5 + vec.zCoord, i * 36F, 0);
|
||||
MobUtil.assignItemsToEntity(mob, MobUtil.slotPoolAdv, new Random());
|
||||
world.spawnEntityInWorld(mob);
|
||||
|
||||
vec.rotateAroundYDeg(36D);
|
||||
}
|
||||
world.setBlock(x, y, z, ModBlocks.block_steel);
|
||||
}
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> PUZZLE_TEST = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
if(tile.phase == 2){
|
||||
world.setBlock(x,y,z, ModBlocks.crate_steel);
|
||||
|
||||
EntityLightningBolt blitz = new EntityLightningBolt(world, x, world.getHeightValue(x, z) + 2, z);
|
||||
world.spawnEntityInWorld(blitz);
|
||||
|
||||
TileEntityCrateBase crate = (TileEntityCrateBase) world.getTileEntity(x,y,z);
|
||||
((IInventory)crate).setInventorySlotContents(15, new ItemStack(ModItems.gun_bolter));
|
||||
}
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> MISSILE_STRIKE = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
if(tile.phase != 1) return;
|
||||
|
||||
world.getClosestPlayer(x,y,z, 25).addChatMessage(new ChatComponentText(EnumChatFormatting.LIGHT_PURPLE + "[COMMAND UNIT]"+ EnumChatFormatting.RESET + " Missile Fired"));
|
||||
|
||||
ForgeDirection parallel = tile.direction.getRotation(ForgeDirection.UP);
|
||||
|
||||
EntityMissileTier2.EntityMissileStrong missile =
|
||||
new EntityMissileTier2.EntityMissileStrong(
|
||||
world,
|
||||
x + tile.direction.offsetX * 300,
|
||||
200,
|
||||
z + tile.direction.offsetZ * 300,
|
||||
x + parallel.offsetX * 30 + tile.direction.offsetX * 30,
|
||||
z + parallel.offsetZ * 30 + tile.direction.offsetZ * 30);
|
||||
WorldUtil.loadAndSpawnEntityInWorld(missile);
|
||||
|
||||
world.setBlock(x,y,z, ModBlocks.block_electrical_scrap);
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> RAD_CONTAINMENT_SYSTEM = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
ForgeDirection direction = tile.direction.getOpposite();
|
||||
ForgeDirection rot = direction.getRotation(ForgeDirection.UP);
|
||||
|
||||
AxisAlignedBB bb = AxisAlignedBB.getBoundingBox(x - rot.offsetX, y - 1, z - rot.offsetZ, x + rot.offsetX + direction.offsetX * 15, y + 1, z + rot.offsetZ + direction.offsetZ * 15).expand(2,2,2);
|
||||
|
||||
List<EntityLivingBase> entities = world.getEntitiesWithinAABB(EntityLivingBase.class, bb);
|
||||
|
||||
for(EntityLivingBase e : entities) {
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(e.posX - (x + 0.5), (e.posY + e.getEyeHeight()) - (y + 0.5), e.posZ - (z + 0.5));
|
||||
double len = vec.lengthVector();
|
||||
vec = vec.normalize();
|
||||
|
||||
len = Math.max(len,1D);
|
||||
|
||||
float res = 0;
|
||||
|
||||
for(int i = 1; i < len; i++) {
|
||||
|
||||
int ix = (int)Math.floor(x + 0.5 + vec.xCoord * i);
|
||||
int iy = (int)Math.floor(y + 0.5 + vec.yCoord * i);
|
||||
int iz = (int)Math.floor(z + 0.5 + vec.zCoord * i);
|
||||
|
||||
res += world.getBlock(ix, iy, iz).getExplosionResistance(null);
|
||||
}
|
||||
|
||||
if(res < 1)
|
||||
res = 1;
|
||||
|
||||
float eRads = 100F;
|
||||
eRads /= (float)res;
|
||||
eRads /= (float)(len * len);
|
||||
|
||||
ContaminationUtil.contaminate(e, ContaminationUtil.HazardType.RADIATION, ContaminationUtil.ContaminationType.HAZMAT2, eRads);
|
||||
}
|
||||
|
||||
if (tile.phase == 2 && tile.timer > 40){
|
||||
world.getClosestPlayer(x,y,z, 25).addChatMessage(new ChatComponentText(
|
||||
EnumChatFormatting.LIGHT_PURPLE + "[RAD CONTAINMENT SYSTEM]" +
|
||||
EnumChatFormatting.RESET + " Diagnostics found containment failure, commencing lockdown"));
|
||||
|
||||
for(int i = 1; i < 20; i++) {
|
||||
int checkX, checkY, checkZ;
|
||||
checkX = x + direction.offsetX * i;
|
||||
checkY = y + 1;
|
||||
checkZ = z + direction.offsetZ * i;
|
||||
Block block = world.getBlock(checkX, checkY,checkZ);
|
||||
TileEntity te = null;
|
||||
if(block instanceof BlockDummyable){
|
||||
int[] coreCoords = ((BlockDummyable) block).findCore(world,checkX,checkY,checkZ);
|
||||
te = world.getTileEntity(coreCoords[0], coreCoords[1], coreCoords[2]);
|
||||
}
|
||||
|
||||
if (te instanceof TileEntityDoorGeneric) {
|
||||
TileEntityDoorGeneric door = (TileEntityDoorGeneric) te;
|
||||
door.setPins(456);
|
||||
door.close();
|
||||
door.lock();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tile.phase = 3;
|
||||
}
|
||||
};
|
||||
|
||||
public static List<String> getActionNames(){
|
||||
return new ArrayList<>(actions.keySet());
|
||||
}
|
||||
|
||||
//register new actions here
|
||||
static{
|
||||
//example actions
|
||||
actions.put("FODDER_WAVE", FODDER_WAVE);
|
||||
actions.put("ABERRATOR", PHASE_ABERRATOR);
|
||||
actions.put("COLLAPSE_ROOF_RAD_5", COLLAPSE_ROOF_RAD_5);
|
||||
actions.put("PUZZLE_TEST", PUZZLE_TEST);
|
||||
actions.put("MISSILE_STRIKE", MISSILE_STRIKE);
|
||||
actions.put("IRRADIATE_ENTITIES_AOE", RAD_CONTAINMENT_SYSTEM);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,97 @@
|
||||
package com.hbm.world.gen.util;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockPedestal;
|
||||
import com.hbm.blocks.generic.LogicBlock;
|
||||
import com.hbm.entity.mob.EntityUndeadSoldier;
|
||||
import com.hbm.items.ModItems;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class LogicBlockConditions {
|
||||
|
||||
public static LinkedHashMap<String, Function<LogicBlock.TileEntityLogicBlock, Boolean>> conditions = new LinkedHashMap<>();
|
||||
|
||||
/**For use with interactions, for having them handle all conditional tasks*/
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> EMPTY = (tile) -> false;
|
||||
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> ABERRATOR = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
if(world.difficultySetting.ordinal() == 0) return false;
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
boolean aoeCheck = !world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y - 2, z + 1).expand(10, 10, 10)).isEmpty();
|
||||
if(tile.phase == 0) {
|
||||
if(world.getTotalWorldTime() % 20 != 0) return false;
|
||||
return aoeCheck;
|
||||
}
|
||||
if(tile.phase < 3) {
|
||||
if(world.getTotalWorldTime() % 20 != 0 || tile.timer < 60) return false;
|
||||
return world.getEntitiesWithinAABB(EntityUndeadSoldier.class, AxisAlignedBB.getBoundingBox(x, y, z, x - 2, y + 1, z + 1).expand(50, 20, 50)).isEmpty() && aoeCheck;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> PLAYER_CUBE_5 = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
return !world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y - 2, z + 1).expand(5, 5, 5)).isEmpty();
|
||||
};
|
||||
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> REDSTONE = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
return world.isBlockIndirectlyGettingPowered(x,y,z);
|
||||
};
|
||||
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> PUZZLE_TEST = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
if(tile.phase == 0 && world.isBlockIndirectlyGettingPowered(x,y,z)){
|
||||
world.getClosestPlayer(x,y,z, 25).addChatMessage(new ChatComponentText("Find a " + EnumChatFormatting.GOLD + "great" + EnumChatFormatting.RESET + " ancient weapon, of questionable use in the modern age"));
|
||||
world.setBlock(x,y + 1,z, ModBlocks.pedestal);
|
||||
return true;
|
||||
}
|
||||
|
||||
TileEntity pedestal = world.getTileEntity(x,y + 1,z);
|
||||
|
||||
return tile.phase == 1
|
||||
&& pedestal instanceof BlockPedestal.TileEntityPedestal
|
||||
&& ((BlockPedestal.TileEntityPedestal) pedestal).item != null
|
||||
&& ((BlockPedestal.TileEntityPedestal) pedestal).item.getItem() == ModItems.big_sword;
|
||||
};
|
||||
|
||||
public static List<String> getConditionNames(){
|
||||
return new ArrayList<>(conditions.keySet());
|
||||
}
|
||||
|
||||
//register new conditions here
|
||||
static {
|
||||
//example conditions
|
||||
conditions.put("EMPTY", EMPTY);
|
||||
conditions.put("ABERRATOR", ABERRATOR);
|
||||
conditions.put("PLAYER_CUBE_5", PLAYER_CUBE_5);
|
||||
conditions.put("REDSTONE", REDSTONE);
|
||||
conditions.put("PUZZLE_TEST", PUZZLE_TEST);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,71 @@
|
||||
package com.hbm.world.gen.util;
|
||||
|
||||
import com.hbm.blocks.generic.LogicBlock;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.potion.HbmPotion;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**Interactions are called when the player right-clicks the block**/
|
||||
public class LogicBlockInteractions {
|
||||
|
||||
/**Consumer consists of world instance, tile entity instance, three ints for coordinates, one int for block side, and player instance,
|
||||
* in that order **/
|
||||
public static LinkedHashMap<String, Consumer<Object[]>> interactions = new LinkedHashMap<>();
|
||||
|
||||
public static Consumer<Object[]> TEST = (array) -> {
|
||||
World world = (World) array[0];
|
||||
LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) array[1];
|
||||
int x = (int) array[2];
|
||||
int y = (int) array[3];
|
||||
int z = (int) array[4];
|
||||
EntityPlayer player = (EntityPlayer) array[5];
|
||||
int side = (int) array[6];
|
||||
|
||||
if(logic.phase > 1) return;
|
||||
|
||||
if(player.getHeldItem() != null)
|
||||
player.getHeldItem().stackSize--;
|
||||
|
||||
logic.phase++;
|
||||
};
|
||||
|
||||
public static Consumer<Object[]> RAD_CONTAINMENT_SYSTEM = (array) -> {
|
||||
LogicBlock.TileEntityLogicBlock logic = (LogicBlock.TileEntityLogicBlock) array[1];
|
||||
EntityPlayer player = (EntityPlayer) array[5];
|
||||
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.key){
|
||||
player.getHeldItem().stackSize--;
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
EnumChatFormatting.LIGHT_PURPLE + "[RAD CONTAINMENT SYSTEM]" +
|
||||
EnumChatFormatting.RESET + " Radiation treatment administered"));
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.radaway.getId(), 3 * 60 * 20, 4));
|
||||
player.addPotionEffect(new PotionEffect(HbmPotion.radx.getId(), 3 * 60 * 20, 4));
|
||||
logic.phase = 2;
|
||||
logic.timer = 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
public static List<String> getInteractionNames(){
|
||||
return new ArrayList<>(interactions.keySet());
|
||||
}
|
||||
|
||||
//register new interactions here
|
||||
static{
|
||||
interactions.put("TEST", TEST);
|
||||
interactions.put("RADAWAY_INJECTOR", RAD_CONTAINMENT_SYSTEM);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -371,6 +371,7 @@ container.leadBox=Sicherheitsbehälter
|
||||
container.machineAmmoPress=Munitionspresse
|
||||
container.machineArcWelder=Lichtbogenschweißer
|
||||
container.machineArcFurnaceLarge=Lichtbogenofen
|
||||
container.machineAssemblyMachine=Montagemaschine
|
||||
container.machineBoiler=Ölwärmer
|
||||
container.machineChemicalFactory=Chemiefabrik
|
||||
container.machineChemicalPlant=Chemiewerk
|
||||
@ -509,7 +510,7 @@ damage.item=Resistenz wenn getragen:
|
||||
damage.category.EN=Energie
|
||||
damage.category.EXPL=Explosion
|
||||
damage.category.FIRE=Feuer
|
||||
damage.category.PROJ=Projektil
|
||||
damage.category.PHYS=Physisch
|
||||
damage.exact.drown=Ertrinken
|
||||
damage.exact.fall=Fallschaden
|
||||
damage.exact.LASER=Laser
|
||||
@ -1416,6 +1417,7 @@ item.blades_schrabidium.name=Schrabidiumsägeblatt
|
||||
item.blades_steel.name=Stahlsägeblatt
|
||||
item.blades_titanium.name=Titansägeblatt
|
||||
item.blowtorch.name=Lötlampe
|
||||
item.blueprints.name=Blaupausen
|
||||
item.board_copper.name=Kupfertafel
|
||||
item.boat_rubber.name=Schlauchboot
|
||||
item.bobmazon.name=Bobmazon
|
||||
@ -4346,8 +4348,9 @@ tile.machine_arc_welder.name=Lichtbogenschweißer
|
||||
tile.machine_armor_table.name=Rüstungsmodifikationstisch
|
||||
tile.machine_ashpit.name=Aschekasten
|
||||
tile.machine_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen
|
||||
tile.machine_assembler.name=Fertigungsmaschine
|
||||
tile.machine_assembler.name=Fertigungsmaschine (Legacy)
|
||||
tile.machine_assemfac.name=Fertigungsfabrik
|
||||
tile.machine_assembly_machine.name=Montagemaschine
|
||||
tile.machine_autocrafter.name=Automatische Werkbank
|
||||
tile.machine_autosaw.name=Automatische Kreissäge
|
||||
tile.machine_autosaw.desc=Schneidet Pflanzen nieder, pflanzt Bäume nach$Akzeptiert:$-Holzöl$-Ethanol$-Fischöl$-Schweröl
|
||||
|
||||
@ -773,6 +773,7 @@ container.leadBox=Containment Box
|
||||
container.machineAmmoPress=Ammo Press
|
||||
container.machineArcWelder=Arc Welder
|
||||
container.machineArcFurnaceLarge=Arc Furnace
|
||||
container.machineAssemblyMachine=Assembly Machine
|
||||
container.machineBoiler=Oil Heater
|
||||
container.machineChemicalFactory=Chemical Factory
|
||||
container.machineChemicalPlant=Chemical Plant
|
||||
@ -925,7 +926,7 @@ damage.item=Resistances when worn:
|
||||
damage.category.EN=Energy
|
||||
damage.category.EXPL=Explosion
|
||||
damage.category.FIRE=Fire
|
||||
damage.category.PROJ=Projectile
|
||||
damage.category.PHYS=Physical
|
||||
damage.exact.drown=Drowning
|
||||
damage.exact.fall=Fall damage
|
||||
damage.exact.LASER=Laser
|
||||
@ -1033,7 +1034,7 @@ desc.gui.rtg.pellets=Accepted Pellets:
|
||||
desc.gui.rtg.pelletHeat=%s (%s heat)
|
||||
desc.gui.rtg.pelletPower=%s (%s HE/tick)
|
||||
desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Template Folder.
|
||||
desc.gui.turbinegas.automode=§2Automatic Turbine Throttling Mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network
|
||||
desc.gui.turbinegas.automode=§2Automatic turbine throttling mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the throttle position$based on the power required from the network$and the fuel level in the internal tank
|
||||
desc.gui.turbinegas.fuels=§6Accepted fuels:§r
|
||||
desc.gui.turbinegas.warning=§cFuel or lubricant level low!§r
|
||||
desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure.
|
||||
@ -2160,6 +2161,7 @@ item.blades_desh.name=Desh Shredder Blades
|
||||
item.blades_steel.name=Steel Shredder Blades
|
||||
item.blades_titanium.name=Titanium Shredder Blades
|
||||
item.blowtorch.name=Blowtorch
|
||||
item.blueprints.name=Blueprints
|
||||
item.board_copper.name=Copper Panel
|
||||
item.boat_rubber.name=Rubber Boat
|
||||
item.bobmazon.name=Bobmazon
|
||||
@ -5279,6 +5281,7 @@ tile.ducrete_smooth_stairs.name=Ducrete Stairs
|
||||
tile.dummy_block.name=Dummy Block
|
||||
tile.dummy_port.name=Dummy Block (Electricity Port)
|
||||
tile.dungeon_chain.name=Metal Chain
|
||||
tile.logic_block.name=Dungeon Action Block
|
||||
tile.dynamite.name=Dynamite
|
||||
tile.emp_bomb.name=EMP Device
|
||||
tile.factory_advanced_conductor.name=Advanced Factory Electricity Port
|
||||
@ -5478,8 +5481,9 @@ tile.machine_arc_welder.name=Arc Welder
|
||||
tile.machine_armor_table.name=Armor Modification Table
|
||||
tile.machine_ashpit.name=Ashpit
|
||||
tile.machine_ashpit.desc=Collects ashes from fireboxes and heating ovens
|
||||
tile.machine_assembler.name=Assembly Machine
|
||||
tile.machine_assembler.name=Assembly Machine (Legacy)
|
||||
tile.machine_assemfac.name=Assembly Factory
|
||||
tile.machine_assembly_machine.name=Assembly Machine
|
||||
tile.machine_autocrafter.name=Automatic Crafting Table
|
||||
tile.machine_autosaw.name=Automatic Buzz Saw
|
||||
tile.machine_autosaw.desc=Cuts down nearby plants, re-plants trees$Accepts:$-Wood oil$-Ethanol$-Fish oil$-Heavy oil
|
||||
@ -6062,6 +6066,7 @@ tile.volcano_rad_core.name=Rad Volcano Core
|
||||
tile.wand_air.name=Structure Wand Block (Air)
|
||||
tile.wand_loot.name=Structure Wand Block (Lootable)
|
||||
tile.wand_jigsaw.name=Structure Wand Block (Jigsaw)
|
||||
tile.wand_logic.name=Structure Wand Block (Logic)
|
||||
tile.waste_earth.name=Dead Grass
|
||||
tile.waste_leaves.name=Dead Leaves
|
||||
tile.waste_log.name=Charred Log
|
||||
@ -6226,3 +6231,5 @@ desc.gui.upgrade.effectiveness= * §aEffectiveness§r: Stacks to level 3
|
||||
desc.gui.upgrade.overdrive= * §7Overdrive§r: Stacks to level 3
|
||||
desc.gui.upgrade.power= * §1Power-Saving§r: Stacks to level 3
|
||||
desc.gui.upgrade.speed= * §4Speed§r: Stacks to level 3
|
||||
|
||||
tile.oc_cable_paintable.name=Paintable Network Cable
|
||||
|
||||
@ -68,6 +68,9 @@
|
||||
"block.motor": {"category": "block", "sounds": [{"name": "block/motor", "stream": false}]},
|
||||
"block.engine": {"category": "block", "sounds": [{"name": "block/engine", "stream": false}]},
|
||||
"block.chemicalPlant": {"category": "block", "sounds": [{"name": "block/chemicalPlant", "stream": false}]},
|
||||
"block.assemblerStrike": {"category": "block", "sounds": ["block/assemblerStrike1", "block/assemblerStrike2"]},
|
||||
"block.assemblerStart": {"category": "block", "sounds": [{"name": "block/assemblerStart", "stream": false}]},
|
||||
"block.assemblerStop": {"category": "block", "sounds": [{"name": "block/assemblerStop", "stream": false}]},
|
||||
|
||||
"door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]},
|
||||
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/block/assemblerStart.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/assemblerStop.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/assemblerStrike1.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/assemblerStrike2.ogg
Normal file
BIN
src/main/resources/assets/hbm/textures/blocks/logic_block.png
Normal file
|
After Width: | Height: | Size: 910 B |
BIN
src/main/resources/assets/hbm/textures/blocks/oc_cable_base.png
Normal file
|
After Width: | Height: | Size: 612 B |
BIN
src/main/resources/assets/hbm/textures/blocks/oc_cable_color.png
Normal file
|
After Width: | Height: | Size: 111 B |
|
After Width: | Height: | Size: 139 B |
|
Before Width: | Height: | Size: 322 B After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 415 B After Width: | Height: | Size: 425 B |
|
Before Width: | Height: | Size: 429 B After Width: | Height: | Size: 439 B |
BIN
src/main/resources/assets/hbm/textures/blocks/wand_logic.png
Normal file
|
After Width: | Height: | Size: 730 B |
BIN
src/main/resources/assets/hbm/textures/blocks/wand_logic_top.png
Normal file
|
After Width: | Height: | Size: 743 B |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
BIN
src/main/resources/assets/hbm/textures/items/blueprints.png
Normal file
|
After Width: | Height: | Size: 379 B |
|
After Width: | Height: | Size: 397 B |
|
After Width: | Height: | Size: 313 B |
|
Before Width: | Height: | Size: 448 B |
|
Before Width: | Height: | Size: 478 B |
|
Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 221 B |
|
Before Width: | Height: | Size: 426 B |
|
Before Width: | Height: | Size: 457 B After Width: | Height: | Size: 398 B |
|
Before Width: | Height: | Size: 563 B |
|
Before Width: | Height: | Size: 491 B |
|
Before Width: | Height: | Size: 415 B |
|
Before Width: | Height: | Size: 451 B |
|
Before Width: | Height: | Size: 454 B |
|
Before Width: | Height: | Size: 435 B |
|
Before Width: | Height: | Size: 472 B |
|
Before Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 515 B After Width: | Height: | Size: 385 B |
|
Before Width: | Height: | Size: 460 B |
|
Before Width: | Height: | Size: 431 B |
|
Before Width: | Height: | Size: 424 B After Width: | Height: | Size: 354 B |
|
Before Width: | Height: | Size: 444 B |
|
Before Width: | Height: | Size: 450 B |
|
Before Width: | Height: | Size: 453 B |