mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge branch 'master' into NEI-schenanigans
This commit is contained in:
commit
4951975d99
62
changelog
62
changelog
@ -1,42 +1,26 @@
|
||||
## Added
|
||||
* Arc furnace
|
||||
* A large version of the arc furnace that can do several types of recipe
|
||||
* Solid mode smelts items like a furnace, however to work the recipe needs an ingredient or result that is oredicted as either an ore, block, ingot or plate
|
||||
* Liquid mode smelts items like a crucible would, effectively liquiefying metals. Non-castable materials are voided
|
||||
* Both modes have arc furnace exclusive recipes (smelting sand/quartz/fiberglass into silicon)
|
||||
* Can be upgraded only with regular speed upgrades
|
||||
* Soldering station
|
||||
* Works similar to arc welders
|
||||
* Used to assemble circuits from parts
|
||||
* New circuits
|
||||
* The old circuits will be phased out, the items remain but can be recycled
|
||||
* Circuits use an entirely new approach for crafting, instead of upgrading tiers constantly, all circuits are made from common parts
|
||||
* Circuits can be automated entirely with only autocrafters, presses and the soldering station, no assembler or chemplant required
|
||||
* Legacy circuits can be recycled in any anvil, yielding the roughly equivalent new circuit
|
||||
|
||||
## Changed
|
||||
* Updated russian and italian localization
|
||||
* Nerfed conventional explosives (dynamite, TNT, semtex, C4) in order to not outclass small nukes
|
||||
* Plastic explosive blocks no longer drop and blocks
|
||||
* Sellafite diamond ore now shreds into diamond gravel
|
||||
* ICF vessel blocks now use half as much fullerite as before
|
||||
* ICF capacitor and turbocharger blocks are now quite a bit cheaper
|
||||
* MEP is no longer self-igniting
|
||||
* The foundry storage basin now holds 4 blocks worth of material instead of 1
|
||||
* The small arc furnace is being retired and is no longer craftable. However, it will still function, and it can use any type of electrode without depleting it
|
||||
* Wires now use the autogen system and are oredicted with the "wireFine" prefix (equivalent to GT fine wires, 1/8 of an ingot)
|
||||
* Removed the assembler recipes for wires
|
||||
* Increased the maximum durability for all stamps
|
||||
* All upgrades now use the soldering station for their recipes, except for overdrive
|
||||
* Overdrive upgrade recipes have been rebalanced
|
||||
* Updated boxducts
|
||||
* All boxducts are now way cleaner, only having bolts on intersections, with straight parts only having very light seams
|
||||
* Intersections now have unique textures for each size
|
||||
* Copper boxducts now have a much nicer color gradient
|
||||
* Exhaust pipes now have a more rusted appearance
|
||||
* Added an alternate recipe for blank upgrades using integrated circuits and polymer instead of analog circuits
|
||||
* Update the soyuz and orbital module recipes
|
||||
* Simplified the recipes, fewer microcrafting parts
|
||||
* Both now use low-density elements which are made from aluminium/titanium, fiberglass and hard plastic
|
||||
* Both now make use of more advanced electronics, although in smaller numbers
|
||||
* Removed the recipes for the satellite deco blocks, those will be phased out soon. Existing deco blocks can still be crafted back into functional satellites
|
||||
* Moved the satellite recipes to the welder, the attachment is now welded onto the common satellite body
|
||||
* Simplified the satellite recipes, adjusted cost based on utility (depth scanner, death ray and resonator are more expensive than the mapper/radar)
|
||||
* CTRL + ALT view now shows the item's internal name and domain
|
||||
* Adjusted Mekanism compat
|
||||
* Decreased crafting complexity and time for the digiminer assembler recipe
|
||||
* Replaced recipes for the wind turbine and atomic disassembler
|
||||
* Added a config option for toggling Mekanism compat
|
||||
* Added recipe caching to the combinator funnel, meaning it no longer has to iterate over the entire recipe list all the time for compression/automation, this should improve performance by a fair bit
|
||||
* Diodes now use silicon nuggets instead of nether quartz
|
||||
* Aluminium wire's coloring is now consistent with the ingot
|
||||
|
||||
## Fixed
|
||||
* Fixed missing localization for meteorite ores and the new crucible materials
|
||||
* Removed the starmetal crystallization recipe, despite starmetal ore no longer existing
|
||||
* Fixed the ICF structure block detection being incorrect, omitting some parts
|
||||
* Fixed armor mods adding health showing only half as much as they actually do
|
||||
* Fixed RBMK fuel xenon burn function being described wrong
|
||||
* When converting ComparableStacks to ItemStacks, there is now a check that replaces null items with the nothing placeholder, fixing crashes caused by incorrect recipe configuration
|
||||
* Fixed item icon lighting in the anvil's search field
|
||||
* Fixed custom machine NEI handlers (again)
|
||||
* Fixed FEL making sounds when turned on but not actually active
|
||||
* Fixed crash caused by PRISM updating unloaded worlds
|
||||
* Hopefully fixed another crash caused by PRISM (reproduction was unreliable and sporadic, not confirmed)
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4977
|
||||
mod_build_number=5000
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -19,8 +19,8 @@ import net.minecraft.world.World;
|
||||
public class Nodespace {
|
||||
|
||||
/** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */
|
||||
public static HashMap<World, NodeWorld> worlds = new HashMap();
|
||||
public static Set<PowerNetMK2> activePowerNets = new HashSet();
|
||||
public static HashMap<World, NodeWorld> worlds = new HashMap<>();
|
||||
public static Set<PowerNetMK2> activePowerNets = new HashSet<>();
|
||||
|
||||
public static PowerNode getNode(World world, int x, int y, int z) {
|
||||
NodeWorld nodeWorld = worlds.get(world);
|
||||
@ -49,6 +49,9 @@ public class Nodespace {
|
||||
|
||||
for(World world : MinecraftServer.getServer().worldServers) {
|
||||
NodeWorld nodes = worlds.get(world);
|
||||
|
||||
if(nodes == null)
|
||||
continue;
|
||||
|
||||
for(Entry<BlockPos, PowerNode> entry : nodes.nodes.entrySet()) {
|
||||
PowerNode node = entry.getValue();
|
||||
@ -120,7 +123,7 @@ public class Nodespace {
|
||||
|
||||
/** Contains a map showing where each node is, a node is every spot that a cable exists at.
|
||||
* Instead of the old proxy system, things like substation now create multiple nodes at their connection points */
|
||||
public static HashMap<BlockPos, PowerNode> nodes = new HashMap();
|
||||
public HashMap<BlockPos, PowerNode> nodes = new HashMap<>();
|
||||
|
||||
/** Adds a node at all its positions to the nodespace */
|
||||
public void pushNode(PowerNode node) {
|
||||
|
||||
@ -61,11 +61,6 @@ public class ModBlocks {
|
||||
public static Block ore_schrabidium;
|
||||
public static Block ore_beryllium;
|
||||
public static Block ore_australium;
|
||||
public static Block ore_weidanium;
|
||||
public static Block ore_reiium;
|
||||
public static Block ore_unobtainium;
|
||||
public static Block ore_daffergon;
|
||||
public static Block ore_verticium;
|
||||
public static Block ore_rare;
|
||||
public static Block ore_cobalt;
|
||||
public static Block ore_cinnebar;
|
||||
@ -360,6 +355,7 @@ public class ModBlocks {
|
||||
public static Block brick_compound_stairs;
|
||||
public static Block brick_asbestos_stairs;
|
||||
public static Block brick_fire_stairs;
|
||||
public static Block asphalt_stairs;
|
||||
|
||||
public static Block cmb_brick;
|
||||
public static Block cmb_brick_reinforced;
|
||||
@ -453,8 +449,6 @@ public class ModBlocks {
|
||||
public static Block sand_uranium;
|
||||
public static Block sand_polonium;
|
||||
public static Block sand_quartz;
|
||||
public static Block sand_gold;
|
||||
public static Block sand_gold198;
|
||||
public static Block ash_digamma;
|
||||
public static Block glass_boron;
|
||||
public static Block glass_lead;
|
||||
@ -984,6 +978,7 @@ public class ModBlocks {
|
||||
public static Block machine_electrolyser;
|
||||
|
||||
public static Block machine_excavator;
|
||||
public static Block machine_ore_slopper;
|
||||
public static Block machine_autosaw;
|
||||
|
||||
public static Block machine_mining_laser;
|
||||
@ -1328,11 +1323,6 @@ public class ModBlocks {
|
||||
basalt_tiles = new BlockGeneric(Material.rock).setBlockName("basalt_tiles").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt_tiles");
|
||||
|
||||
ore_australium = new BlockGeneric(Material.rock).setBlockName("ore_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_australium");
|
||||
ore_weidanium = new BlockGeneric(Material.rock).setBlockName("ore_weidanium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_weidanium");
|
||||
ore_reiium = new BlockGeneric(Material.rock).setBlockName("ore_reiium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_reiium");
|
||||
ore_unobtainium = new BlockGeneric(Material.rock).setBlockName("ore_unobtainium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_unobtainium");
|
||||
ore_daffergon = new BlockGeneric(Material.rock).setBlockName("ore_daffergon").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_daffergon");
|
||||
ore_verticium = new BlockGeneric(Material.rock).setBlockName("ore_verticium").setCreativeTab(null).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_verticium");
|
||||
ore_rare = new BlockOre(Material.rock).setBlockName("ore_rare").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_rare");
|
||||
ore_cobalt = new BlockOre(Material.rock).setBlockName("ore_cobalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cobalt");
|
||||
ore_cinnebar = new BlockOre(Material.rock).setBlockName("ore_cinnebar").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":ore_cinnebar");
|
||||
@ -1529,8 +1519,8 @@ public class ModBlocks {
|
||||
brick_ducrete = new BlockGeneric(Material.rock).setBlockName("brick_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(750.0F).setBlockTextureName(RefStrings.MODID + ":brick_ducrete");
|
||||
reinforced_ducrete = new BlockGeneric(Material.rock).setBlockName("reinforced_ducrete").setCreativeTab(MainRegistry.blockTab).setHardness(20.0F).setResistance(1000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_ducrete");
|
||||
|
||||
concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_slab = new BlockMultiSlab(null, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_double_slab = new BlockMultiSlab(concrete_slab, Material.rock, concrete_smooth, concrete, concrete_asbestos, ducrete_smooth, ducrete, asphalt).setBlockName("concrete_double_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_brick_slab = new BlockMultiSlab(null, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
concrete_brick_double_slab = new BlockMultiSlab(concrete_brick_slab, Material.rock, brick_concrete, brick_concrete_mossy, brick_concrete_cracked, brick_concrete_broken, brick_ducrete).setBlockName("concrete_brick_double_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
brick_slab = new BlockMultiSlab(null, Material.rock, reinforced_stone, reinforced_brick, brick_obsidian, brick_light, brick_compound, brick_asbestos, brick_fire).setBlockName("brick_slab").setCreativeTab(MainRegistry.blockTab);
|
||||
@ -1553,9 +1543,10 @@ public class ModBlocks {
|
||||
brick_compound_stairs = new BlockGenericStairs(brick_compound, 0).setBlockName("brick_compound_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
brick_asbestos_stairs = new BlockGenericStairs(brick_asbestos, 0).setBlockName("brick_asbestos_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
brick_fire_stairs = new BlockGenericStairs(brick_fire, 0).setBlockName("brick_fire_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
|
||||
asphalt_stairs = new BlockSpeedyStairs(asphalt, 0, 1.5).setBlockName("asphalt_stairs").setCreativeTab(MainRegistry.blockTab);
|
||||
|
||||
vinyl_tile = new BlockEnumMulti(Material.rock, TileType.class, true, true).setBlockName("vinyl_tile").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":vinyl_tile");
|
||||
|
||||
|
||||
tile_lab = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab");
|
||||
tile_lab_cracked = new BlockOutgas(Material.rock, false, 5, true).setBlockName("tile_lab_cracked").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_cracked");
|
||||
tile_lab_broken = new BlockOutgas(Material.rock, true, 5, true).setBlockName("tile_lab_broken").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(1.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":tile_lab_broken");
|
||||
@ -1642,8 +1633,6 @@ public class ModBlocks {
|
||||
sand_uranium = new BlockFalling(Material.sand).setBlockName("sand_uranium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_uranium");
|
||||
sand_polonium = new BlockFalling(Material.sand).setBlockName("sand_polonium").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_polonium");
|
||||
sand_quartz = new BlockFalling(Material.sand).setBlockName("sand_quartz").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_quartz");
|
||||
sand_gold = new BlockGoldSand(Material.sand).setBlockName("sand_gold").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_gold");
|
||||
sand_gold198 = new BlockGoldSand(Material.sand).setBlockName("sand_gold198").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.machineTab).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":sand_gold");
|
||||
glass_boron = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_boron", Material.glass).setBlockName("glass_boron").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F);
|
||||
glass_lead = new BlockNTMGlassCT(0, RefStrings.MODID + ":glass_lead", Material.glass).setBlockName("glass_lead").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F);
|
||||
glass_uranium = new BlockNTMGlassCT(1, RefStrings.MODID + ":glass_uranium", Material.glass).setBlockName("glass_uranium").setLightLevel(5F/15F).setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.machineTab).setHardness(0.3F);
|
||||
@ -2196,6 +2185,7 @@ public class ModBlocks {
|
||||
machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_ore_slopper = new MachineOreSlopper().setBlockName("machine_ore_slopper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_mining_laser = new MachineMiningLaser(Material.iron).setBlockName("machine_mining_laser").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_mining_laser");
|
||||
barricade = new BlockNoDrop(Material.sand).setBlockName("barricade").setHardness(1.0F).setResistance(2.5F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":barricade");
|
||||
machine_assembler = new MachineAssembler(Material.iron).setBlockName("machine_assembler").setHardness(5.0F).setResistance(30.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_assembler");
|
||||
@ -2396,11 +2386,6 @@ public class ModBlocks {
|
||||
|
||||
//Rare Minerals
|
||||
GameRegistry.registerBlock(ore_australium, ItemOreBlock.class, ore_australium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_weidanium, ItemOreBlock.class, ore_weidanium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_reiium, ItemOreBlock.class, ore_reiium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_unobtainium, ItemOreBlock.class, ore_unobtainium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_daffergon, ItemOreBlock.class, ore_daffergon.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_verticium, ItemOreBlock.class, ore_verticium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_rare, ItemOreBlock.class, ore_rare.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_cobalt, ore_cobalt.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ore_cinnebar, ore_cinnebar.getUnlocalizedName());
|
||||
@ -2707,6 +2692,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(brick_asbestos_stairs, brick_asbestos_stairs.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(brick_fire_stairs, brick_fire_stairs.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(ducrete_stairs, ducrete_stairs.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(asphalt_stairs, asphalt_stairs.getUnlocalizedName());
|
||||
|
||||
//CMB Building Elements
|
||||
GameRegistry.registerBlock(cmb_brick, ItemBlockBlastInfo.class, cmb_brick.getUnlocalizedName());
|
||||
@ -2931,7 +2917,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(hev_battery, hev_battery.getUnlocalizedName());
|
||||
|
||||
//Chainlink Fence
|
||||
GameRegistry.registerBlock(fence_metal, fence_metal.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(fence_metal, ItemBlockBase.class, fence_metal.getUnlocalizedName());
|
||||
|
||||
//Sands, Glass
|
||||
GameRegistry.registerBlock(ash_digamma, ash_digamma.getUnlocalizedName());
|
||||
@ -2940,8 +2926,6 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(sand_uranium, sand_uranium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(sand_polonium, sand_polonium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(sand_quartz, sand_quartz.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(sand_gold, sand_gold.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(sand_gold198, sand_gold198.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(glass_boron, glass_boron.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(glass_lead, glass_lead.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(glass_uranium, glass_uranium.getUnlocalizedName());
|
||||
@ -3276,6 +3260,7 @@ public class ModBlocks {
|
||||
register(machine_coker);
|
||||
register(machine_autosaw);
|
||||
register(machine_excavator);
|
||||
register(machine_ore_slopper);
|
||||
register(machine_mining_laser);
|
||||
register(barricade);
|
||||
register(machine_turbofan);
|
||||
|
||||
@ -18,7 +18,7 @@ import com.hbm.tileentity.bomb.TileEntityCharge;
|
||||
|
||||
import api.hbm.block.IFuckingExplode;
|
||||
import api.hbm.block.IToolable;
|
||||
import codechicken.lib.math.MathHelper;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
@ -2,7 +2,7 @@ package com.hbm.blocks.bomb;
|
||||
|
||||
import com.hbm.entity.item.EntityTNTPrimedBase;
|
||||
|
||||
import codechicken.lib.math.MathHelper;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
||||
@ -10,7 +10,7 @@ import com.hbm.explosion.ExplosionNT.ExAttrib;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
|
||||
import api.hbm.block.IFuckingExplode;
|
||||
import codechicken.lib.math.MathHelper;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.item.Item;
|
||||
|
||||
@ -10,7 +10,7 @@ import com.hbm.explosion.ExplosionNT;
|
||||
import com.hbm.interfaces.IBomb;
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import codechicken.lib.math.MathHelper;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
@ -30,6 +30,8 @@ public class BlockConcreteColoredExt extends BlockEnumMulti {
|
||||
INDIGO,
|
||||
PURPLE,
|
||||
PINK,
|
||||
HAZARD
|
||||
HAZARD,
|
||||
SAND,
|
||||
BRONZE
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,31 +0,0 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
import com.hbm.extprop.HbmLivingProps.ContaminationEffect;
|
||||
|
||||
import net.minecraft.block.BlockFalling;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockGoldSand extends BlockFalling {
|
||||
|
||||
public BlockGoldSand(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityWalking(World world, int x, int y, int z, Entity entity) {
|
||||
|
||||
if(entity instanceof EntityLivingBase) {
|
||||
entity.attackEntityFrom(DamageSource.inFire, 2F);
|
||||
|
||||
if(this == ModBlocks.sand_gold198) {
|
||||
HbmLivingProps.addCont((EntityLivingBase)entity, new ContaminationEffect(5F, 300, false));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -14,6 +14,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.item.EntityXPOrb;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -31,8 +32,6 @@ public class BlockGrate extends Block implements ITooltipProvider {
|
||||
|
||||
public BlockGrate(Material material) {
|
||||
super(material);
|
||||
|
||||
//this.maxY = 0.999D;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -65,16 +64,23 @@ public class BlockGrate extends Block implements ITooltipProvider {
|
||||
return false;
|
||||
}
|
||||
|
||||
public float getY(int meta) {
|
||||
if(meta == 9) return -0.125F;
|
||||
return meta * 0.125F;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
this.setBlockBounds(0F, meta * 0.125F, 0F, 1F, meta * 0.125F + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F);
|
||||
float fy = getY(meta);
|
||||
this.setBlockBounds(0F, fy, 0F, 1F, fy + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
this.setBlockBounds(0F, meta * 0.125F, 0F, 1F, meta * 0.125F + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F);
|
||||
float fy = getY(meta);
|
||||
this.setBlockBounds(0F, fy, 0F, 1F, fy + 0.125F - (this == ModBlocks.steel_grate_wide ? 0.001F : 0), 1F);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@ -96,6 +102,50 @@ public class BlockGrate extends Block implements ITooltipProvider {
|
||||
return (int)Math.floor(hY * 8D);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
|
||||
if(player.isSneaking()) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
if(meta == 0) {
|
||||
// Check that the block below can fit a grate above it
|
||||
Block block = world.getBlock(x, y - 1, z);
|
||||
AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y - 1, z);
|
||||
if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.maxY - (double)y < -0.05)) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 9, 3);
|
||||
}
|
||||
} else if(meta == 7) {
|
||||
Block block = world.getBlock(x, y + 1, z);
|
||||
AxisAlignedBB otherBB = block.getCollisionBoundingBoxFromPool(world, x, y + 1, z);
|
||||
if(!block.isAir(world, x, y + 1, z) && (otherBB == null || otherBB.minY - (double)(y + 1) > 0.05)) {
|
||||
world.setBlockMetadataWithNotify(x, y, z, 8, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock) {
|
||||
if(world.isRemote) return;
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
boolean breakIt = false;
|
||||
|
||||
if(meta == 9) {
|
||||
AxisAlignedBB otherBB = world.getBlock(x, y - 1, z).getCollisionBoundingBoxFromPool(world, x, y - 1, z);
|
||||
breakIt = !(otherBB == null || otherBB.maxY - (double)y < -0.05);
|
||||
} else if(meta == 8) {
|
||||
AxisAlignedBB otherBB = world.getBlock(x, y + 1, z).getCollisionBoundingBoxFromPool(world, x, y + 1, z);
|
||||
breakIt = !(otherBB == null || otherBB.minY - (double)(y + 1) > 0.05);
|
||||
}
|
||||
|
||||
if(breakIt) {
|
||||
dropBlockAsItem(world, x, y, z, 0, 0);
|
||||
world.setBlockToAir(x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) {
|
||||
if(this != ModBlocks.steel_grate_wide || !(entity instanceof EntityItem || entity instanceof EntityXPOrb)) {
|
||||
|
||||
@ -2,112 +2,139 @@ package com.hbm.blocks.generic;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.IBlockMulti;
|
||||
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.BlockFence;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockMetalFence extends BlockFence {
|
||||
|
||||
public BlockMetalFence(Material p_i45406_2_) {
|
||||
super("", p_i45406_2_);
|
||||
public class BlockMetalFence extends BlockFence implements IBlockMulti {
|
||||
|
||||
public IIcon postIcon;
|
||||
|
||||
public BlockMetalFence(Material mat) {
|
||||
super("", mat);
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override
|
||||
public int getRenderType(){
|
||||
public int getRenderType() {
|
||||
return renderID;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister p_149651_1_)
|
||||
{
|
||||
this.blockIcon = p_149651_1_.registerIcon(this.getTextureName());
|
||||
}
|
||||
|
||||
public void addCollisionBoxesToList(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_)
|
||||
{
|
||||
boolean flag = this.canConnectFenceTo(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_ - 1);
|
||||
boolean flag1 = this.canConnectFenceTo(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_ + 1);
|
||||
boolean flag2 = this.canConnectFenceTo(p_149743_1_, p_149743_2_ - 1, p_149743_3_, p_149743_4_);
|
||||
boolean flag3 = this.canConnectFenceTo(p_149743_1_, p_149743_2_ + 1, p_149743_3_, p_149743_4_);
|
||||
float f = 0.375F;
|
||||
float f1 = 0.625F;
|
||||
float f2 = 0.375F;
|
||||
float f3 = 0.625F;
|
||||
@Override
|
||||
public int damageDropped(int meta) {
|
||||
return rectify(meta);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
return meta == 0 ? this.blockIcon : this.postIcon;
|
||||
}
|
||||
|
||||
if (flag)
|
||||
{
|
||||
f2 = 0.0F;
|
||||
}
|
||||
public String getUnlocalizedName(ItemStack stack) {
|
||||
return stack.getItemDamage() == 1 ? getUnlocalizedName() + "_post" : getUnlocalizedName();
|
||||
}
|
||||
|
||||
if (flag1)
|
||||
{
|
||||
f3 = 1.0F;
|
||||
}
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
this.blockIcon = iconRegister.registerIcon(this.getTextureName());
|
||||
this.postIcon = iconRegister.registerIcon(this.getTextureName() + "_post");
|
||||
}
|
||||
|
||||
if (flag || flag1)
|
||||
{
|
||||
this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3);
|
||||
addCol(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_, p_149743_5_, p_149743_6_, p_149743_7_);
|
||||
}
|
||||
@Override
|
||||
public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) {
|
||||
boolean flag = this.canConnectFenceTo(world, x, y, z - 1);
|
||||
boolean flag1 = this.canConnectFenceTo(world, x, y, z + 1);
|
||||
boolean flag2 = this.canConnectFenceTo(world, x - 1, y, z);
|
||||
boolean flag3 = this.canConnectFenceTo(world, x + 1, y, z);
|
||||
float f = 0.375F;
|
||||
float f1 = 0.625F;
|
||||
float f2 = 0.375F;
|
||||
float f3 = 0.625F;
|
||||
|
||||
f2 = 0.375F;
|
||||
f3 = 0.625F;
|
||||
if(flag) {
|
||||
f2 = 0.0F;
|
||||
}
|
||||
|
||||
if (flag2)
|
||||
{
|
||||
f = 0.0F;
|
||||
}
|
||||
if(flag1) {
|
||||
f3 = 1.0F;
|
||||
}
|
||||
|
||||
if (flag3)
|
||||
{
|
||||
f1 = 1.0F;
|
||||
}
|
||||
if(flag || flag1) {
|
||||
this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3);
|
||||
addCol(world, x, y, z, aabb, list, entity);
|
||||
}
|
||||
|
||||
if (flag2 || flag3 || !flag && !flag1)
|
||||
{
|
||||
this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3);
|
||||
addCol(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_, p_149743_5_, p_149743_6_, p_149743_7_);
|
||||
}
|
||||
f2 = 0.375F;
|
||||
f3 = 0.625F;
|
||||
|
||||
if (flag)
|
||||
{
|
||||
f2 = 0.0F;
|
||||
}
|
||||
if(flag2) {
|
||||
f = 0.0F;
|
||||
}
|
||||
|
||||
if (flag1)
|
||||
{
|
||||
f3 = 1.0F;
|
||||
}
|
||||
if(flag3) {
|
||||
f1 = 1.0F;
|
||||
}
|
||||
|
||||
this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3);
|
||||
}
|
||||
|
||||
public void addCol(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_)
|
||||
{
|
||||
AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_);
|
||||
if(flag2 || flag3 || !flag && !flag1) {
|
||||
this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3);
|
||||
addCol(world, x, y, z, aabb, list, entity);
|
||||
}
|
||||
|
||||
if (axisalignedbb1 != null && p_149743_5_.intersectsWith(axisalignedbb1))
|
||||
{
|
||||
p_149743_6_.add(axisalignedbb1);
|
||||
}
|
||||
}
|
||||
if(flag) {
|
||||
f2 = 0.0F;
|
||||
}
|
||||
|
||||
if(flag1) {
|
||||
f3 = 1.0F;
|
||||
}
|
||||
|
||||
this.setBlockBounds(f, 0.0F, f2, f1, 1.0F, f3);
|
||||
}
|
||||
|
||||
private void addCol(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) {
|
||||
AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(world, x, y, z);
|
||||
|
||||
if(axisalignedbb1 != null && aabb.intersectsWith(axisalignedbb1)) {
|
||||
list.add(axisalignedbb1);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
|
||||
for(int i = 0; i < getSubCount(); ++i) {
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSubCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.IStepTickReceiver;
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@ -13,12 +14,13 @@ import net.minecraft.block.BlockSlab;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockMultiSlab extends BlockSlab {
|
||||
public class BlockMultiSlab extends BlockSlab implements IStepTickReceiver {
|
||||
|
||||
public static List<Object[]> recipeGen = new ArrayList();
|
||||
|
||||
@ -100,4 +102,18 @@ public class BlockMultiSlab extends BlockSlab {
|
||||
Block block = slabMaterials[meta];
|
||||
return block.getBlockHardness(world, x, y, z); //relies on block not assuming that they are at that position
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
meta = (meta & 7) % slabMaterials.length;
|
||||
Block block = slabMaterials[meta];
|
||||
if(!world.isRemote || !(block instanceof BlockSpeedy))
|
||||
return;
|
||||
|
||||
if(player.moveForward != 0 || player.moveStrafing != 0) {
|
||||
player.motionX *= 1.5;
|
||||
player.motionZ *= 1.5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
39
src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java
Normal file
39
src/main/java/com/hbm/blocks/generic/BlockSpeedyStairs.java
Normal file
@ -0,0 +1,39 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import com.hbm.blocks.IStepTickReceiver;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class BlockSpeedyStairs extends BlockGenericStairs implements IStepTickReceiver, ITooltipProvider {
|
||||
|
||||
double speed;
|
||||
|
||||
public BlockSpeedyStairs(Block block, int meta, double speed) {
|
||||
super(block, meta);
|
||||
this.speed = speed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlayerStep(World world, int x, int y, int z, EntityPlayer player) {
|
||||
|
||||
if(!world.isRemote)
|
||||
return;
|
||||
|
||||
if(player.moveForward != 0 || player.moveStrafing != 0) {
|
||||
player.motionX *= speed;
|
||||
player.motionZ *= speed;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.BLUE + "Increases speed by " + (MathHelper.floor_double((speed - 1) * 100)) + "%");
|
||||
}
|
||||
}
|
||||
@ -9,7 +9,7 @@ import com.hbm.entity.item.EntityTNTPrimedBase;
|
||||
import com.hbm.explosion.ExplosionNukeGeneric;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
|
||||
import codechicken.lib.math.MathHelper;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
|
||||
@ -67,6 +67,12 @@ public class FoundryBasin extends FoundryCastingBase {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.999F, 1.0F); //for some fucking reason setting maxY to something that isn't 1 magically fixes item collisions
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -82,6 +82,12 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -66,6 +66,11 @@ public class FoundryMold extends FoundryCastingBase {
|
||||
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1D, y + 0.5D, z + 1D);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -96,6 +96,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor,
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -10,7 +10,9 @@ import com.hbm.blocks.IPersistentInfoProvider;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.packet.BufPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.IBufPacketReceiver;
|
||||
import com.hbm.tileentity.IPersistentNBT;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
@ -20,8 +22,10 @@ import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
import api.hbm.energymk2.IEnergyProviderMK2;
|
||||
import api.hbm.energymk2.IEnergyReceiverMK2;
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
@ -146,7 +150,7 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP
|
||||
player.addExhaustion(0.025F);
|
||||
}
|
||||
|
||||
public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, INBTPacketReceiver, IPersistentNBT {
|
||||
public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyProviderMK2, IEnergyReceiverMK2, IBufPacketReceiver, IPersistentNBT {
|
||||
|
||||
public long power;
|
||||
protected long maxPower;
|
||||
@ -190,20 +194,31 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP
|
||||
this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), last);
|
||||
}
|
||||
|
||||
this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setLong("maxPower", maxPower);
|
||||
data.setLong("rec", powerReceived);
|
||||
data.setLong("sent", powerSent);
|
||||
INBTPacketReceiver.networkPack(this, data, 15);
|
||||
this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord + opp.offsetY, zCoord + opp.offsetZ, opp);
|
||||
|
||||
PacketDispatcher.wrapper.sendToAllAround(new BufPacket(xCoord, yCoord, zCoord, this), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 15));
|
||||
|
||||
this.powerSent = 0;
|
||||
this.powerReceived = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
buf.writeLong(power);
|
||||
buf.writeLong(maxPower);
|
||||
buf.writeLong(powerReceived);
|
||||
buf.writeLong(powerSent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
power = buf.readLong();
|
||||
maxPower = buf.readLong();
|
||||
powerReceived = buf.readLong();
|
||||
powerSent = buf.readLong();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long transferPower(long power) {
|
||||
if(power + this.getPower() <= this.getMaxPower()) {
|
||||
@ -224,14 +239,6 @@ public class MachineCapacitor extends BlockContainer implements ILookOverlay, IP
|
||||
this.setPower(this.getPower() - power);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
this.power = nbt.getLong("power");
|
||||
this.maxPower = nbt.getLong("maxPower");
|
||||
this.powerReceived = nbt.getLong("rec");
|
||||
this.powerSent = nbt.getLong("sent");
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPower() {
|
||||
return power;
|
||||
|
||||
@ -3,7 +3,6 @@ package com.hbm.blocks.machine;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.TileEntityProxyInventory;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineCrystallizer;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
@ -27,34 +26,23 @@ public class MachineCrystallizer extends BlockDummyable {
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
|
||||
if(meta >= 12)
|
||||
return new TileEntityMachineCrystallizer();
|
||||
|
||||
if(meta >= 8 && meta <= 11)
|
||||
return new TileEntityProxyInventory();
|
||||
|
||||
if(meta == 7)
|
||||
return new TileEntityProxyCombo(false, true, true);
|
||||
|
||||
if(meta >= 12) return new TileEntityMachineCrystallizer();
|
||||
if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
if(world.isRemote)
|
||||
{
|
||||
if(world.isRemote) {
|
||||
return true;
|
||||
} else if(!player.isSneaking())
|
||||
{
|
||||
} else if(!player.isSneaking()) {
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
|
||||
|
||||
if(pos == null)
|
||||
return false;
|
||||
|
||||
|
||||
TileEntityMachineCrystallizer entity = (TileEntityMachineCrystallizer) world.getTileEntity(pos[0], pos[1], pos[2]);
|
||||
if(entity != null)
|
||||
{
|
||||
if(entity != null) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]);
|
||||
}
|
||||
return true;
|
||||
@ -65,7 +53,7 @@ public class MachineCrystallizer extends BlockDummyable {
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] { 6, 0, 1, 1, 1, 1 };
|
||||
return new int[] { 5, 0, 1, 1, 1, 1 };
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -76,20 +64,10 @@ public class MachineCrystallizer extends BlockDummyable {
|
||||
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
super.fillSpace(world, x, y, z, dir, o);
|
||||
|
||||
this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o);
|
||||
this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o);
|
||||
this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1);
|
||||
this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1);
|
||||
|
||||
if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) {
|
||||
this.makeExtra(world, x + dir.offsetX * o + 1, y + 5, z + dir.offsetZ * o);
|
||||
this.makeExtra(world, x + dir.offsetX * o - 1, y + 5, z + dir.offsetZ * o);
|
||||
}
|
||||
|
||||
if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) {
|
||||
this.makeExtra(world, x + dir.offsetX * o, y + 5, z + dir.offsetZ * o + 1);
|
||||
this.makeExtra(world, x + dir.offsetX * o, y + 5, z + dir.offsetZ * o - 1);
|
||||
}
|
||||
this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o + 1);
|
||||
this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o + 1);
|
||||
this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o - 1);
|
||||
this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o - 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
37
src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java
Normal file
37
src/main/java/com/hbm/blocks/machine/MachineOreSlopper.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class MachineOreSlopper extends BlockDummyable {
|
||||
|
||||
public MachineOreSlopper() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= 12) return new TileEntityMachineOreSlopper();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {3, 0, 3, 3, 1, 1};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
return standardOpenBehavior(world, x, y, z, player, side);
|
||||
}
|
||||
}
|
||||
@ -94,7 +94,7 @@ public class Watz extends BlockDummyable {
|
||||
if(i >= 12 && drop) {
|
||||
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48)));
|
||||
for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt)));
|
||||
for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, Mats.MAT_DURA.make(ModItems.bolt, 64)));
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36)));
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26)));
|
||||
world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1)));
|
||||
|
||||
@ -6,6 +6,7 @@ import java.util.List;
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.block.RenderBlockMultipass;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
@ -14,8 +15,13 @@ import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import api.hbm.energymk2.PowerNetMK2;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Callback;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.SimpleComponent;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.BlockPistonBase;
|
||||
import net.minecraft.block.material.Material;
|
||||
@ -98,7 +104,8 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
||||
return IBlockMultiPass.getRenderType();
|
||||
}
|
||||
|
||||
public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public static class TileEntityCableGauge extends TileEntityCableBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
private long deltaTick = 0;
|
||||
private long deltaSecond = 0;
|
||||
@ -134,5 +141,22 @@ public class BlockCableGauge extends BlockContainer implements IBlockMultiPass,
|
||||
this.deltaTick = Math.max(nbt.getLong("deltaT"), 0);
|
||||
this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_power_gauge";
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTransfer(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond};
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond, xCoord, yCoord, zCoord};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ public class CraneGrabber extends BlockCraneBase {
|
||||
this.iconDirectionalSideDownTurnRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down_turn_right");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
|
||||
this.dropContents(world, x, y, z, block, meta, 9, 11);
|
||||
super.breakBlock(world, x, y, z, block, meta);
|
||||
|
||||
@ -35,7 +35,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconCurveTR;
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconCurveBL;
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconCurveBR;
|
||||
@SideOnly(Side.CLIENT) public IIcon[] iconJunction;
|
||||
@SideOnly(Side.CLIENT) public IIcon[][] iconJunction;
|
||||
|
||||
private static final String[] materials = new String[] { "silver", "copper", "white" };
|
||||
|
||||
@ -55,7 +55,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
iconCurveTR = new IIcon[count];
|
||||
iconCurveBL = new IIcon[count];
|
||||
iconCurveBR = new IIcon[count];
|
||||
iconJunction = new IIcon[count];
|
||||
iconJunction = new IIcon[count][5];
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
iconStraight[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_straight");
|
||||
@ -64,7 +64,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
iconCurveTR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_tr");
|
||||
iconCurveBL[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_bl");
|
||||
iconCurveBR[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_curve_br");
|
||||
iconJunction[i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction");
|
||||
for(int j = 0; j < 5; j++) iconJunction[i][j] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_" + materials[i] + "_junction_" + j);
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +83,8 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0);
|
||||
int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0);
|
||||
|
||||
int m = rectify(world.getBlockMetadata(x, y, z));
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
int m = rectify(meta);
|
||||
|
||||
if((mask & 0b001111) == 0 && mask > 0) {
|
||||
return (side == 4 || side == 5) ? iconEnd[m] : iconStraight[m];
|
||||
@ -112,10 +113,10 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
if(nX && nZ) return side == 0 ? iconCurveTL[m] : iconCurveTL[m];
|
||||
if(nX && pZ) return side == 0 ? iconCurveBL[m] : iconCurveBL[m];
|
||||
|
||||
return iconJunction[m];
|
||||
return iconJunction[m][meta / 3];
|
||||
}
|
||||
|
||||
return iconJunction[m];
|
||||
return iconJunction[m][meta / 3];
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@ -220,6 +221,12 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -46,7 +46,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox {
|
||||
iconCurveTR = new IIcon[1];
|
||||
iconCurveBL = new IIcon[1];
|
||||
iconCurveBR = new IIcon[1];
|
||||
iconJunction = new IIcon[1];
|
||||
iconJunction = new IIcon[1][5];
|
||||
|
||||
iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight");
|
||||
iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end");
|
||||
@ -54,7 +54,7 @@ public class FluidDuctBoxExhaust extends FluidDuctBox {
|
||||
iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr");
|
||||
iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl");
|
||||
iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br");
|
||||
iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction");
|
||||
for(int i = 0; i < 5; i++) iconJunction[0][i] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction_" + i);
|
||||
}
|
||||
|
||||
public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) {
|
||||
|
||||
@ -8,6 +8,7 @@ import java.util.Locale;
|
||||
import com.hbm.blocks.IBlockMultiPass;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.handler.CompatHandler;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.block.RenderBlockMultipass;
|
||||
@ -108,7 +109,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
||||
}
|
||||
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent {
|
||||
public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver, SimpleComponent, CompatHandler.OCComponent {
|
||||
|
||||
private BigInteger lastMeasurement = BigInteger.valueOf(10);
|
||||
private long deltaTick = 0;
|
||||
|
||||
@ -183,6 +183,12 @@ public class FluidDuctStandard extends FluidDuctBase implements IBlockMulti, ILo
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
setBlockBoundsBasedOnState(world, x, y, z);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
|
||||
@ -91,7 +91,7 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||
Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ);
|
||||
|
||||
if(!b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) && !b.hasComparatorInputOverride() && (!b.renderAsNormalBlock() || b.isAir(world, x, y, z))) {
|
||||
if(!canBlockStay(world, x, y, z, dir, b)) {
|
||||
this.dropBlockAsItem(world, x, y, z, meta, 0);
|
||||
world.setBlockToAir(x, y, z);
|
||||
}
|
||||
@ -104,7 +104,11 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(side);
|
||||
Block b = world.getBlock(x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ);
|
||||
|
||||
return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z));
|
||||
return canBlockStay(world, x, y, z, dir, b);
|
||||
}
|
||||
|
||||
public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) {
|
||||
return b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || b.hasComparatorInputOverride() || b.canProvidePower() || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -8,18 +8,22 @@ import com.hbm.inventory.container.ContainerCounterTorch;
|
||||
import com.hbm.inventory.gui.GUICounterTorch;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.network.TileEntityRadioTorchCounter;
|
||||
import com.hbm.util.Compat;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RadioTorchCounter extends RadioTorchBase {
|
||||
|
||||
@ -38,6 +42,13 @@ public class RadioTorchCounter extends RadioTorchBase {
|
||||
return new TileEntityRadioTorchCounter();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBlockStay(World world, int x, int y, int z, ForgeDirection dir, Block b) {
|
||||
if(b.isSideSolid(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ, dir) || (b.renderAsNormalBlock() && !b.isAir(world, x, y, z))) return true;
|
||||
TileEntity te = Compat.getTileStandard(world, x - dir.offsetX, y - dir.offsetY, z - dir.offsetZ);
|
||||
return te instanceof IInventory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerCounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z));
|
||||
|
||||
@ -35,6 +35,7 @@ public class GeneralConfig {
|
||||
public static boolean enableGuideBook = true;
|
||||
public static boolean enableSteamParticles = true;
|
||||
public static boolean enableSoundExtension = true;
|
||||
public static boolean enableMekanismChanges = true;
|
||||
public static int hintPos = 0;
|
||||
|
||||
public static boolean enableExpensiveMode = false;
|
||||
@ -101,8 +102,9 @@ public class GeneralConfig {
|
||||
enableFluidContainerCompat = config.get(CATEGORY_GENERAL, "1.35_enableFluidContainerCompat", true, "If enabled, fluid containers will be oredicted and interchangable in recipes with other mods' containers, as well as TrainCraft's diesel being considered a valid diesel canister.").getBoolean(true);
|
||||
enableMOTD = config.get(CATEGORY_GENERAL, "1.36_enableMOTD", true, "If enabled, shows the 'Loaded mod!' chat message as well as update notifications when joining a world").getBoolean(true);
|
||||
enableGuideBook = config.get(CATEGORY_GENERAL, "1.37_enableGuideBook", true, "If enabled, gives players the guide book when joining the world for the first time").getBoolean(true);
|
||||
enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles",true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true);
|
||||
enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension",true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true);
|
||||
enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles", true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true);
|
||||
enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension", true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true);
|
||||
enableMekanismChanges = config.get(CATEGORY_GENERAL, "1.40_enableMekanismChanges", true, "If enabled, will change some of Mekanism's recipes.").getBoolean(true);
|
||||
|
||||
enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false);
|
||||
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
package com.hbm.config;
|
||||
|
||||
import com.hbm.handler.radiation.ChunkRadiationHandlerPRISM;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
|
||||
public class RadiationConfig {
|
||||
@ -14,6 +17,7 @@ public class RadiationConfig {
|
||||
|
||||
public static boolean enableContamination = true;
|
||||
public static boolean enableChunkRads = true;
|
||||
public static boolean enablePRISM = false;
|
||||
|
||||
public static boolean disableAsbestos = false;
|
||||
public static boolean disableCoal = false;
|
||||
@ -47,6 +51,8 @@ public class RadiationConfig {
|
||||
|
||||
enableContamination = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_00_enableContamination", "Toggles player contamination (and negative effects from radiation poisoning)", true);
|
||||
enableChunkRads = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_01_enableChunkRads", "Toggles the world radiation system (chunk radiation only, some blocks use an AoE!)", true);
|
||||
enablePRISM = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "RADIATION_99_enablePRISM", "Enables the new 3D resistance-aware PRISM radiation system", false);
|
||||
if(enablePRISM) ChunkRadiationManager.proxy = new ChunkRadiationHandlerPRISM();
|
||||
|
||||
fogCh = CommonConfig.setDef(fogCh, 20);
|
||||
|
||||
|
||||
@ -32,9 +32,6 @@ public class MineralRecipes {
|
||||
add1To9Pair(ModItems.dust, ModItems.dust_tiny);
|
||||
add1To9Pair(ModItems.powder_coal, ModItems.powder_coal_tiny);
|
||||
add1To9Pair(ModItems.ingot_mercury, ModItems.nugget_mercury);
|
||||
|
||||
add1To9Pair(ModBlocks.sand_gold, ModItems.powder_gold);
|
||||
add1To9Pair(ModBlocks.sand_gold198, ModItems.powder_au198);
|
||||
|
||||
add1To9Pair(ModBlocks.block_aluminium, ModItems.ingot_aluminium);
|
||||
add1To9Pair(ModBlocks.block_graphite, ModItems.ingot_graphite);
|
||||
@ -457,7 +454,7 @@ public class MineralRecipes {
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_IRON), new ItemStack(ModItems.powder_iron));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_COPPER), new ItemStack(ModItems.powder_copper));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_LITHIUM), new ItemStack(ModItems.powder_lithium));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SILICON), new ItemStack(ModItems.powder_quartz));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SILICON), new ItemStack(ModItems.nugget_silicon, 3));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_LEAD), new ItemStack(ModItems.powder_lead));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_TITANIUM), new ItemStack(ModItems.powder_titanium));
|
||||
add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_ALUMINIUM), new ItemStack(ModItems.powder_aluminium));
|
||||
|
||||
@ -4,8 +4,12 @@ import static com.hbm.inventory.OreDictManager.*;
|
||||
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.material.MaterialShapes;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemChemicalDye.EnumChemDye;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.main.CraftingManager;
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
@ -53,9 +57,11 @@ public class PowderRecipes {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_ready, 1), new Object[] { ModItems.powder_desh_mix, ModItems.ingot_mercury, ModItems.ingot_mercury, COAL.dust() });
|
||||
|
||||
//Metal powders
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_magnetized_tungsten, 1), new Object[] { W.dust(), SA326.nugget() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_tcalloy, 1), new Object[] { STEEL.dust(), TC99.nugget() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_steel, 1), new Object[] { IRON.dust(), COAL.dust() });
|
||||
CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_MINGRADE, MaterialShapes.INGOT.q(2))), new Object[] { CU.dust(), REDSTONE.dust() });
|
||||
CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_MAGTUNG, MaterialShapes.INGOT.q(1))), new Object[] { W.dust(), SA326.nugget() });
|
||||
CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_TCALLOY, MaterialShapes.INGOT.q(1))), new Object[] { STEEL.dust(), TC99.nugget() });
|
||||
CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(1))), new Object[] { IRON.dust(), COAL.dust() });
|
||||
CraftingManager.addShapelessAuto(ItemScraps.create(new MaterialStack(Mats.MAT_STEEL, MaterialShapes.INGOT.q(4))), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), IRON.dust(), COAL.dust(), COAL.dust(), COAL.dust(), COAL.dust() });
|
||||
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 1), new Object[] { new ItemStack(Items.coal, 1, 1), KEY_SAND });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 2), new Object[] { COAL.dust(), KEY_SAND });
|
||||
|
||||
@ -127,7 +127,6 @@ public class SmeltingRecipes {
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.gravel_diamond), new ItemStack(Items.diamond), 3.0F);
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_uranium), new ItemStack(ModBlocks.glass_uranium), 0.25F);
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_polonium), new ItemStack(ModBlocks.glass_polonium), 0.75F);
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_quartz), new ItemStack(ModBlocks.glass_quartz), 0.75F);
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.waste_trinitite), new ItemStack(ModBlocks.glass_trinitite), 0.25F);
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.waste_trinitite_red), new ItemStack(ModBlocks.glass_trinitite), 0.25F);
|
||||
GameRegistry.addSmelting(new ItemStack(ModBlocks.sand_boron), new ItemStack(ModBlocks.glass_boron), 0.25F);
|
||||
|
||||
@ -131,6 +131,7 @@ public class ToolRecipes {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ore_density_scanner, 1), new Object[] { "VVV", "CSC", "GGG", " S ", 'V', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_CHASSIS), 'G', GOLD.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', ANY_PLASTIC.ingot(), 'S', STEEL.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', W.bolt(), 'I', W.ingot(), 'P', ANY_RUBBER.ingot() });
|
||||
|
||||
@ -74,7 +74,6 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', STEEL.shell(), 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', STEEL.bolt() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', AL.shell(), 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', ModItems.mechanism_launcher_2 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', AL.wireFine(), 'M', ModItems.mechanism_revolver_1 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_saturnite, 1), new Object[] { "SSM", " RW", 'S', BIGMT.plate(), 'W', KEY_PLANKS, 'R', W.wireFine(), 'M', ModItems.mechanism_revolver_2 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver_gold, 1), new Object[] { "SSM", " RW", 'S', GOLD.plate(), 'W', W.ingot(), 'R', GOLD.wireFine(), 'M', ModItems.mechanism_revolver_1 });
|
||||
@ -139,7 +138,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92), new Object[] { "DDD", "SSC", " R", 'D', ModItems.plate_dineutronium, 'S', STAR.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'R', ModItems.gun_revolver_schrabidium });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()), GunB92Cell.getFullCell(), CU.wireFine() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', DURA.bolt() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() });
|
||||
@ -286,7 +285,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 7), new Object[] { "DSD", "SCS", "DSD", 'D', P_WHITE.ingot(), 'S', new ItemStack(ModItems.ammo_arty, 1, 5), 'C', ModBlocks.det_cord });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 3), new Object[] { " P ", "NSN", " P ", 'P', PU239.nugget(), 'N', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 0) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 6), new Object[] { "DSD", "SCS", "DSD", 'D', OreDictManager.getReflector(), 'S', new ItemStack(ModItems.ammo_arty, 1, 3), 'C', ModBlocks.det_cord });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), ModItems.ducttape });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.ammo_arty, 1, 4), new Object[] { new ItemStack(ModItems.ammo_arty, 1, 2), ModItems.boy_bullet, ModItems.boy_target, ModItems.boy_shielding, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), ModItems.ducttape });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_arty, 1, 8), new Object[] { " I ", " S ", "CCC", 'C', ModItems.cordite, 'I', ModItems.sphere_steel, 'S', CU.shell() });
|
||||
|
||||
//DGK Belts
|
||||
@ -348,7 +347,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_mirv, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_smart, 'C', ModItems.grenade_generic });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_breach, 1), new Object[] { "G", "G", "P", 'G', ModItems.grenade_smart, 'P', BIGMT.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_burst, 1), new Object[] { "GGG", "GCG", "GGG", 'G', ModItems.grenade_breach, 'C', ModItems.grenade_generic });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', S.dust(), 'P', ModItems.powder_poison, 'C', CU.dust(), 'A', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.ACID.getID()) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_cloud), new Object[] { "SPS", "CAC", "SPS", 'S', S.dust(), 'P', ModItems.powder_poison, 'C', CU.dust(), 'A', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag });
|
||||
|
||||
@ -126,8 +126,6 @@ public class EntityMappings {
|
||||
addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000);
|
||||
addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000);
|
||||
addEntity(EntityRagingVortex.class, "entity_raging_vortex", 250);
|
||||
addEntity(EntityCarrier.class, "entity_missile_carrier", 1000);
|
||||
addEntity(EntityBooster.class, "entity_missile_booster", 1000);
|
||||
addEntity(EntityModBeam.class, "entity_beam_bang", 1000);
|
||||
addEntity(EntityMissileBHole.class, "entity_missile_blackhole", 1000);
|
||||
addEntity(EntityMissileSchrabidium.class, "entity_missile_schrabidium", 1000);
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.entity.item;
|
||||
|
||||
import com.hbm.entity.logic.IChunkLoader;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
@ -73,7 +74,7 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory,
|
||||
nbt.setTag("Items", nbttaglist);
|
||||
|
||||
if(fluid != null) {
|
||||
nbt.setString("fluidType", fluid.type.getName());
|
||||
nbt.setInteger("fluidType", fluid.type.getID());
|
||||
nbt.setInteger("fluidAmount", fluid.fill);
|
||||
}
|
||||
|
||||
@ -98,7 +99,13 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory,
|
||||
}
|
||||
|
||||
if(nbt.hasKey("fluidType")) {
|
||||
this.fluid = new FluidStack(Fluids.fromName(nbt.getString("fluidType")), nbt.getInteger("fluidAmount"));
|
||||
FluidType type = Fluids.fromNameCompat(nbt.getString("fluidType"));
|
||||
if(type != Fluids.NONE) {
|
||||
nbt.removeTag(nbt.getString("fluidType"));
|
||||
} else
|
||||
type = Fluids.fromID(nbt.getInteger("fluidType"));
|
||||
|
||||
this.fluid = new FluidStack(type, nbt.getInteger("fluidAmount"));
|
||||
}
|
||||
|
||||
this.dataWatcher.updateObject(11, nbt.getByte("load"));
|
||||
|
||||
@ -1,100 +0,0 @@
|
||||
package com.hbm.entity.missile;
|
||||
|
||||
import com.hbm.entity.particle.EntityTSmokeFX;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.projectile.EntityThrowable;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityBooster extends EntityThrowable {
|
||||
|
||||
public EntityBooster(World p_i1582_1_) {
|
||||
super(p_i1582_1_);
|
||||
this.ignoreFrustumCheck = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
this.prevPosX = this.posX;
|
||||
this.prevPosY = this.posY;
|
||||
this.prevPosZ = this.posZ;
|
||||
|
||||
this.posX += this.motionX;
|
||||
this.posY += this.motionY;
|
||||
this.posZ += this.motionZ;
|
||||
|
||||
this.motionY -= 0.015;
|
||||
|
||||
if(motionY < -1.5F)
|
||||
motionY = -1.5F;
|
||||
|
||||
this.rotation();
|
||||
|
||||
if(this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.air)
|
||||
{
|
||||
if(!this.worldObj.isRemote)
|
||||
{
|
||||
ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, 10F, true, false, true);
|
||||
}
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
for(int i = 0; i < 2; i++) {
|
||||
EntityTSmokeFX fx1 = new EntityTSmokeFX(worldObj);
|
||||
fx1.posY = posY - 0.25D;
|
||||
fx1.posX = posX + rand.nextGaussian() * 0.25D;
|
||||
fx1.posZ = posZ + rand.nextGaussian() * 0.25D;
|
||||
fx1.motionY = -0.2D;
|
||||
|
||||
worldObj.spawnEntityInWorld(fx1);
|
||||
}
|
||||
}
|
||||
|
||||
this.motionX *= 0.995;
|
||||
this.motionZ *= 0.995;
|
||||
}
|
||||
|
||||
protected void rotation() {
|
||||
float f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
|
||||
|
||||
for (this.rotationPitch = (float)(Math.atan2(this.motionY, f2) * 180.0D / Math.PI) - 90; this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
while (this.rotationPitch - this.prevRotationPitch >= 180.0F)
|
||||
{
|
||||
this.prevRotationPitch += 360.0F;
|
||||
}
|
||||
|
||||
while (this.rotationYaw - this.prevRotationYaw < -180.0F)
|
||||
{
|
||||
this.prevRotationYaw -= 360.0F;
|
||||
}
|
||||
|
||||
while (this.rotationYaw - this.prevRotationYaw >= 180.0F)
|
||||
{
|
||||
this.prevRotationYaw += 360.0F;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isInRangeToRenderDist(double distance)
|
||||
{
|
||||
return distance < 500000;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,178 +0,0 @@
|
||||
package com.hbm.entity.missile;
|
||||
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.items.ISatChip;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.saveddata.satellites.Satellite;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.projectile.EntityThrowable;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityCarrier extends EntityThrowable {
|
||||
|
||||
double acceleration = 0.00D;
|
||||
|
||||
private ItemStack payload;
|
||||
|
||||
public EntityCarrier(World p_i1582_1_) {
|
||||
super(p_i1582_1_);
|
||||
this.ignoreFrustumCheck = true;
|
||||
this.setSize(3.0F, 26.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
|
||||
//this.setDead();
|
||||
|
||||
if(motionY < 3.0D) {
|
||||
acceleration += 0.0005D;
|
||||
motionY += acceleration;
|
||||
}
|
||||
|
||||
this.setLocationAndAngles(posX + this.motionX, posY + this.motionY, posZ + this.motionZ, 0, 0);
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
for(int i = 0; i < 10; i++) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "gasfire");
|
||||
data.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
}
|
||||
|
||||
if(this.dataWatcher.getWatchableObjectInt(8) == 1)
|
||||
for(int i = 0; i < 2; i++) {
|
||||
NBTTagCompound d1 = new NBTTagCompound();
|
||||
d1.setString("type", "gasfire");
|
||||
d1.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d1, posX + rand.nextGaussian() * 0.75D + 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
|
||||
NBTTagCompound d2 = new NBTTagCompound();
|
||||
d2.setString("type", "gasfire");
|
||||
d2.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d2, posX + rand.nextGaussian() * 0.75D - 2.5, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
|
||||
NBTTagCompound d3 = new NBTTagCompound();
|
||||
d3.setString("type", "gasfire");
|
||||
d3.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d3, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D + 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
|
||||
NBTTagCompound d4 = new NBTTagCompound();
|
||||
d4.setString("type", "gasfire");
|
||||
d4.setDouble("mY", -0.2D);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(d4, posX + rand.nextGaussian() * 0.75D, posY - 0.25D, posZ + rand.nextGaussian() * 0.75D - 2.5), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 200));
|
||||
}
|
||||
|
||||
|
||||
if(this.ticksExisted < 20) {
|
||||
ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 13 + rand.nextInt(3), 4 + rand.nextGaussian() * 2);
|
||||
}
|
||||
}
|
||||
|
||||
if(this.posY > 300 && this.dataWatcher.getWatchableObjectInt(8) == 1)
|
||||
this.disengageBoosters();
|
||||
//this.setDead();
|
||||
|
||||
if(this.posY > 600) {
|
||||
deployPayload();
|
||||
}
|
||||
}
|
||||
|
||||
private void deployPayload() {
|
||||
|
||||
if(payload != null) {
|
||||
|
||||
if(payload.getItem() == ModItems.flame_pony) {
|
||||
ExplosionLarge.spawnTracers(worldObj, posX, posY, posZ, 25);
|
||||
for(Object p : worldObj.playerEntities)
|
||||
((EntityPlayer)p).triggerAchievement(MainRegistry.achSpace);
|
||||
}
|
||||
|
||||
if(payload.getItem() == ModItems.sat_foeq) {
|
||||
for(Object p : worldObj.playerEntities)
|
||||
((EntityPlayer)p).triggerAchievement(MainRegistry.achFOEQ);
|
||||
}
|
||||
|
||||
if(payload.getItem() instanceof ISatChip) {
|
||||
|
||||
int freq = ISatChip.getFreqS(payload);
|
||||
|
||||
Satellite.orbit(worldObj, Satellite.getIDFromItem(payload.getItem()), freq, posX, posY, posZ);
|
||||
}
|
||||
}
|
||||
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
this.dataWatcher.addObject(8, 1);
|
||||
}
|
||||
|
||||
public void setPayload(ItemStack stack) {
|
||||
this.payload = stack.copy();
|
||||
}
|
||||
|
||||
private void disengageBoosters() {
|
||||
this.dataWatcher.updateObject(8, 0);
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
EntityBooster boost1 = new EntityBooster(worldObj);
|
||||
boost1.posX = posX + 1.5D;
|
||||
boost1.posY = posY;
|
||||
boost1.posZ = posZ;
|
||||
boost1.motionX = 0.45D + rand.nextDouble() * 0.2D;
|
||||
boost1.motionY = motionY;
|
||||
boost1.motionZ = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost1);
|
||||
|
||||
EntityBooster boost2 = new EntityBooster(worldObj);
|
||||
boost2.posX = posX - 1.5D;
|
||||
boost2.posY = posY;
|
||||
boost2.posZ = posZ;
|
||||
boost2.motionX = -0.45D - rand.nextDouble() * 0.2D;
|
||||
boost2.motionY = motionY;
|
||||
boost2.motionZ = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost2);
|
||||
|
||||
EntityBooster boost3 = new EntityBooster(worldObj);
|
||||
boost3.posX = posX;
|
||||
boost3.posY = posY;
|
||||
boost3.posZ = posZ + 1.5D;
|
||||
boost3.motionZ = 0.45D + rand.nextDouble() * 0.2D;
|
||||
boost3.motionY = motionY;
|
||||
boost3.motionX = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost3);
|
||||
|
||||
EntityBooster boost4 = new EntityBooster(worldObj);
|
||||
boost4.posX = posX;
|
||||
boost4.posY = posY;
|
||||
boost4.posZ = posZ - 1.5D;
|
||||
boost4.motionZ = -0.45D - rand.nextDouble() * 0.2D;
|
||||
boost4.motionY = motionY;
|
||||
boost4.motionX = rand.nextGaussian() * 0.1D;
|
||||
worldObj.spawnEntityInWorld(boost4);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onImpact(MovingObjectPosition p_70184_1_) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isInRangeToRenderDist(double distance)
|
||||
{
|
||||
return distance < 500000;
|
||||
}
|
||||
}
|
||||
@ -99,7 +99,7 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
this.worldObj.spawnEntityInWorld(cloud);
|
||||
}
|
||||
}
|
||||
@Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_schrabidium, 1); }
|
||||
@Override public ItemStack getDebrisRareDrop() { return null; }
|
||||
@Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_schrabidium); }
|
||||
}
|
||||
|
||||
|
||||
@ -130,7 +130,7 @@ public class ExplosionLarge {
|
||||
if(debris.get(i) != null) {
|
||||
int k = rand.nextInt(debris.get(i).stackSize + 1);
|
||||
for(int j = 0; j < k; j++) {
|
||||
EntityItem item = new EntityItem(world, x, y, z, new ItemStack(debris.get(i).getItem()));
|
||||
EntityItem item = new EntityItem(world, x, y, z, debris.get(i).copy());
|
||||
item.motionX = (motionX + rand.nextGaussian() * deviation) * 0.85;
|
||||
item.motionY = (motionY + rand.nextGaussian() * deviation) * 0.85;
|
||||
item.motionZ = (motionZ + rand.nextGaussian() * deviation) * 0.85;
|
||||
|
||||
@ -2,20 +2,34 @@ package com.hbm.handler;
|
||||
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.*;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChatComponentTranslation;
|
||||
import net.minecraft.util.ChatStyle;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
|
||||
|
||||
/**
|
||||
* General handler for OpenComputers compatibility.
|
||||
* <p/>
|
||||
* Mostly just functions used across many TEs.
|
||||
* @author BallOfEnergy (Microwave)
|
||||
*/
|
||||
public class CompatHandler {
|
||||
|
||||
public static Object[] steamTypeToInt(FluidType type) {
|
||||
if(type == Fluids.STEAM) {return new Object[] {0};}
|
||||
else if(type == Fluids.HOTSTEAM) {return new Object[] {1};}
|
||||
else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};}
|
||||
return new Object[] {3};
|
||||
}
|
||||
|
||||
public static FluidType intToSteamType(int arg) {
|
||||
switch(arg) {
|
||||
default:
|
||||
@ -28,4 +42,80 @@ public class CompatHandler {
|
||||
return Fluids.ULTRAHOTSTEAM;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This is an interface made specifically for adding OC compatibility to NTM machines. The {@link li.cil.oc.api.network.SimpleComponent} interface must also be implemented in the TE.
|
||||
* <br>
|
||||
* This interface is not required to be defined as an optional interface, though the {@link li.cil.oc.api.network.SimpleComponent} interface must be declared as an optional interface.
|
||||
* <br>
|
||||
* Pseudo multiblocks will automatically receive compatibility with their ports by proxying their `methods()` and `invoke()` functions. This is the only time they need to be defined.
|
||||
*
|
||||
**/
|
||||
@Optional.InterfaceList({
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.SidedComponent", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.Analyzable", modid = "OpenComputers"),
|
||||
@Optional.Interface(iface = "li.cil.oc.api.network.ManagedPeripheral", modid = "OpenComputers"),
|
||||
})
|
||||
@SimpleComponent.SkipInjection // make sure OC doesn't inject this shit into the interface and crash
|
||||
public interface OCComponent extends SimpleComponent, SidedComponent, Analyzable, ManagedPeripheral {
|
||||
|
||||
/**
|
||||
* Must be overridden in the implemented TE, or it will default to "ntm_null".
|
||||
* <br>
|
||||
* Dictates the component name exposed to the computer.
|
||||
* @return String
|
||||
*/
|
||||
@Override
|
||||
default String getComponentName() {
|
||||
return "ntm_null";
|
||||
}
|
||||
|
||||
/**
|
||||
* Tells OC which sides of the block cables should connect to.
|
||||
* @param side Side to check
|
||||
* @return If the side should be able to connect.
|
||||
*/
|
||||
@Override
|
||||
default boolean canConnectNode(ForgeDirection side) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to give more information when analyzing the block. Multiple entries in the array will be sent to the user in the order of the array.
|
||||
* @return Additional text to add in the form of lang entries (ex: "analyze.basic2").
|
||||
*/
|
||||
default String[] getExtraInfo() {return new String[] {"analyze.noInfo"};}
|
||||
|
||||
@Override
|
||||
default Node[] onAnalyze(EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic1").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic2").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.basic3").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.name", this.getComponentName()).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GOLD)));
|
||||
String[] extraInfo = getExtraInfo();
|
||||
for (String info : extraInfo) {
|
||||
if(!info.equals(""))
|
||||
player.addChatComponentMessage(new ChatComponentTranslation(info).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)));
|
||||
}
|
||||
TileEntity te = (TileEntity) this;
|
||||
if(Array.getLength(this.methods()) == 0 && te instanceof TileEntityProxyCombo || this.getComponentName().equals("ntm_null"))
|
||||
player.addChatComponentMessage(new ChatComponentTranslation("analyze.error").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Standard methods array from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}.
|
||||
* @return Array of methods to expose to the computer.
|
||||
*/
|
||||
@Override
|
||||
default String[] methods() {return new String[0];}
|
||||
|
||||
/**
|
||||
* Standard invoke function from {@link li.cil.oc.api.network.ManagedPeripheral} extending {@link li.cil.oc.api.network.SimpleComponent}.
|
||||
* @return Data to the computer as a return from the function.
|
||||
*/
|
||||
@Override
|
||||
default Object[] invoke(String method, Context context, Arguments args) throws Exception {return null;}
|
||||
}
|
||||
}
|
||||
|
||||
@ -441,7 +441,7 @@ public abstract class ToolAbility {
|
||||
block = Blocks.redstone_ore;
|
||||
|
||||
ItemStack stack = new ItemStack(block, 1, meta);
|
||||
CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID);
|
||||
CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.PEROXIDE);
|
||||
|
||||
if(result != null) {
|
||||
world.setBlockToAir(x, y, z);
|
||||
|
||||
@ -40,7 +40,7 @@ public class IMCCrystallizer extends IMCHandler {
|
||||
time = 600;
|
||||
|
||||
if(acid.type == Fluids.NONE)
|
||||
acid = new FluidStack(Fluids.ACID, 500);
|
||||
acid = new FluidStack(Fluids.PEROXIDE, 500);
|
||||
|
||||
CrystallizerRecipe recipe = new CrystallizerRecipe(out, time);
|
||||
recipe.acidAmount = acid.fill;
|
||||
|
||||
@ -120,7 +120,7 @@ public class CyclotronRecipeHandler extends TemplateRecipeHandler implements ICo
|
||||
guiGui = new LinkedList<Class<? extends GuiContainer>>();
|
||||
|
||||
transferRects.add(new RecipeTransferRect(new Rectangle(83 - 3 + 16 - 52, 5 + 18 + 1, 24, 18), "cyclotronProcessing"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(47, 15, 36, 36), "cyclotronProcessing"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(48 - 5, 27 - 11, 34, 34), "cyclotronProcessing"));
|
||||
guiGui.add(GUIMachineCyclotron.class);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
|
||||
|
||||
@ -11,6 +11,7 @@ import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.handler.imc.ICompatNHNEI;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
|
||||
@ -243,9 +244,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
|
||||
|
||||
if(outputId.equals(getKey())) {
|
||||
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
outer: for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
|
||||
for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
|
||||
this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey()));
|
||||
}
|
||||
|
||||
@ -257,10 +262,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
outer: for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
|
||||
for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
|
||||
match:
|
||||
for(ItemStack[] array : outs) {
|
||||
for(ItemStack stack : array) {
|
||||
@ -285,10 +293,13 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
|
||||
for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
outer: for(Entry<Object, Object> recipe : recipes.entrySet()) {
|
||||
ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey());
|
||||
ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue());
|
||||
|
||||
for(ItemStack[] array : ins) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
for(ItemStack[] array : outs) for(ItemStack stack : array) if(stack.getItem() == ModItems.item_secret) continue outer;
|
||||
|
||||
match:
|
||||
for(ItemStack[] array : ins) {
|
||||
for(ItemStack stack : array) {
|
||||
|
||||
@ -207,13 +207,12 @@ public class PollutionHandler {
|
||||
int P = PollutionType.POISON.ordinal();
|
||||
|
||||
/* CALCULATION */
|
||||
if(data.pollution[S] > 15) {
|
||||
if(data.pollution[S] > 10) {
|
||||
pollutionForNeightbors[S] = (float) (data.pollution[S] * 0.05F);
|
||||
data.pollution[S] *= 0.8F;
|
||||
} else {
|
||||
data.pollution[S] *= 0.99F;
|
||||
}
|
||||
|
||||
data.pollution[S] *= 0.99F;
|
||||
data.pollution[H] *= 0.9995F;
|
||||
|
||||
if(data.pollution[P] > 10) {
|
||||
|
||||
@ -3,6 +3,8 @@ package com.hbm.handler.radiation;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.hbm.interfaces.Untested;
|
||||
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.ChunkCoordIntPair;
|
||||
import net.minecraft.world.World;
|
||||
@ -19,7 +21,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler {
|
||||
|
||||
private HashMap<World, ThreeDimRadiationPerWorld> perWorld = new HashMap();
|
||||
|
||||
@Override
|
||||
@Override @Untested
|
||||
public float getRadiation(World world, int x, int y, int z) {
|
||||
ThreeDimRadiationPerWorld radWorld = perWorld.get(world);
|
||||
|
||||
@ -28,7 +30,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler {
|
||||
|
||||
int yReg = MathHelper.clamp_int(y >> 4, 0, 15);
|
||||
|
||||
Float rad = radWorld.radiation.get(coords)[yReg];
|
||||
Float rad = radWorld.radiation.get(coords)[yReg]; // this will crash if the coord pair isn't nullchecked
|
||||
return rad == null ? 0F : rad;
|
||||
}
|
||||
|
||||
@ -66,7 +68,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler {
|
||||
setRadiation(world, x, y, z, Math.max(getRadiation(world, x, y, z) - rad, 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override @Untested //will most definitely crash, for this to work i need to figure out what it even was i wanted to do in the first place
|
||||
public void updateSystem() {
|
||||
|
||||
for(Entry<World, ThreeDimRadiationPerWorld> entry : perWorld.entrySet()) {
|
||||
@ -96,7 +98,7 @@ public class ChunkRadiationHandler3D extends ChunkRadiationHandler {
|
||||
|
||||
if(buff.containsKey(newCoord)) {
|
||||
int newY = MathHelper.clamp_int(y + j, 0, 15);
|
||||
Float[] vals = radiation.get(newCoord);
|
||||
Float[] vals = radiation.get(newCoord); // ????????? but radiation was cleared!
|
||||
float newRad = vals[newY] + chunk.getValue()[newY] * percent;
|
||||
vals[newY] = Math.max(0F, newRad * 0.999F - 0.05F);
|
||||
}
|
||||
|
||||
@ -0,0 +1,419 @@
|
||||
package com.hbm.handler.radiation;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.hbm.lib.Library;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.ChunkCoordIntPair;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
|
||||
import net.minecraftforge.common.DimensionManager;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraftforge.event.world.ChunkDataEvent;
|
||||
import net.minecraftforge.event.world.ChunkEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
|
||||
/**
|
||||
* The PRISM system aims to make a semi-realistic containment system with simplified and variable resistance values.
|
||||
* The general basis for this system is the simplified 3D system with its 16x16x16 regions, but in addition to those
|
||||
* sub-chunks, each sub-chunk has several arrays of resistance values (three arrays, one for each axis) where each
|
||||
* value represents the resistance of one "slice" of the sub-chunk. This allows resistances to be handled differently
|
||||
* depending on the direction the radiation is coming from, and depending on the sub-chunk's localized block resistance
|
||||
* density. While not as accurate as the pocket-based system from 1.12, it does a better job at simulating resistances
|
||||
* of various block types instead of a binary sealing/not sealing system. For example it is therefore possible to
|
||||
* safely store radioactive waste in a cave, shielded by many layers of rock and dirt, without needing extra concrete.
|
||||
* The system's name stems from the "gradient"-like handling of the resistance values per axis, multiple color
|
||||
* gradients make a rainbow, and rainbows come from prisms. Just like a prism, sub-chunks too handle the radiation
|
||||
* going through them differently depending on the angle of approach.
|
||||
* ___
|
||||
* /\ \
|
||||
* / \ \
|
||||
* / \ \
|
||||
* / \ \
|
||||
* /________\__\
|
||||
*
|
||||
* @author hbm
|
||||
*
|
||||
*/
|
||||
public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
|
||||
|
||||
public ConcurrentHashMap<World, RadPerWorld> perWorld = new ConcurrentHashMap();
|
||||
public static int cycles = 0;
|
||||
|
||||
public static final float MAX_RADIATION = 1_000_000;
|
||||
private static final String NBT_KEY_CHUNK_RADIATION = "hfr_prism_radiation_";
|
||||
private static final String NBT_KEY_CHUNK_RESISTANCE = "hfr_prism_resistance_";
|
||||
private static final String NBT_KEY_CHUNK_EXISTS = "hfr_prism_exists_";
|
||||
|
||||
@Override
|
||||
public float getRadiation(World world, int x, int y, int z) {
|
||||
|
||||
RadPerWorld system = perWorld.get(world);
|
||||
|
||||
if(system != null) {
|
||||
ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4);
|
||||
int yReg = MathHelper.clamp_int(y >> 4, 0, 15);
|
||||
SubChunk[] subChunks = system.radiation.get(coords);
|
||||
if(subChunks != null) {
|
||||
SubChunk rad = subChunks[yReg];
|
||||
if(rad != null) return rad.radiation;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRadiation(World world, int x, int y, int z, float rad) {
|
||||
|
||||
if(Float.isNaN(rad)) rad = 0;
|
||||
|
||||
RadPerWorld system = perWorld.get(world);
|
||||
|
||||
if(system != null) {
|
||||
ChunkCoordIntPair coords = new ChunkCoordIntPair(x >> 4, z >> 4);
|
||||
int yReg = MathHelper.clamp_int(y >> 4, 0, 15);
|
||||
SubChunk[] subChunks = system.radiation.get(coords);
|
||||
if(subChunks == null) {
|
||||
subChunks = new SubChunk[16];
|
||||
system.radiation.put(coords, subChunks);
|
||||
}
|
||||
if(subChunks[yReg] == null) subChunks[yReg] = new SubChunk().rebuild(world, x, y, z);
|
||||
subChunks[yReg].radiation = MathHelper.clamp_float(rad, 0, MAX_RADIATION);
|
||||
world.getChunkFromBlockCoords(x, z).isModified = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementRad(World world, int x, int y, int z, float rad) {
|
||||
setRadiation(world, x, y, z, getRadiation(world, x, y, z) + rad);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void decrementRad(World world, int x, int y, int z, float rad) {
|
||||
setRadiation(world, x, y, z, getRadiation(world, x, y, z) - rad);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveWorldLoad(WorldEvent.Load event) {
|
||||
if(!event.world.isRemote) perWorld.put(event.world, new RadPerWorld());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveWorldUnload(WorldEvent.Unload event) {
|
||||
if(!event.world.isRemote) perWorld.remove(event.world);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveChunkLoad(ChunkDataEvent.Load event) {
|
||||
|
||||
if(!event.world.isRemote) {
|
||||
RadPerWorld radWorld = perWorld.get(event.world);
|
||||
|
||||
if(radWorld != null) {
|
||||
SubChunk[] chunk = new SubChunk[16];
|
||||
|
||||
for(int i = 0; i < 16; i++) {
|
||||
if(!event.getData().getBoolean(NBT_KEY_CHUNK_EXISTS + i)) {
|
||||
chunk[i] = new SubChunk().rebuild(event.world, event.getChunk().xPosition << 4, i << 4, event.getChunk().zPosition << 4);
|
||||
continue;
|
||||
}
|
||||
SubChunk sub = new SubChunk();
|
||||
chunk[i] = sub;
|
||||
sub.radiation = event.getData().getFloat(NBT_KEY_CHUNK_RADIATION + i);
|
||||
for(int j = 0; j < 16; j++) sub.xResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i);
|
||||
for(int j = 0; j < 16; j++) sub.yResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i);
|
||||
for(int j = 0; j < 16; j++) sub.zResist[j] = event.getData().getFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i);
|
||||
}
|
||||
|
||||
radWorld.radiation.put(event.getChunk().getChunkCoordIntPair(), chunk);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveChunkSave(ChunkDataEvent.Save event) {
|
||||
if(!event.world.isRemote) {
|
||||
RadPerWorld radWorld = perWorld.get(event.world);
|
||||
if(radWorld != null) {
|
||||
SubChunk[] chunk = radWorld.radiation.get(event.getChunk().getChunkCoordIntPair());
|
||||
if(chunk != null) {
|
||||
for(int i = 0; i < 16; i++) {
|
||||
SubChunk sub = chunk[i];
|
||||
if(sub != null) {
|
||||
float rad = sub.radiation;
|
||||
event.getData().setFloat(NBT_KEY_CHUNK_RADIATION + i, rad);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "x_" + j + "_" + i, sub.xResist[j]);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "y_" + j + "_" + i, sub.yResist[j]);
|
||||
for(int j = 0; j < 16; j++) event.getData().setFloat(NBT_KEY_CHUNK_RESISTANCE + "z_" + j + "_" + i, sub.zResist[j]);
|
||||
event.getData().setBoolean(NBT_KEY_CHUNK_EXISTS + i, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveChunkUnload(ChunkEvent.Unload event) {
|
||||
if(!event.world.isRemote) {
|
||||
RadPerWorld radWorld = perWorld.get(event.world);
|
||||
if(radWorld != null) {
|
||||
radWorld.radiation.remove(event.getChunk().getChunkCoordIntPair());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static final HashMap<ChunkCoordIntPair, SubChunk[]> newAdditions = new HashMap();
|
||||
|
||||
@Override
|
||||
public void updateSystem() {
|
||||
|
||||
cycles++;
|
||||
|
||||
for(WorldServer world : DimensionManager.getWorlds()) { //only updates loaded worlds
|
||||
|
||||
RadPerWorld system = perWorld.get(world);
|
||||
if(system == null) continue;
|
||||
|
||||
int rebuildAllowance = 25;
|
||||
|
||||
//it would be way to expensive to replace the sub-chunks entirely like with the old system
|
||||
//(that only used floats anyway...) so instead we shift the radiation into the prev value
|
||||
for(Entry<ChunkCoordIntPair, SubChunk[]> chunk : system.radiation.entrySet()) {
|
||||
ChunkCoordIntPair coord = chunk.getKey();
|
||||
|
||||
for(int i = 0; i < 16; i++) {
|
||||
|
||||
SubChunk sub = chunk.getValue()[i];
|
||||
|
||||
boolean hasTriedRebuild = false;
|
||||
|
||||
if(sub != null) {
|
||||
sub.prevRadiation = sub.radiation;
|
||||
sub.radiation = 0;
|
||||
|
||||
//process some chunks that need extra rebuilding
|
||||
if(rebuildAllowance > 0 && sub.needsRebuild) {
|
||||
sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4);
|
||||
if(!sub.needsRebuild) {
|
||||
rebuildAllowance--;
|
||||
hasTriedRebuild = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(!hasTriedRebuild && Math.abs(coord.chunkXPos * coord.chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) {
|
||||
|
||||
Chunk c = world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos);
|
||||
ExtendedBlockStorage[] xbs = c.getBlockStorageArray();
|
||||
ExtendedBlockStorage subChunk = xbs[i];
|
||||
int checksum = 0;
|
||||
|
||||
if(subChunk != null) {
|
||||
for(int iX = 0; iX < 16; iX++) for(int iY = 0; iY < 16; iY ++) for(int iZ = 0; iZ < 16; iZ ++) checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)];
|
||||
}
|
||||
|
||||
if(checksum != sub.checksum) {
|
||||
sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//has to support additions while iterating
|
||||
Iterator<Entry<ChunkCoordIntPair, SubChunk[]>> it = system.radiation.entrySet().iterator();
|
||||
while(it.hasNext()) {
|
||||
Entry<ChunkCoordIntPair, SubChunk[]> chunk = it.next();
|
||||
if(this.getPrevChunkRadiation(chunk.getValue()) <= 0) continue;
|
||||
for(int i = 0; i < 16; i++) {
|
||||
|
||||
SubChunk sub = chunk.getValue()[i];
|
||||
|
||||
if(sub != null) {
|
||||
if(sub.prevRadiation <= 0 || Float.isNaN(sub.prevRadiation) || Float.isInfinite(sub.prevRadiation)) continue;
|
||||
float radSpread = 0;
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) radSpread += spreadRadiation(world, sub, i, chunk.getKey(), chunk.getValue(), system.radiation, dir);
|
||||
sub.radiation += (sub.prevRadiation - radSpread) * 0.95F;
|
||||
sub.radiation -= 1F;
|
||||
sub.radiation = MathHelper.clamp_float(sub.radiation, 0, MAX_RADIATION);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
system.radiation.putAll(newAdditions);
|
||||
newAdditions.clear();
|
||||
|
||||
/*
|
||||
//reap chunks with no radiation at all
|
||||
system.radiation.entrySet().removeIf(x -> getTotalChunkRadiation(x.getValue()) <= 0F);
|
||||
*/ //is this even a good idea? by reaping unused chunks we still lose our cached resistance values
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the amount of radiation spread */
|
||||
private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, ConcurrentHashMap<ChunkCoordIntPair, SubChunk[]> map, ForgeDirection dir) {
|
||||
|
||||
float spread = 0.1F;
|
||||
float amount = source.prevRadiation * spread;
|
||||
|
||||
if(amount <= 1F) return 0;
|
||||
|
||||
if(dir.offsetY != 0) {
|
||||
if(dir == Library.POS_Y && y == 15) return amount; // out of world
|
||||
if(dir == Library.NEG_Y && y == 0) return amount; // out of world
|
||||
if(chunk[y + dir.offsetY] == null) chunk[y + dir.offsetY] = new SubChunk().rebuild(world, origin.chunkXPos << 4, (y + dir.offsetY) << 4, origin.chunkZPos << 4);
|
||||
SubChunk to = chunk[y + dir.offsetY];
|
||||
return spreadRadiationTo(source, to, amount, dir);
|
||||
} else {
|
||||
ChunkCoordIntPair newPos = new ChunkCoordIntPair(origin.chunkXPos + dir.offsetX, origin.chunkZPos + dir.offsetZ);
|
||||
if(!world.getChunkProvider().chunkExists(newPos.chunkXPos, newPos.chunkZPos)) return amount;
|
||||
SubChunk[] newChunk = map.get(newPos);
|
||||
if(newChunk == null) {
|
||||
newChunk = new SubChunk[16];
|
||||
newAdditions.put(newPos, newChunk);
|
||||
}
|
||||
if(newChunk[y] == null) newChunk[y] = new SubChunk().rebuild(world, newPos.chunkXPos << 4, y << 4, newPos.chunkZPos << 4);
|
||||
SubChunk to = newChunk[y];
|
||||
return spreadRadiationTo(source, to, amount, dir);
|
||||
}
|
||||
}
|
||||
|
||||
private static float spreadRadiationTo(SubChunk from, SubChunk to, float amount, ForgeDirection movement) {
|
||||
float resistance = from.getResistanceValue(movement.getOpposite()) + to.getResistanceValue(movement);
|
||||
double fun = Math.pow(Math.E, -resistance / 10_000D);
|
||||
float toMove = (float) Math.min(amount * fun, amount);
|
||||
to.radiation += toMove;
|
||||
return toMove;
|
||||
}
|
||||
|
||||
//private static float getTotalChunkRadiation(SubChunk[] chunk) { float rad = 0; for(SubChunk sub : chunk) if(sub != null) rad += sub.radiation; return rad; }
|
||||
private static float getPrevChunkRadiation(SubChunk[] chunk) { float rad = 0; for(SubChunk sub : chunk) if(sub != null) rad += sub.prevRadiation; return rad; }
|
||||
|
||||
@Override
|
||||
public void clearSystem(World world) {
|
||||
RadPerWorld system = perWorld.get(world);
|
||||
if(system != null) system.radiation.clear();
|
||||
}
|
||||
|
||||
public static class RadPerWorld {
|
||||
public ConcurrentHashMap<ChunkCoordIntPair, SubChunk[]> radiation = new ConcurrentHashMap();
|
||||
}
|
||||
|
||||
public static class SubChunk {
|
||||
|
||||
public float prevRadiation;
|
||||
public float radiation;
|
||||
public float[] xResist = new float[16];
|
||||
public float[] yResist = new float[16];
|
||||
public float[] zResist = new float[16];
|
||||
public boolean needsRebuild = false;
|
||||
public int checksum = 0;
|
||||
|
||||
@Deprecated public void updateBlock(World world, int x, int y, int z) {
|
||||
int cX = x >> 4;
|
||||
int cY = MathHelper.clamp_int(y >> 4, 0, 15);
|
||||
int cZ = z >> 4;
|
||||
|
||||
if(!world.getChunkProvider().chunkExists(cX, cZ)) return;
|
||||
|
||||
int tX = cX << 4;
|
||||
int tY = cY << 4;
|
||||
int tZ = cX << 4;
|
||||
|
||||
int sX = MathHelper.clamp_int(x - tX, 0, 15);
|
||||
int sY = MathHelper.clamp_int(y - tY, 0, 15);
|
||||
int sZ = MathHelper.clamp_int(z - tZ, 0, 15);
|
||||
|
||||
Chunk chunk = world.getChunkFromChunkCoords(cX, cZ);
|
||||
ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray();
|
||||
ExtendedBlockStorage subChunk = xbs[cY];
|
||||
|
||||
xResist[sX] = yResist[sY] = zResist[sZ] = 0;
|
||||
|
||||
for(int iX = 0; iX < 16; iX++) {
|
||||
for(int iY = 0; iY < 16; iY ++) {
|
||||
for(int iZ = 0; iZ < 16; iZ ++) {
|
||||
|
||||
if(iX == sX || iY == sY || iZ == sZ) { //only redo the three affected slices by this position change
|
||||
|
||||
Block b = subChunk.getBlockByExtId(iX, iY, iZ);
|
||||
if(b.getMaterial() == Material.air) continue;
|
||||
float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100);
|
||||
if(iX == sX) xResist[iX] += resistance;
|
||||
if(iY == sY) yResist[iY] += resistance;
|
||||
if(iZ == sZ) zResist[iZ] += resistance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public SubChunk rebuild(World world, int x, int y, int z) {
|
||||
needsRebuild = true;
|
||||
int cX = x >> 4;
|
||||
int cY = MathHelper.clamp_int(y >> 4, 0, 15);
|
||||
int cZ = z >> 4;
|
||||
|
||||
if(!world.getChunkProvider().chunkExists(cX, cZ)) return this; //if the chunk isn't actually loaded, quit (but needsRebuild is still set!)
|
||||
|
||||
int tX = cX << 4;
|
||||
int tY = cY << 4;
|
||||
int tZ = cX << 4;
|
||||
|
||||
for(int i = 0; i < 16; i++) xResist[i] = yResist[i] = zResist[i] = 0;
|
||||
|
||||
Chunk chunk = world.getChunkFromChunkCoords(cX, cZ);
|
||||
ExtendedBlockStorage[] xbs = chunk.getBlockStorageArray();
|
||||
ExtendedBlockStorage subChunk = xbs[cY];
|
||||
checksum = 0;
|
||||
|
||||
if(subChunk != null) {
|
||||
for(int iX = 0; iX < 16; iX++) {
|
||||
for(int iY = 0; iY < 16; iY ++) {
|
||||
for(int iZ = 0; iZ < 16; iZ ++) {
|
||||
|
||||
Block b = subChunk.getBlockByExtId(iX, iY, iZ);
|
||||
if(b.getMaterial() == Material.air) continue;
|
||||
float resistance = Math.min(b.getExplosionResistance(null, world, tX + iX, tY + iY, tZ + iZ, x, y, z), 100);
|
||||
xResist[iX] += resistance;
|
||||
yResist[iY] += resistance;
|
||||
zResist[iZ] += resistance;
|
||||
checksum += subChunk.getBlockLSBArray()[MathHelper.clamp_int(iY << 8 | iZ << 4 | iX, 0, 4095)]; // the "good enough" approach
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
needsRebuild = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
public float getResistanceValue(ForgeDirection movement) {
|
||||
if(movement == Library.POS_X) return getResistanceFromArray(xResist, true);
|
||||
if(movement == Library.NEG_X) return getResistanceFromArray(xResist, false);
|
||||
if(movement == Library.POS_Y) return getResistanceFromArray(yResist, true);
|
||||
if(movement == Library.NEG_Y) return getResistanceFromArray(yResist, false);
|
||||
if(movement == Library.POS_Z) return getResistanceFromArray(zResist, true);
|
||||
if(movement == Library.NEG_Z) return getResistanceFromArray(zResist, false);
|
||||
return 0;
|
||||
}
|
||||
|
||||
private float getResistanceFromArray(float[] resist, boolean reverse) {
|
||||
float res = 0F;
|
||||
for(int i = 1; i < 16; i++) {
|
||||
int index = reverse ? 15 - i : i;
|
||||
res += resist[index] / 15F * i;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -12,7 +12,7 @@ import net.minecraftforge.event.world.WorldEvent;
|
||||
|
||||
public class ChunkRadiationManager {
|
||||
|
||||
public static ChunkRadiationHandler proxy = /*new ChunkRadiationHandlerNT();*/ new ChunkRadiationHandlerSimple();
|
||||
public static ChunkRadiationHandler proxy = new ChunkRadiationHandlerSimple();
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
|
||||
@ -216,7 +216,6 @@ public class HazardRegistry {
|
||||
HazardSystem.register(ancient_scrap, makeData(RADIATION, 150F));
|
||||
HazardSystem.register(block_corium, makeData(RADIATION, 150F));
|
||||
HazardSystem.register(block_corium_cobble, makeData(RADIATION, 150F));
|
||||
HazardSystem.register(sand_gold198, makeData(RADIATION, au198 * block * powder_mult));
|
||||
|
||||
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 0), makeData(RADIATION, 0.5F));
|
||||
HazardSystem.register(new ItemStack(ModBlocks.sellafield, 1, 1), makeData(RADIATION, 1F));
|
||||
|
||||
@ -26,7 +26,7 @@ public class HazardTypeRadiation extends HazardTypeBase {
|
||||
|
||||
boolean reacher = false;
|
||||
|
||||
if(target instanceof EntityPlayer && !GeneralConfig.enable528)
|
||||
if(target instanceof EntityPlayer)
|
||||
reacher = ((EntityPlayer) target).inventory.hasItem(ModItems.reacher);
|
||||
|
||||
level *= stack.stackSize;
|
||||
|
||||
@ -4,6 +4,7 @@ import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.apache.logging.log4j.Level;
|
||||
|
||||
@ -17,7 +18,6 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import scala.actors.threadpool.Arrays;
|
||||
/**
|
||||
* Interface for customizable warheads or other explosive devices
|
||||
* @author UFFR
|
||||
|
||||
@ -445,11 +445,11 @@ public class OreDictManager {
|
||||
* RARE METALS
|
||||
*/
|
||||
AUSTRALIUM .nugget(nugget_australium) .billet(billet_australium) .ingot(ingot_australium) .dust(powder_australium) .block(block_australium) .ore(ore_australium);
|
||||
REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium) .ore(ore_reiium);
|
||||
WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium) .ore(ore_weidanium);
|
||||
UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium) .ore(ore_unobtainium);
|
||||
VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium) .ore(ore_verticium);
|
||||
DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon) .ore(ore_daffergon);
|
||||
REIIUM .nugget(nugget_reiium) .ingot(ingot_reiium) .dust(powder_reiium) .block(block_reiium);
|
||||
WEIDANIUM .nugget(nugget_weidanium) .ingot(ingot_weidanium) .dust(powder_weidanium) .block(block_weidanium);
|
||||
UNOBTAINIUM .nugget(nugget_unobtainium) .ingot(ingot_unobtainium) .dust(powder_unobtainium) .block(block_unobtainium);
|
||||
VERTICIUM .nugget(nugget_verticium) .ingot(ingot_verticium) .dust(powder_verticium) .block(block_verticium);
|
||||
DAFFERGON .nugget(nugget_daffergon) .ingot(ingot_daffergon) .dust(powder_daffergon) .block(block_daffergon);
|
||||
|
||||
/*
|
||||
* RARE EARTHS
|
||||
@ -625,6 +625,16 @@ public class OreDictManager {
|
||||
OreDictionary.registerOre("container1000lubricant", bdcl);
|
||||
OreDictionary.registerOre("itemSilicon", billet_silicon);
|
||||
|
||||
//Legacy wires
|
||||
OreDictionary.registerOre(AL.wireFine(), wire_aluminium);
|
||||
OreDictionary.registerOre(CU.wireFine(), wire_copper);
|
||||
OreDictionary.registerOre(MINGRADE.wireFine(), wire_red_copper);
|
||||
OreDictionary.registerOre(GOLD.wireFine(), wire_gold);
|
||||
OreDictionary.registerOre(W.wireFine(), wire_tungsten);
|
||||
OreDictionary.registerOre(ALLOY.wireFine(), wire_advanced_alloy);
|
||||
OreDictionary.registerOre(MAGTUNG.wireFine(), wire_magnetized_tungsten);
|
||||
OreDictionary.registerOre(SA326.wireFine(), wire_schrabidium);
|
||||
|
||||
MaterialShapes.registerCompatShapes();
|
||||
compensateMojangSpaghettiBullshit();
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotPattern;
|
||||
import com.hbm.inventory.SlotUpgrade;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.network.TileEntityCraneGrabber;
|
||||
@ -22,7 +23,7 @@ public class ContainerCraneGrabber extends ContainerBase {
|
||||
//filter
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 3; j++) {
|
||||
this.addSlotToContainer(new Slot(grabber, j + i * 3, 40 + j * 18, 17 + i * 18));
|
||||
this.addSlotToContainer(new SlotPattern(grabber, j + i * 3, 40 + j * 18, 17 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,9 +1,12 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotNonRetarded;
|
||||
import com.hbm.inventory.recipes.ArcFurnaceRecipes;
|
||||
import com.hbm.inventory.recipes.ArcFurnaceRecipes.ArcFurnaceRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge;
|
||||
import com.hbm.util.InventoryUtil;
|
||||
|
||||
import api.hbm.energymk2.IBatteryItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -56,13 +59,13 @@ public class ContainerMachineArcFurnaceLarge extends Container {
|
||||
} else {
|
||||
|
||||
if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) {
|
||||
if(!this.mergeItemStack(stack, 3, 4, false)) return null;
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 3, 4, false)) return null;
|
||||
} else if(rStack.getItem() == ModItems.arc_electrode) {
|
||||
if(!this.mergeItemStack(stack, 4, 5, false)) return null;
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 4, 5, false)) return null;
|
||||
} else if(rStack.getItem() instanceof ItemMachineUpgrade) {
|
||||
if(!this.mergeItemStack(stack, 0, 3, false)) return null;
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 0, 3, false)) return null;
|
||||
} else {
|
||||
if(!this.mergeItemStack(stack, 5, 25, false)) return null;
|
||||
if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 5, 25, false)) return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -86,10 +89,22 @@ public class ContainerMachineArcFurnaceLarge extends Container {
|
||||
public SlotArcFurnace(IInventory inventory, int id, int x, int y) {
|
||||
super(inventory, id, x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValid(ItemStack stack) {
|
||||
TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory;
|
||||
if(furnace.liquidMode) return true;
|
||||
ArcFurnaceRecipe recipe = ArcFurnaceRecipes.getOutput(stack, furnace.liquidMode);
|
||||
if(recipe != null && recipe.solidOutput != null) {
|
||||
return recipe.solidOutput.stackSize * stack.stackSize <= recipe.solidOutput.getMaxStackSize() && stack.stackSize <= furnace.getMaxInputSize();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotStackLimit() {
|
||||
return this.getHasStack() ? this.getStack().stackSize : 1;
|
||||
TileEntityMachineArcFurnaceLarge furnace = (TileEntityMachineArcFurnaceLarge) this.inventory;
|
||||
return this.getHasStack() ? furnace.getMaxInputSize() : 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,10 +1,7 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.FluidContainerRegistry;
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotTakeOnly;
|
||||
import com.hbm.inventory.SlotUpgrade;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemMachineUpgrade;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineCyclotron;
|
||||
@ -25,42 +22,34 @@ public class ContainerMachineCyclotron extends Container {
|
||||
cyclotron = tile;
|
||||
|
||||
//Input
|
||||
this.addSlotToContainer(new Slot(tile, 0, 17, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 1, 17, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 2, 17, 54));
|
||||
this.addSlotToContainer(new Slot(tile, 0, 11, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 1, 11, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 2, 11, 54));
|
||||
//Targets
|
||||
this.addSlotToContainer(new Slot(tile, 3, 107, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 4, 107, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 5, 107, 54));
|
||||
this.addSlotToContainer(new Slot(tile, 3, 101, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 4, 101, 36));
|
||||
this.addSlotToContainer(new Slot(tile, 5, 101, 54));
|
||||
//Output
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 143, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 143, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 143, 54));
|
||||
//AMAT In
|
||||
this.addSlotToContainer(new Slot(tile, 9, 143, 90));
|
||||
//AMAT Out
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 10, 143, 108));
|
||||
//Coolant In
|
||||
this.addSlotToContainer(new Slot(tile, 11, 62, 72));
|
||||
//Coolant Out
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 12, 62, 90));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 6, 131, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 7, 131, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tile, 8, 131, 54));
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(tile, 13, 62, 108));
|
||||
this.addSlotToContainer(new Slot(tile, 9, 168, 83));
|
||||
//Upgrades
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 14, 17, 90));
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 15, 17, 108));
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 10, 60, 81));
|
||||
this.addSlotToContainer(new SlotUpgrade(tile, 11, 78, 81));
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
for(int j = 0; j < 9; j++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 56));
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 15 + j * 18, 133 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++)
|
||||
{
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 56));
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 15 + i * 18, 191));
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,20 +71,12 @@ public class ContainerMachineCyclotron extends Container {
|
||||
} else {
|
||||
|
||||
if(stack.getItem() instanceof IBatteryItem || stack.getItem() == ModItems.battery_creative) {
|
||||
if(!this.mergeItemStack(stack, 13, 14, true))
|
||||
return null;
|
||||
|
||||
} else if(FluidContainerRegistry.getFluidContent(stack, Fluids.COOLANT) > 0) {
|
||||
if(!this.mergeItemStack(stack, 11, 12, true))
|
||||
return null;
|
||||
|
||||
} else if(FluidContainerRegistry.getFullContainer(stack, Fluids.AMAT) != null) {
|
||||
if(!this.mergeItemStack(stack, 9, 10, true))
|
||||
return null;
|
||||
|
||||
} else if(stack.getItem() instanceof ItemMachineUpgrade) {
|
||||
if(!this.mergeItemStack(stack, 14, 15, true))
|
||||
if(!this.mergeItemStack(stack, 15, 16, true))
|
||||
if(!this.mergeItemStack(stack, 10, 11, true))
|
||||
if(!this.mergeItemStack(stack, 11, 12, true))
|
||||
return null;
|
||||
|
||||
} else {
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.inventory.SlotNonRetarded;
|
||||
import com.hbm.inventory.SlotUpgrade;
|
||||
import com.hbm.inventory.recipes.SolderingRecipes;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -24,7 +25,7 @@ public class ContainerMachineSolderingStation extends Container {
|
||||
solderer = tile;
|
||||
|
||||
//Inputs
|
||||
for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new Slot(tile, i * 3 + j, 17 + j * 18, 18 + i * 18));
|
||||
for(int i = 0; i < 2; i++) for(int j = 0; j < 3; j++) this.addSlotToContainer(new SlotNonRetarded(tile, i * 3 + j, 17 + j * 18, 18 + i * 18));
|
||||
//Output
|
||||
this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 6, 107, 27));
|
||||
//Battery
|
||||
|
||||
@ -0,0 +1,50 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotCraftingOutput;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
|
||||
public class ContainerOreSlopper extends Container {
|
||||
|
||||
public TileEntityMachineOreSlopper slopper;
|
||||
|
||||
public ContainerOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) {
|
||||
this.slopper = slopper;
|
||||
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(slopper, 0, 8, 72));
|
||||
//Fluid ID
|
||||
this.addSlotToContainer(new Slot(slopper, 1, 26, 72));
|
||||
//Input
|
||||
this.addSlotToContainer(new Slot(slopper, 2, 71, 27));
|
||||
//Outputs
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 3, 134, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 4, 152, 18));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 5, 134, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 6, 152, 36));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 7, 134, 54));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(player.player, slopper, 8, 152, 54));
|
||||
//Upgrades
|
||||
this.addSlotToContainer(new Slot(slopper, 0, 62, 72));
|
||||
this.addSlotToContainer(new Slot(slopper, 0, 80, 72));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(player, j + i * 9 + 9, 8 + j * 18, 122 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(player, i, 8 + i * 18, 180));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return slopper.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
@ -9,6 +9,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
@ -83,7 +84,7 @@ public class Fluids {
|
||||
public static FluidType SCHRABIDIC;
|
||||
public static FluidType AMAT;
|
||||
public static FluidType ASCHRAB;
|
||||
public static FluidType ACID;
|
||||
public static FluidType PEROXIDE;
|
||||
public static FluidType WATZ;
|
||||
public static FluidType CRYOGEL;
|
||||
public static FluidType HYDROGEN;
|
||||
@ -174,6 +175,13 @@ public class Fluids {
|
||||
public static FluidType THORIUM_SALT_DEPLETED;
|
||||
public static FluidType FULLERENE;
|
||||
public static FluidType STELLAR_FLUX;
|
||||
public static FluidType VITRIOL;
|
||||
public static FluidType SLOP;
|
||||
|
||||
/* Lagacy names for compatibility purposes */
|
||||
@Deprecated public static FluidType ACID; //JAOPCA uses this, apparently
|
||||
|
||||
public static final HashBiMap<String, FluidType> renameMapping = HashBiMap.create();
|
||||
|
||||
public static List<FluidType> customFluids = new ArrayList();
|
||||
|
||||
@ -265,7 +273,7 @@ public class Fluids {
|
||||
SCHRABIDIC = new FluidType("SCHRABIDIC", 0x006B6B, 5, 0, 5, EnumSymbol.ACID).addTraits(new FT_VentRadiation(1F), new FT_Corrosive(75), new FT_Poison(true, 2), LIQUID);
|
||||
AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||
ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||
ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID);
|
||||
PEROXIDE = new FluidType("PEROXIDE", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID);
|
||||
WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID, VISCOUS, new FT_Polluting().release(PollutionType.POISON, POISON_EXTREME));
|
||||
CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID, VISCOUS);
|
||||
HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setTemp(-260).addContainers(new CD_Gastank(0x4286f4, 0xffffff)).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP);
|
||||
@ -369,7 +377,9 @@ public class Fluids {
|
||||
HOTCRACKOIL_DS = new FluidType("HOTCRACKOIL_DS", 0x3A1A28, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS, P_OIL);
|
||||
NAPHTHA_DS = new FluidType("NAPHTHA_DS", 0x63614E, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(LIQUID, VISCOUS, P_FUEL);
|
||||
LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL);
|
||||
STELLAR_FLUX = new FluidType(139, "STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||
STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
|
||||
VITRIOL = new FluidType("VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
|
||||
SLOP = new FluidType(141, "SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
|
||||
|
||||
// ^ ^ ^ ^ ^ ^ ^ ^
|
||||
//ADD NEW FLUIDS HERE
|
||||
@ -483,8 +493,9 @@ public class Fluids {
|
||||
metaOrder.add(SALIENT);
|
||||
metaOrder.add(SEEDSLURRY);
|
||||
metaOrder.add(COLLOID);
|
||||
metaOrder.add(VITRIOL);
|
||||
metaOrder.add(IONGEL);
|
||||
metaOrder.add(ACID);
|
||||
metaOrder.add(PEROXIDE);
|
||||
metaOrder.add(SULFURIC_ACID);
|
||||
metaOrder.add(NITRIC_ACID);
|
||||
metaOrder.add(SOLVENT);
|
||||
@ -539,6 +550,14 @@ public class Fluids {
|
||||
metaOrder.add(PHEROMONE);
|
||||
metaOrder.add(PHEROMONE_M);
|
||||
|
||||
//ANY INTERNAL RENAMING MUST BE REFLECTED HERE - DON'T FORGET TO CHANGE: LANG FILES + TYPE'S STRING ID + NAME OF TANK/GUI TEXTURE FILES!
|
||||
// V
|
||||
|
||||
renameMapping.put("ACID", PEROXIDE);
|
||||
|
||||
// LEGACY
|
||||
ACID = PEROXIDE;
|
||||
|
||||
for(FluidType custom : customFluids) metaOrder.add(custom);
|
||||
|
||||
CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_LUNG, false)));
|
||||
@ -869,6 +888,34 @@ public class Fluids {
|
||||
return fluid;
|
||||
}
|
||||
|
||||
/** for old worlds with types saved as name, do not use otherwise */
|
||||
public static FluidType fromNameCompat(String name) {
|
||||
if(renameMapping.containsKey(name)) {
|
||||
FluidType fluid = renameMapping.get(name);
|
||||
|
||||
if(fluid == null) //null safety never killed nobody
|
||||
fluid = Fluids.NONE;
|
||||
|
||||
return fluid;
|
||||
}
|
||||
|
||||
return fromName(name);
|
||||
}
|
||||
|
||||
/** basically the inverse of the above method */
|
||||
public static String toNameCompat(FluidType type) {
|
||||
if(renameMapping.containsValue(type)) {
|
||||
String name = renameMapping.inverse().get(type);
|
||||
|
||||
if(name == null) //ditto
|
||||
name = Fluids.NONE.getName();
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
return type.getName();
|
||||
}
|
||||
|
||||
public static FluidType[] getAll() {
|
||||
return getInOrder(false);
|
||||
}
|
||||
|
||||
@ -250,10 +250,10 @@ public class FluidTank {
|
||||
maxX += i;
|
||||
maxY += height;
|
||||
|
||||
minV = 0;
|
||||
minV = 0D;
|
||||
maxV = height / 16D;
|
||||
minU = 0D;
|
||||
maxU = width / 16D;
|
||||
minU = 1D;
|
||||
maxU = 1D - i / 16D;
|
||||
}
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
@ -301,7 +301,7 @@ public class FluidTank {
|
||||
|
||||
fluid = MathHelper.clamp_int(fluid, 0, max);
|
||||
|
||||
type = Fluids.fromName(nbt.getString(s + "_type")); //compat
|
||||
type = Fluids.fromNameCompat(nbt.getString(s + "_type")); //compat
|
||||
if(type == Fluids.NONE)
|
||||
type = Fluids.fromID(nbt.getInteger(s + "_type"));
|
||||
|
||||
|
||||
@ -47,10 +47,10 @@ public class GUIMachineArcWelder extends GuiInfoContainer {
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int p = (int) (welder.power * 52 / welder.maxPower);
|
||||
int p = (int) (welder.power * 52 / Math.max(welder.maxPower, 1));
|
||||
drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p);
|
||||
|
||||
int i = welder.progress * 33 / welder.processTime;
|
||||
int i = welder.progress * 33 / Math.max(welder.processTime, 1);
|
||||
drawTexturedModalRect(guiLeft + 72, guiTop + 37, 192, 0, i, 14);
|
||||
|
||||
if(welder.power >= welder.consumption) {
|
||||
|
||||
@ -4,13 +4,10 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerMachineCyclotron;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.AuxButtonPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineCyclotron;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@ -24,25 +21,26 @@ public class GUIMachineCyclotron extends GuiInfoContainer {
|
||||
super(new ContainerMachineCyclotron(invPlayer, tile));
|
||||
cyclotron = tile;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 222;
|
||||
this.xSize = 190;
|
||||
this.ySize = 215;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 72, 7, 52, cyclotron.power, cyclotron.maxPower);
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 168, guiTop + 18, 16, 63, cyclotron.power, cyclotron.maxPower);
|
||||
|
||||
cyclotron.coolant.renderTankInfo(this, mouseX, mouseY, guiLeft + 53, guiTop + 72, 7, 52);
|
||||
cyclotron.amat.renderTankInfo(this, mouseX, mouseY, guiLeft + 134, guiTop + 90, 7, 34);
|
||||
cyclotron.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 81, 34, 7);
|
||||
cyclotron.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 11, guiTop + 90, 34, 7);
|
||||
cyclotron.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 81, 34, 16);
|
||||
|
||||
String[] upgradeText = new String[4];
|
||||
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
|
||||
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
|
||||
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.effectiveness");
|
||||
upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.power");
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 21, guiTop + 75, 8, 8, mouseX, mouseY, upgradeText);
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 49, guiTop + 85, 8, 8, mouseX, mouseY, upgradeText);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -50,38 +48,28 @@ public class GUIMachineCyclotron extends GuiInfoContainer {
|
||||
String name = this.cyclotron.hasCustomInventoryName() ? this.cyclotron.getInventoryName() : I18n.format(this.cyclotron.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 15, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int i) {
|
||||
super.mouseClicked(x, y, i);
|
||||
|
||||
if(guiLeft + 97 <= x && guiLeft + 97 + 18 > x && guiTop + 107 < y && guiTop + 107 + 18 >= y) {
|
||||
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(cyclotron.xCoord, cyclotron.yCoord, cyclotron.zCoord, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int k = (int) cyclotron.getPowerScaled(52);
|
||||
drawTexturedModalRect(guiLeft + 80, guiTop + 124 - k, 212, 52 - k, 7, k);
|
||||
|
||||
int l = cyclotron.getProgressScaled(36);
|
||||
drawTexturedModalRect(guiLeft + 52, guiTop + 26, 176, 0, l, 36);
|
||||
|
||||
if(cyclotron.isOn)
|
||||
drawTexturedModalRect(guiLeft + 97, guiTop + 107, 219, 0, 18, 18);
|
||||
|
||||
this.drawInfoPanel(guiLeft + 21, guiTop + 75, 8, 8, 8);
|
||||
|
||||
cyclotron.coolant.renderTank(guiLeft + 53, guiTop + 124, this.zLevel, 7, 52);
|
||||
cyclotron.amat.renderTank(guiLeft + 134, guiTop + 124, this.zLevel, 7, 34);
|
||||
int k = (int) cyclotron.getPowerScaled(63);
|
||||
drawTexturedModalRect(guiLeft + 168, guiTop + 80 - k, 190, 62 - k, 16, k);
|
||||
|
||||
int l = cyclotron.getProgressScaled(34);
|
||||
drawTexturedModalRect(guiLeft + 48, guiTop + 27, 206, 0, l, 34);
|
||||
|
||||
if(l > 0)
|
||||
drawTexturedModalRect(guiLeft + 172, guiTop + 4, 190, 63, 9, 12);
|
||||
|
||||
this.drawInfoPanel(guiLeft + 49, guiTop + 85, 8, 8, 8);
|
||||
|
||||
cyclotron.tanks[0].renderTank(guiLeft + 11, guiTop + 88, this.zLevel, 34, 7, 1);
|
||||
cyclotron.tanks[1].renderTank(guiLeft + 11, guiTop + 97, this.zLevel, 34, 7, 1);
|
||||
cyclotron.tanks[2].renderTank(guiLeft + 107, guiTop + 97, this.zLevel, 34, 16, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,11 +46,11 @@ public class GUIMachineSolderingStation extends GuiInfoContainer {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int p = (int) (solderer.power * 52 / solderer.maxPower);
|
||||
|
||||
int p = (int) (solderer.power * 52 / Math.max(solderer.maxPower, 1));
|
||||
drawTexturedModalRect(guiLeft + 152, guiTop + 70 - p, 176, 52 - p, 16, p);
|
||||
|
||||
int i = solderer.progress * 33 / solderer.processTime;
|
||||
|
||||
int i = solderer.progress * 33 / Math.max(solderer.processTime, 1);
|
||||
drawTexturedModalRect(guiLeft + 72, guiTop + 28, 192, 0, i, 14);
|
||||
|
||||
if(solderer.power >= solderer.consumption) {
|
||||
|
||||
@ -202,7 +202,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer {
|
||||
|
||||
public void displayStartup() {
|
||||
|
||||
if(numberToDisplay < 888888 && turbinegas.counter < 60) { //48 frames needed to complete
|
||||
if(numberToDisplay < 8888888 && turbinegas.counter < 60) { //48 frames needed to complete
|
||||
|
||||
digitNumber++;
|
||||
if(digitNumber == 9) {
|
||||
@ -220,23 +220,23 @@ public class GUIMachineTurbineGas extends GuiInfoContainer {
|
||||
|
||||
protected void drawPowerMeterDisplay(int number) { //display code
|
||||
|
||||
int firstDigitX = 66;
|
||||
int firstDigitX = 65;
|
||||
int firstDigitY = 62;
|
||||
|
||||
int[] digit = new int[6];
|
||||
int[] digit = new int[7];
|
||||
|
||||
for(int i = 5; i >= 0; i--) { //creates an array of digits that represent the numbers
|
||||
for(int i = 6; i >= 0; i--) { //creates an array of digits that represent the numbers
|
||||
|
||||
digit[i] = (int) (number % 10);
|
||||
|
||||
number = number / 10;
|
||||
|
||||
drawTexturedModalRect(guiLeft + firstDigitX + i * 8, guiTop + 9 + firstDigitY, 194 + digit[i] * 5, 0, 5, 11);
|
||||
drawTexturedModalRect(guiLeft + firstDigitX + i * 7, guiTop + 9 + firstDigitY, 194 + digit[i] * 5, 0, 5, 11);
|
||||
}
|
||||
|
||||
int uselessZeros = 0;
|
||||
|
||||
for(int i = 0; i < 5; i++) { //counts how much zeros there are before the number, to display 57 instead of 000057
|
||||
for(int i = 0; i < 6; i++) { //counts how much zeros there are before the number, to display 57 instead of 000057
|
||||
|
||||
if(digit[i] == 0)
|
||||
uselessZeros++;
|
||||
@ -246,7 +246,7 @@ public class GUIMachineTurbineGas extends GuiInfoContainer {
|
||||
|
||||
for(int i = 0; i < uselessZeros; i++) { //turns off the useless zeros
|
||||
|
||||
drawTexturedModalRect(guiLeft + firstDigitX + i * 8, guiTop + 9 + firstDigitY, 244, 0, 5, 11);
|
||||
drawTexturedModalRect(guiLeft + firstDigitX + i * 7, guiTop + 9 + firstDigitY, 244, 0, 5, 11);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
41
src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java
Normal file
41
src/main/java/com/hbm/inventory/gui/GUIOreSlopper.java
Normal file
@ -0,0 +1,41 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerOreSlopper;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineOreSlopper;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIOreSlopper extends GuiInfoContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_ore_slopper.png");
|
||||
private TileEntityMachineOreSlopper slopper;
|
||||
|
||||
public GUIOreSlopper(InventoryPlayer player, TileEntityMachineOreSlopper slopper) {
|
||||
super(new ContainerOreSlopper(player, slopper));
|
||||
this.slopper = slopper;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 204;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
|
||||
String name = this.slopper.hasCustomInventoryName() ? this.slopper.getInventoryName() : I18n.format(this.slopper.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
@ -65,7 +65,7 @@ public class GUIPWR extends GuiInfoContainer {
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 151, guiTop + 31, 18, 18, x, y, new String[] { "Hull: " + String.format(Locale.US, "%,d", controller.hullHeat) + " / " + String.format(Locale.US, "%,d", controller.hullHeatCapacityBase) + " TU" });
|
||||
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 31, 36, 18, x, y, new String[] { ((int) (controller.progress * 100 / controller.processTime)) + "%" });
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - controller.rodLevel) + "%");
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 52, guiTop + 53, 54, 4, x, y, "Control rod level: " + (100 - (Math.round(controller.rodLevel * 100)/100)) + "%");
|
||||
|
||||
if(controller.typeLoaded != -1 && controller.amountLoaded > 0) {
|
||||
ItemStack display = new ItemStack(ModItems.pwr_fuel, 1, controller.typeLoaded);
|
||||
|
||||
@ -88,7 +88,7 @@ public class GUISILEX extends GuiInfoContainer {
|
||||
|
||||
if(silex.tank.getFill() > 0) {
|
||||
|
||||
if(silex.tank.getTankType() == Fluids.ACID || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) {
|
||||
if(silex.tank.getTankType() == Fluids.PEROXIDE || silex.fluidConversion.containsKey(silex.tank.getTankType()) || SILEXRecipes.getOutput(new ItemStack(ModItems.fluid_icon, 1, silex.tank.getTankType().getID())) != null) {
|
||||
drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 118, 54, 9);
|
||||
} else {
|
||||
drawTexturedModalRect(guiLeft + 7, guiTop + 41, 176, 109, 54, 9);
|
||||
@ -102,7 +102,7 @@ public class GUISILEX extends GuiInfoContainer {
|
||||
drawTexturedModalRect(guiLeft + 26, guiTop + 124 - f, 176, 109 - f, 16, f);
|
||||
|
||||
int i = silex.getFluidScaled(52);
|
||||
drawTexturedModalRect(guiLeft + 8, guiTop + 42, 176, silex.tank.getTankType() == Fluids.ACID ? 43 : 50, i, 7);
|
||||
drawTexturedModalRect(guiLeft + 8, guiTop + 42, 176, silex.tank.getTankType() == Fluids.PEROXIDE ? 43 : 50, i, 7);
|
||||
}
|
||||
|
||||
private void drawWave(int x, int y, int height, int width, float resolution, float freq, int color, float thickness, float mult) {
|
||||
|
||||
@ -11,6 +11,7 @@ import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
@ -54,10 +55,16 @@ public class GUIScreenPreview extends GuiScreen {
|
||||
this.drawTexturedModalRect(res.getScaledWidth_double() / 2D / zoom - 9D, res.getScaledHeight_double() / 2D / zoom - 9D, 5, 87, 18, 18);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
String nameString = Item.itemRegistry.getNameForObject(preview.getItem()) + ", " + preview.getItemDamage();
|
||||
String zoomString = "Zoom: " + zoom;
|
||||
String scaleString = "Windows Scale: " + res.getScaleFactor();
|
||||
this.fontRendererObj.drawString(zoomString, this.width - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height - 20, 0xff0000);
|
||||
this.fontRendererObj.drawString(scaleString, this.width - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height - 10, 0xff0000);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glScaled(0.5, 0.5, 1);
|
||||
this.fontRendererObj.drawString(zoomString, this.width * 2 - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height * 2 - 35, 0xff0000);
|
||||
this.fontRendererObj.drawString(scaleString, this.width * 2 - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height * 2 - 25, 0xff0000);
|
||||
this.fontRendererObj.drawString(nameString, this.width * 2 - this.fontRendererObj.getStringWidth(nameString) - 2, this.height * 2 - 15, 0xff0000);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public void drawTexturedModalRect(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) {
|
||||
|
||||
@ -12,6 +12,7 @@ import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.inventory.OreDictManager;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
@ -24,7 +25,11 @@ import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
@ -37,11 +42,35 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
|
||||
public void registerDefaults() {
|
||||
|
||||
recipes.put(new OreDictStack(KEY_SAND), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(1))));
|
||||
recipes.put(new ComparableStack(Items.flint), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2))));
|
||||
recipes.put(new OreDictStack(QUARTZ.gem()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3))));
|
||||
recipes.put(new OreDictStack(QUARTZ.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 3)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(3))));
|
||||
recipes.put(new OreDictStack(QUARTZ.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 12)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.NUGGET.q(12))));
|
||||
recipes.put(new OreDictStack(FIBER.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2))));
|
||||
recipes.put(new OreDictStack(FIBER.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2))));
|
||||
recipes.put(new OreDictStack(ASBESTOS.ingot()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 4)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(1, 2))));
|
||||
recipes.put(new OreDictStack(ASBESTOS.block()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.nugget_silicon, 40)) .fluid(new MaterialStack(Mats.MAT_SILICON, MaterialShapes.INGOT.q(9, 2))));
|
||||
|
||||
recipes.put(new ComparableStack(ModBlocks.sand_quartz), new ArcFurnaceRecipe().solid(new ItemStack(ModBlocks.glass_quartz)));
|
||||
recipes.put(new OreDictStack(BORAX.dust()), new ArcFurnaceRecipe().solid(new ItemStack(ModItems.powder_boron_tiny, 3)).fluid(new MaterialStack(Mats.MAT_BORON, MaterialShapes.NUGGET.q(3))));
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 2)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type, 3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 2)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type, 3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 2)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ArcFurnaceRecipe().solid(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type, 3)));
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(5)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2))));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(5))));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(1)), ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(1))));
|
||||
|
||||
int i3 = MaterialShapes.INGOT.q(3);
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductAcid1, i3), ItemBedrockOreNew.toFluid(type.byproductAcid2, i3), ItemBedrockOreNew.toFluid(type.byproductAcid3, i3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductSolvent1, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent2, i3), ItemBedrockOreNew.toFluid(type.byproductSolvent3, i3)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ArcFurnaceRecipe().fluidNull(ItemBedrockOreNew.toFluid(type.byproductRad1, i3), ItemBedrockOreNew.toFluid(type.byproductRad2, i3), ItemBedrockOreNew.toFluid(type.byproductRad3, i3)));
|
||||
}
|
||||
|
||||
// Autogen for simple single type items
|
||||
for(NTMMaterial material : Mats.orderedList) {
|
||||
@ -143,7 +172,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
|
||||
public static HashMap getFluidRecipes() {
|
||||
HashMap<Object, Object> recipes = new HashMap<Object, Object>();
|
||||
for(Entry<AStack, ArcFurnaceRecipe> recipe : ArcFurnaceRecipes.recipes.entrySet()) {
|
||||
if(recipe.getValue().fluidOutput != null) {
|
||||
if(recipe.getValue().fluidOutput != null && recipe.getValue().fluidOutput.length > 0) {
|
||||
Object[] out = new Object[recipe.getValue().fluidOutput.length];
|
||||
for(int i = 0; i < out.length; i++) out[i] = ItemScraps.create(recipe.getValue().fluidOutput[i], true);
|
||||
recipes.put(recipe.getKey().copy(), out);
|
||||
@ -236,6 +265,13 @@ public class ArcFurnaceRecipes extends SerializableRecipe {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArcFurnaceRecipe fluidNull(MaterialStack... outputs) {
|
||||
List<MaterialStack> mat = new ArrayList();
|
||||
for(MaterialStack stack : outputs) if(stack != null) mat.add(stack);
|
||||
if(!mat.isEmpty()) this.fluidOutput = mat.toArray(new MaterialStack[0]);
|
||||
return this;
|
||||
}
|
||||
|
||||
public ArcFurnaceRecipe solid(ItemStack output) {
|
||||
this.solidOutput = output;
|
||||
return this;
|
||||
|
||||
@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ItemGenericPart.EnumPartType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
|
||||
@ -37,6 +38,10 @@ public class ArcWelderRecipes extends SerializableRecipe {
|
||||
new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L,
|
||||
new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus)));
|
||||
recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 5_000L,
|
||||
new OreDictStack(AL.plate(), 4), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot())));
|
||||
recipes.add(new ArcWelderRecipe(DictFrame.fromOne(ModItems.part_generic, EnumPartType.LDE), 200, 10_000L,
|
||||
new OreDictStack(TI.plate(), 2), new OreDictStack(FIBER.ingot(), 4), new OreDictStack(ANY_HARDPLASTIC.ingot())));
|
||||
|
||||
//Dense Wires
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L,
|
||||
@ -68,6 +73,8 @@ public class ArcWelderRecipes extends SerializableRecipe {
|
||||
new OreDictStack(CDALLOY.plateCast(), 2)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_TUNGSTEN.id), 1_200, 250_000L, new FluidStack(Fluids.OXYGEN, 1_000),
|
||||
new OreDictStack(W.plateCast(), 2)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_CMB.id), 1_200, 10_000_000L, new FluidStack(Fluids.REFORMGAS, 1_000),
|
||||
new OreDictStack(CMB.plateCast(), 2)));
|
||||
//pre-DFC
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000),
|
||||
new OreDictStack(OSMIRIDIUM.plateCast(), 2)));
|
||||
@ -103,6 +110,12 @@ public class ArcWelderRecipes extends SerializableRecipe {
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3)));
|
||||
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_mapper), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_mapper)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_scanner), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_scanner)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_radar), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_radar)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_laser), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_laser)));
|
||||
recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_resonator), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_resonator)));
|
||||
}
|
||||
|
||||
public static HashMap getRecipes() {
|
||||
|
||||
@ -93,27 +93,17 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_buster_small, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModBlocks.det_cord, 8), },100);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_buster_medium, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModBlocks.det_cord, 4), new ComparableStack(ModBlocks.det_charge, 4), },150);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_buster_large, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModBlocks.det_charge, 8), },200);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new OreDictStack(MINGRADE.wireFine(), 6), new OreDictStack(TI.plate(), 24), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED) },300);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 12), new OreDictStack(PU239.ingot(), 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(BE.ingot(), 4), new OreDictStack(LI.ingot(), 4), new ComparableStack(ModItems.cell_deuterium, 6), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED) },500);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_nuclear, 1), new AStack[] {new ComparableStack(ModItems.boy_shielding, 1), new ComparableStack(ModItems.boy_target, 1), new ComparableStack(ModItems.boy_bullet, 1), new ComparableStack(ModItems.boy_propellant, 1), new OreDictStack(TI.plateCast(), 12), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER) },300);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_mirv, 1), new AStack[] {new OreDictStack(TI.plateCast(), 12), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.man_core, 1), new ComparableStack(ModItems.ball_tatb, 8), new OreDictStack(LI.ingot(), 8), new OreDictStack(Fluids.DEUTERIUM.getDict(1_000), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER_ADVANCED) },500);
|
||||
makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit, 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.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new OreDictStack(TI.shell(), 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new OreDictStack(CU.plateCast(), 12), new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC.ordinal()), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new OreDictStack(STEEL.shell(), 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 6), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.plate_desh, 6), new ComparableStack(ModItems.magnetron, 6), new ComparableStack(ModItems.coil_advanced_torus, 2), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(RUBBER.ingot(), 6), new ComparableStack(Items.diamond, 1), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 32), new ComparableStack(ModItems.magnetron, 12), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(MINGRADE.wireFine(), 16), new ComparableStack(ModItems.coil_gold, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()), new ComparableStack(Items.diamond, 1), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(W.ingot(), 16), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(RUBBER.ingot(), 16), new OreDictStack(CU.plateCast(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack(REDSTONE.dust(), 16), new ComparableStack(Items.diamond, 5), new ComparableStack(Blocks.glass_pane, 16), },450);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 32), new OreDictStack(ANY_PLASTIC.ingot(), 48), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModItems.crystal_xen, 1), new OreDictStack(STAR.ingot(), 7), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED) },1000);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.plate_desh, 8), new OreDictStack(TI.shell(), 3), 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(ModItems.battery_lithium_cell_6, 1), },1200);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {new OreDictStack(BIGMT.plate(), 24), new ComparableStack(ModItems.plate_desh, 8), new ComparableStack(ModItems.motor, 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(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },600);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {new ComparableStack(ModItems.ingot_meteorite, 4), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.motor_desh, 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(ModItems.magnetron, 3), new OreDictStack(RUBBER.ingot(), 12), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },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.crt_display, 8), new AStack[] {new OreDictStack(AL.dust(), 2), new ComparableStack(Blocks.glass_pane, 2), new OreDictStack(W.wireFine(), 4), new OreDictStack(STEEL.shell(), 1) }, 100);
|
||||
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);
|
||||
@ -131,7 +121,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.cmb_brick_reinforced, 8), new AStack[] {new ComparableStack(ModBlocks.block_magnetized_tungsten, 4), new ComparableStack(ModBlocks.brick_concrete, 4), new ComparableStack(ModBlocks.cmb_brick, 1), new OreDictStack(STEEL.plate(), 4), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.seal_frame, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(AL.wireFine(), 4), new OreDictStack(REDSTONE.dust(), 2), new ComparableStack(ModBlocks.steel_roof, 5), },50);
|
||||
makeRecipe(new ComparableStack(ModBlocks.seal_controller, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 3), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(MINGRADE.ingot(), 1), new OreDictStack(REDSTONE.dust(), 4), new ComparableStack(ModBlocks.steel_roof, 5), },100);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.VACUUM_TUBE.ordinal()), }, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), }, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()) }, 300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new OreDictStack(STEEL.shell(), 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.plateCast(), 1), new ComparableStack(ModItems.coil_copper, 4), }, 60);
|
||||
@ -141,14 +131,14 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_battery, 1), new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(NP237.dust(), 12), new OreDictStack(SA326.dust(), 12), new OreDictStack(SA326.ingot(), 2), new OreDictStack(SA326.wireFine(), 4), },800);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_dineutronium_battery, 1), new AStack[] {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), new ComparableStack(ModItems.coil_magnetized_tungsten, 8), },1600);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_shredder, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModBlocks.steel_beam, 2), new ComparableStack(Blocks.iron_bars, 2) },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1), new OreDictStack(MINGRADE.wireFine(), 6), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.drill_titanium, 1) }, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.plateWelded(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor_desh) }, 400);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(STEEL.shell(), 4), new ComparableStack(ModItems.thermo_element, 3), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 2), new OreDictStack(IRON.ingot(), 16), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.VACUUM_TUBE.ordinal()) },350);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {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.ordinal()) }, 100);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), new ComparableStack(ModItems.plate_polymer, 8), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new OreDictStack(STEEL.shell(), 4), new OreDictStack(STEEL.pipe(), 8), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.plateWelded(), 4), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC.ordinal()), },400);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {!exp ? new OreDictStack(STEEL.plateWelded(), 3) : new OreDictStack(STEEL.heavyComp(), 1), new OreDictStack(CU.plate528(), 16), new OreDictStack(STEEL.shell(), 6), new OreDictStack(STEEL.pipe(), 12), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ANALOG) },350);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {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) }, 100);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ANALOG), new ComparableStack(ModItems.plate_polymer, 8), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {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), },200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new OreDictStack(STEEL.shell(), 4), new OreDictStack(ANY_TAR.any(), 4), },150);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_bat9000, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 2), new ComparableStack(ModBlocks.steel_scaffold, 16), new OreDictStack(ANY_TAR.any(), 16), },150);
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_orbus, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 8), new OreDictStack(BIGMT.plate(), 12), new ComparableStack(ModItems.coil_advanced_alloy, 12), new ComparableStack(ModItems.battery_sc_polonium, 1) }, 200);
|
||||
@ -164,20 +154,20 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateWelded()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plateWelded(), 2), }, 100);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.fins_flat, 2), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 6), new OreDictStack("dyeGray", 6), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(AL.wireFine(), 6), new OreDictStack("dyeBlue", 4), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_big_steel, 1), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.ADVANCED), new OreDictStack(CU.wireFine(), 6), new OreDictStack("dyeYellow", 6), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_mike, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new OreDictStack(AL.plate(), 3), new ComparableStack(ModItems.circuit, 10, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 18), new OreDictStack("dyeLightGray", 12), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_tsar, 1), new AStack[] {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, 4, EnumCircuitType.BISMOID), new OreDictStack(GOLD.wireFine(), 24), new OreDictStack(W.wireFine(), 12), new OreDictStack("dyeBlack", 6), },600);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_prototype, 1), new AStack[] {new ComparableStack(ModItems.dysfunctional_reactor, 1), new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.ingot_euphemium, 3), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), new OreDictStack(GOLD.wireFine(), 16), },500);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_fleija, 1), new AStack[] {new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 8), new OreDictStack("dyeWhite", 4), },400);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_solinium, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.ADVANCED), new OreDictStack(GOLD.wireFine(), 10), new OreDictStack(STEEL.pipe(), 16), new OreDictStack("dyeGray", 4), },400);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_n2, 1), new AStack[] {new OreDictStack(STEEL.shell(), 6), new OreDictStack(MAGTUNG.wireFine(), 12), new OreDictStack(STEEL.pipe(), 16), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new OreDictStack("dyeBlack", 12), },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 OreDictStack(GOLD.wireFine(), 12), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED), new OreDictStack("dyeGray", 6), },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, 4, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(GOLD.wireFine(), 12), 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.ordinal()), new OreDictStack(GOLD.wireFine(), 6), },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.ordinal()), 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.ordinal()), new ComparableStack(ModItems.coil_gold, 4), },250);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_gadget, 1), new AStack[] {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("dyeGray", 8), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_boy, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_small_steel, 1), new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER), new OreDictStack("dyeBlue", 4), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_man, 1), new AStack[] {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("dyeYellow", 6), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_mike, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(AL.shell(), 4), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), new OreDictStack("dyeLightGray", 16), },300);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_tsar, 1), new AStack[] {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("dyeBlack", 8), },600);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_prototype, 1), new AStack[] {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) },500);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_fleija, 1), new AStack[] {new OreDictStack(AL.shell(), 1), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack("dyeWhite", 4), },400);
|
||||
makeRecipe(new ComparableStack(ModBlocks.nuke_solinium, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new ComparableStack(ModItems.fins_quad_titanium, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER), new OreDictStack("dyeGray", 8), },400);
|
||||
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.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.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200);
|
||||
makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50);
|
||||
@ -265,12 +255,109 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.mp_warhead_15_nuclear, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 24), new OreDictStack(TI.plate(), 12), new OreDictStack(PU239.ingot(), 3), new ComparableStack(ModBlocks.det_charge, 6), new ComparableStack(ModItems.circuit, 5, EnumCircuitType.ADVANCED), },500);
|
||||
makeRecipe(new ComparableStack(ModItems.mp_warhead_15_n2, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(STEEL.plate(), 8), new OreDictStack(TI.plate(), 20), new ComparableStack(ModBlocks.det_charge, 24), new ComparableStack(Blocks.redstone_block, 12), new OreDictStack(MAGTUNG.dust(), 6), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), },400);
|
||||
makeRecipe(new ComparableStack(ModItems.mp_warhead_15_balefire, 1), new AStack[] {new ComparableStack(ModItems.seg_15, 1), new OreDictStack(OreDictManager.getReflector(), 16), new ComparableStack(ModItems.powder_magic, 6), new ComparableStack(ModItems.egg_balefire_shard, 4), new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 8), new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), }, 60, ModItems.journal_bj);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 40), new ComparableStack(ModBlocks.det_cord, 20), new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.thruster_small, 12), new ComparableStack(ModItems.tank_steel, 10), new ComparableStack(ModItems.circuit, 32, EnumCircuitType.ADVANCED), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.fins_small_steel, 4), new OreDictStack(TI.shell(), 32), new OreDictStack(STEEL.shell(), 18), new OreDictStack(FIBER.ingot(), 64), },600);
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {new ComparableStack(ModItems.rocket_fuel, 10), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new OreDictStack(ANY_RUBBER.ingot(), 32), new OreDictStack(AL.shell(), 2), new ComparableStack(ModItems.sphere_steel, 1), new OreDictStack(FIBER.ingot(), 12), },600, ModItems.journal_bj);
|
||||
makeRecipe(new ComparableStack(ModItems.fusion_shield_tungsten, 1), new AStack[] {new OreDictStack(W.block(), 32), new OreDictStack(OreDictManager.getReflector(), 96)}, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.fusion_shield_desh, 1), new AStack[] {new OreDictStack(DESH.block(), 16), new OreDictStack(CO.block(), 16), new OreDictStack(BIGMT.plate(), 96)}, 600);
|
||||
makeRecipe(new ComparableStack(ModItems.fusion_shield_chlorophyte, 1), new AStack[] {new OreDictStack(W.block(), 16), new OreDictStack(DURA.block(), 16), new OreDictStack(OreDictManager.getReflector(), 48), new ComparableStack(ModItems.powder_chlorophyte, 48)}, 600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz, 1), new AStack[] {
|
||||
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)
|
||||
},600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.missile_soyuz_lander, 1), new AStack[] {
|
||||
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)
|
||||
},600, ModItems.journal_bj);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {
|
||||
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)
|
||||
},500);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8),
|
||||
},400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_scanner, 1), new AStack[] {
|
||||
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())
|
||||
},400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_radar, 1), new AStack[] {
|
||||
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())
|
||||
},400);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_laser, 1), new AStack[] {
|
||||
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)
|
||||
},450);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_head_resonator, 1), new AStack[] {
|
||||
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)
|
||||
},1000);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_foeq, 1), new AStack[] {
|
||||
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)
|
||||
},1200);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_miner, 1), new AStack[] {
|
||||
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)
|
||||
},600);
|
||||
makeRecipe(new ComparableStack(ModItems.sat_lunar_miner, 1), new AStack[] {
|
||||
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)
|
||||
},600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.upgrade_overdrive_1, 1), new AStack[] {
|
||||
new ComparableStack(ModItems.upgrade_speed_3, 1),
|
||||
@ -511,30 +598,26 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.STOCK.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(CU.plate(), 1),
|
||||
new ComparableStack(ModItems.casing_50, 5),
|
||||
new OreDictStack(STEEL.plate(), 4),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 2),
|
||||
new ComparableStack(ModItems.cordite, 3),
|
||||
new OreDictStack(U238.ingot(), 1)
|
||||
}, 60);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.INCENDIARY.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(CU.plate(), 1),
|
||||
new ComparableStack(ModItems.casing_50, 5),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 3),
|
||||
new OreDictStack(STEEL.plate(), 4),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 2),
|
||||
new ComparableStack(ModItems.cordite, 3),
|
||||
new OreDictStack(P_WHITE.ingot(), 3)
|
||||
}, 60);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_75bolt, 2, ItemAmmoEnums.Ammo75Bolt.HE.ordinal()), new AStack[] {
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(CU.plate(), 1),
|
||||
new ComparableStack(ModItems.casing_50, 5),
|
||||
new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 5),
|
||||
new ComparableStack(ModItems.cordite, 5),
|
||||
new OreDictStack(REDSTONE.dust(), 3)
|
||||
new OreDictStack(STEEL.plate(), 4),
|
||||
new OreDictStack(ANY_PLASTICEXPLOSIVE.ingot(), 2),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 5),
|
||||
new ComparableStack(ModItems.cordite, 5)
|
||||
}, 60);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.spawn_worm, 1), new AStack[] {
|
||||
@ -738,7 +821,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new ComparableStack(ModItems.rocket_fuel, 48),
|
||||
new ComparableStack(ModItems.ball_tatb, 32),
|
||||
new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 12),
|
||||
new OreDictStack(Fluids.ACID.getDict(1_000), 12),
|
||||
new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 12),
|
||||
new ComparableStack(ModItems.circuit, 6, EnumCircuitType.BASIC)
|
||||
}, 100);
|
||||
makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_MINI_NUKE), new AStack[] {
|
||||
@ -771,7 +854,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new ComparableStack(ModItems.rocket_fuel, 36),
|
||||
new ComparableStack(ModItems.ball_tatb, 24),
|
||||
new OreDictStack(Fluids.KEROSENE_REFORM.getDict(1_000), 16),
|
||||
new OreDictStack(Fluids.ACID.getDict(1_000), 16),
|
||||
new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16),
|
||||
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED),
|
||||
}, 100);
|
||||
|
||||
@ -1122,8 +1205,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] {
|
||||
new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
!exp ? new OreDictStack(STEEL.shell(), 4) : new OreDictStack(STEEL.heavyComp()),
|
||||
new ComparableStack(ModItems.tank_steel, 3),
|
||||
!exp ? new OreDictStack(STEEL.shell(), 6) : new OreDictStack(STEEL.heavyComp()),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 4),
|
||||
new OreDictStack(NB.ingot(), 2),
|
||||
new ComparableStack(ModItems.catalyst_clay, 12),
|
||||
@ -1133,10 +1215,10 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new OreDictStack(STEEL.ingot(), 8),
|
||||
new OreDictStack(CU.plate528(), 12),
|
||||
new OreDictStack(ANY_TAR.any(), 8),
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR),
|
||||
new ComparableStack(ModItems.catalyst_clay, 4),
|
||||
new ComparableStack(ModItems.coil_tungsten, 8),
|
||||
new ComparableStack(ModItems.tank_steel, 2)
|
||||
new ComparableStack(ModItems.coil_tungsten, 8)
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] {
|
||||
@ -1146,8 +1228,7 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.CAPACITOR),
|
||||
new ComparableStack(ModItems.catalyst_clay, 4),
|
||||
new ComparableStack(ModItems.coil_copper, 4),
|
||||
new ComparableStack(ModItems.tank_steel, 2)
|
||||
new ComparableStack(ModItems.coil_copper, 4)
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] {
|
||||
@ -1188,26 +1269,21 @@ public class AssemblerRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModBlocks.silo_hatch, 1), new AStack[]{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)}, 200);
|
||||
makeRecipe(new ComparableStack(ModBlocks.silo_hatch_large, 1), new AStack[]{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)}, 200);
|
||||
|
||||
if(Loader.isModLoaded("Mekanism")) {
|
||||
if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) {
|
||||
|
||||
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
|
||||
|
||||
if(mb != null) {
|
||||
|
||||
makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] {
|
||||
new OreDictStack(DURA.ingot(), 16),
|
||||
new OreDictStack(DESH.ingot(), 16),
|
||||
new OreDictStack(STEEL.plateWelded(), 32),
|
||||
new OreDictStack(CU.plateWelded(), 24),
|
||||
new ComparableStack(ModItems.pipes_steel, 8),
|
||||
new OreDictStack(BIGMT.plateCast(), 16),
|
||||
new OreDictStack(CU.plateWelded(), 12),
|
||||
new OreDictStack("alloyUltimate", 32),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
|
||||
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id),
|
||||
new ComparableStack(ModBlocks.fusion_conductor, 12),
|
||||
new ComparableStack(ModBlocks.capacitor_tantalium, 53),
|
||||
new ComparableStack(ModItems.crystal_redstone, 16),
|
||||
new ComparableStack(ModItems.crystal_diamond, 8),
|
||||
new ComparableStack(ModItems.motor_bismuth, 4)
|
||||
}, 15 * 60 * 20);
|
||||
new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_BOARD),
|
||||
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_GOLD.id),
|
||||
new ComparableStack(ModItems.motor_bismuth, 3)
|
||||
}, 1200);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumChunkType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.special.ItemByproduct.EnumByproduct;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
@ -509,6 +512,40 @@ public class CentrifugeRecipes extends SerializableRecipe {
|
||||
ItemStackUtil.carefulCopy(by3) });
|
||||
}
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type), new ItemStack(Blocks.gravel)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type), ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type), ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new ItemStack[] {ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type), ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.primary1), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.extract(type.primary2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type, 2)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1), ItemBedrockOreNew.extract(type.byproductAcid2), ItemBedrockOreNew.extract(type.byproductAcid3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductAcid1, 2), ItemBedrockOreNew.extract(type.byproductAcid2, 2), ItemBedrockOreNew.extract(type.byproductAcid3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1), ItemBedrockOreNew.extract(type.byproductSolvent2), ItemBedrockOreNew.extract(type.byproductSolvent3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductSolvent1, 2), ItemBedrockOreNew.extract(type.byproductSolvent2, 2), ItemBedrockOreNew.extract(type.byproductSolvent3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1), ItemBedrockOreNew.extract(type.byproductRad2), ItemBedrockOreNew.extract(type.byproductRad3), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type)), new ItemStack[] {ItemBedrockOreNew.extract(type.byproductRad1, 2), ItemBedrockOreNew.extract(type.byproductRad2, 2), ItemBedrockOreNew.extract(type.byproductRad3, 2), ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)});
|
||||
}
|
||||
|
||||
List<ItemStack> quartz = OreDictionary.getOres("crystalCertusQuartz");
|
||||
|
||||
if(quartz != null && !quartz.isEmpty()) {
|
||||
|
||||
@ -64,11 +64,13 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
.outputFluids(new FluidStack(Fluids.NITAN, 1000)));
|
||||
recipes.add(new ChemRecipe(40, "PEROXIDE", 50)
|
||||
.inputFluids(new FluidStack(Fluids.WATER, 1000))
|
||||
.outputFluids(new FluidStack(Fluids.ACID, 800)));
|
||||
.outputFluids(new FluidStack(Fluids.PEROXIDE, 800)));
|
||||
recipes.add(new ChemRecipe(90, "SULFURIC_ACID", 50)
|
||||
.inputItems(new OreDictStack(S.dust()))
|
||||
.inputFluids(new FluidStack(Fluids.ACID, 800))
|
||||
.outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500)));
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.PEROXIDE, 800),
|
||||
new FluidStack(Fluids.WATER, 1_000))
|
||||
.outputFluids(new FluidStack(Fluids.SULFURIC_ACID, 2_000)));
|
||||
recipes.add(new ChemRecipe(92, "NITRIC_ACID", 50)
|
||||
.inputItems(new OreDictStack(KNO.dust()))
|
||||
.inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 500))
|
||||
@ -142,7 +144,7 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
.inputItems(
|
||||
new OreDictStack(U.billet(), 2), //12 nuggets: the numbers do match up :)
|
||||
new OreDictStack(S.dust(), 2))
|
||||
.inputFluids(new FluidStack(Fluids.ACID, 500))
|
||||
.inputFluids(new FluidStack(Fluids.PEROXIDE, 500))
|
||||
.outputItems(new ItemStack(ModItems.powder_yellowcake)));
|
||||
recipes.add(new ChemRecipe(47, "UF6", 100)
|
||||
.inputItems(
|
||||
@ -161,7 +163,7 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
.inputItems(
|
||||
new OreDictStack(SA326.dust()),
|
||||
new OreDictStack(S.dust(), 2))
|
||||
.inputFluids(new FluidStack(Fluids.ACID, 2000))
|
||||
.inputFluids(new FluidStack(Fluids.PEROXIDE, 2000))
|
||||
.outputFluids(new FluidStack(Fluids.SAS3, 1000)));
|
||||
recipes.add(new ChemRecipe(53, "CORDITE", 40)
|
||||
.inputItems(
|
||||
@ -236,7 +238,7 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
.inputItems(new ComparableStack(ModItems.pellet_charged))
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.SAS3, 8000),
|
||||
new FluidStack(Fluids.ACID, 6000))
|
||||
new FluidStack(Fluids.PEROXIDE, 6000))
|
||||
.outputFluids(new FluidStack(Fluids.SCHRABIDIC, 16000)));
|
||||
recipes.add(new ChemRecipe(64, "SCHRABIDATE", 150)
|
||||
.inputItems(new OreDictStack(IRON.dust()))
|
||||
@ -247,7 +249,7 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
new OreDictStack(COLTAN.dust(), 2),
|
||||
new OreDictStack(COAL.dust()))
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.ACID, 250),
|
||||
new FluidStack(Fluids.PEROXIDE, 250),
|
||||
new FluidStack(Fluids.HYDROGEN, 500))
|
||||
.outputItems(
|
||||
new ItemStack(ModItems.powder_coltan),
|
||||
@ -265,7 +267,7 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
recipes.add(new ChemRecipe(67, "COLTAN_CRYSTAL", 80)
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.PAIN, 1000),
|
||||
new FluidStack(Fluids.ACID, 500))
|
||||
new FluidStack(Fluids.PEROXIDE, 500))
|
||||
.outputItems(
|
||||
new ItemStack(ModItems.gem_tantalium),
|
||||
new ItemStack(ModItems.dust, 3))
|
||||
@ -328,8 +330,8 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
new ComparableStack(ModItems.powder_paleogenite),
|
||||
new OreDictStack(F.dust(), 8),
|
||||
new ComparableStack(ModItems.nugget_bismuth, 4))
|
||||
.inputFluids(new FluidStack(Fluids.ACID, 1000, 5))
|
||||
.outputFluids(new FluidStack(Fluids.DEATH, 1000, GeneralConfig.enable528 ? 5 : 0)));
|
||||
.inputFluids(new FluidStack(Fluids.PEROXIDE, 1000, 5))
|
||||
.outputFluids(new FluidStack(Fluids.DEATH, 1000, 0)));
|
||||
//one bucket of ethanol equals 275_000 TU using the diesel baseline0
|
||||
//the coal baseline is 400_000 per piece
|
||||
//if we assume a burntime of 1.5 ops (300 ticks) for sugar at 100 TU/t that would equal a total of 30_000 TU
|
||||
@ -342,7 +344,7 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
new ComparableStack(Items.dye, 2, 3))
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.LUBRICANT, 400),
|
||||
new FluidStack(Fluids.ACID, 400))
|
||||
new FluidStack(Fluids.PEROXIDE, 400))
|
||||
.outputItems(new ItemStack(ModItems.chocolate, 4)));
|
||||
recipes.add(new ChemRecipe(77, "CO2", 60)
|
||||
.inputFluids(new FluidStack(Fluids.GAS, 1000))
|
||||
|
||||
@ -24,6 +24,9 @@ import com.hbm.items.ItemEnums.EnumCokeType;
|
||||
import com.hbm.items.ItemEnums.EnumTarType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.util.Tuple.Pair;
|
||||
|
||||
import net.minecraft.init.Blocks;
|
||||
@ -63,6 +66,14 @@ public class CombinationRecipes extends SerializableRecipe {
|
||||
|
||||
recipes.put(new ComparableStack(Items.reeds), new Pair(new ItemStack(Items.sugar, 2), new FluidStack(Fluids.ETHANOL, 50)));
|
||||
recipes.put(new ComparableStack(Blocks.clay), new Pair(new ItemStack(Blocks.brick_block, 1), null));
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new Pair(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type), new FluidStack(Fluids.VITRIOL, 50)));
|
||||
}
|
||||
}
|
||||
|
||||
public static Pair<ItemStack, FluidStack> getOutput(ItemStack stack) {
|
||||
|
||||
@ -108,6 +108,10 @@ public class CrucibleRecipes extends SerializableRecipe {
|
||||
.inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3))
|
||||
.outputs(new MaterialStack(Mats.MAT_CMB, i)));
|
||||
|
||||
recipes.add(new CrucibleRecipe(16, "crucible.magtung", 3, new ItemStack(ModItems.ingot_magnetized_tungsten))
|
||||
.inputs(new MaterialStack(Mats.MAT_TUNGSTEN, i), new MaterialStack(Mats.MAT_SCHRABIDIUM, n * 1))
|
||||
.outputs(new MaterialStack(Mats.MAT_MAGTUNG, i)));
|
||||
|
||||
registerMoldsForNEI();
|
||||
}
|
||||
|
||||
|
||||
@ -25,7 +25,10 @@ import com.hbm.items.ItemEnums.EnumTarType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemChemicalDye.EnumChemDye;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.special.ItemPlasticScrap.ScrapType;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.Tuple.Pair;
|
||||
@ -82,8 +85,9 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime), sulfur);
|
||||
registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime));
|
||||
registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime));
|
||||
|
||||
registerRecipe("sand", new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime));
|
||||
|
||||
registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime));
|
||||
registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250));
|
||||
registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime));
|
||||
registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime));
|
||||
registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime), sulfur);
|
||||
@ -132,6 +136,59 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_deepcleaned, 1, i), oreTime), organic);
|
||||
registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_seared, 1, i), oreTime), hiperf);
|
||||
}
|
||||
|
||||
int bedrock = 200;
|
||||
int washing = 100;
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.BASE_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type), bedrock), new FluidStack(Fluids.SULFURIC_ACID, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type), bedrock), new FluidStack(Fluids.SOLVENT, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type), bedrock), new FluidStack(Fluids.RADIOSOLVENT, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SULFURIC_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.SOLVENT_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_BYPRODUCT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.RAD_ARC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.RAD_WASHED, type), washing), new FluidStack(Fluids.WATER, 250));
|
||||
|
||||
FluidStack primary = new FluidStack(Fluids.HYDROGEN, 250);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type), bedrock), primary);
|
||||
|
||||
FluidStack secondary = new FluidStack(Fluids.CHLORINE, 250);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_ROASTED, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSULFURIC, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NOSOLVENT, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_RAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_NORAD, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type), bedrock), secondary);
|
||||
|
||||
registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000));
|
||||
}
|
||||
|
||||
FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)};
|
||||
for(FluidStack dye : dyes) {
|
||||
@ -226,7 +283,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
}
|
||||
|
||||
public static void registerRecipe(Object input, CrystallizerRecipe recipe) {
|
||||
registerRecipe(input, recipe, new FluidStack(Fluids.ACID, 500));
|
||||
registerRecipe(input, recipe, new FluidStack(Fluids.PEROXIDE, 500));
|
||||
}
|
||||
|
||||
public static void registerRecipe(Object input, CrystallizerRecipe recipe, FluidStack stack) {
|
||||
|
||||
@ -21,6 +21,9 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemFluidIcon;
|
||||
import com.hbm.items.machine.ItemScraps;
|
||||
import com.hbm.items.special.ItemBedrockOreNew;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreGrade;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -128,6 +131,33 @@ public class ElectrolyserMetalRecipes extends SerializableRecipe {
|
||||
new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(4)),
|
||||
new ItemStack(ModItems.powder_copper, 4),
|
||||
new ItemStack(ModItems.powder_lithium_tiny, 3)));
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
|
||||
MaterialStack f0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(7));
|
||||
MaterialStack f1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(4));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_FIRST, type)), new ElectrolysisMetalRecipe(
|
||||
f0 != null ? f0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
f1 != null ? f1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
f0 == null ? ItemBedrockOreNew.extract(type.primary1, 7) : new ItemStack(ModItems.dust),
|
||||
f1 == null ? ItemBedrockOreNew.extract(type.primary2, 4) : new ItemStack(ModItems.dust)));
|
||||
|
||||
MaterialStack s0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(4));
|
||||
MaterialStack s1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(7));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.PRIMARY_SECOND, type)), new ElectrolysisMetalRecipe(
|
||||
s0 != null ? s0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
s1 != null ? s1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1)),
|
||||
s0 == null ? ItemBedrockOreNew.extract(type.primary1, 4) : new ItemStack(ModItems.dust),
|
||||
s1 == null ? ItemBedrockOreNew.extract(type.primary2, 7) : new ItemStack(ModItems.dust)));
|
||||
|
||||
MaterialStack c0 = ItemBedrockOreNew.toFluid(type.primary1, MaterialShapes.INGOT.q(2));
|
||||
MaterialStack c1 = ItemBedrockOreNew.toFluid(type.primary2, MaterialShapes.INGOT.q(2));
|
||||
recipes.put(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new ElectrolysisMetalRecipe(
|
||||
c0 != null ? c0 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
|
||||
c1 != null ? c1 : new MaterialStack(Mats.MAT_SLAG, MaterialShapes.INGOT.q(1, 2)),
|
||||
c0 == null ? ItemBedrockOreNew.extract(type.primary1, 2) : new ItemStack(ModItems.dust),
|
||||
c1 == null ? ItemBedrockOreNew.extract(type.primary2, 2) : new ItemStack(ModItems.dust)));
|
||||
}
|
||||
}
|
||||
|
||||
public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) {
|
||||
|
||||
@ -55,10 +55,10 @@ public class MixerRecipes extends SerializableRecipe {
|
||||
new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_CRACK, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)),
|
||||
new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_DS, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)),
|
||||
new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA_COKER, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500)));
|
||||
register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust())));
|
||||
register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.PEROXIDE, 800)).setSolid(new OreDictStack(S.dust())));
|
||||
register(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust())));
|
||||
register(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)));
|
||||
register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged)));
|
||||
register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.PEROXIDE, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged)));
|
||||
|
||||
register(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200)));
|
||||
register(Fluids.LUBRICANT,
|
||||
|
||||
@ -47,7 +47,7 @@ public class RadiolysisRecipes {
|
||||
}
|
||||
|
||||
public static void registerRadiolysis() {
|
||||
radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.ACID), new FluidStack(20, Fluids.HYDROGEN)));
|
||||
radiolysis.put(Fluids.WATER, new Pair(new FluidStack(80, Fluids.PEROXIDE), new FluidStack(20, Fluids.HYDROGEN)));
|
||||
|
||||
//automatically add cracking recipes to the radiolysis recipe list
|
||||
//we want the numbers and types to stay consistent anyway and this will save us a lot of headache later on
|
||||
|
||||
@ -207,6 +207,7 @@ public class ShredderRecipes extends SerializableRecipe {
|
||||
ShredderRecipes.setRecipe(ModItems.can_empty, new ItemStack(ModItems.powder_aluminium, 2));
|
||||
ShredderRecipes.setRecipe(ModBlocks.machine_well, new ItemStack(ModItems.powder_steel, 32));
|
||||
ShredderRecipes.setRecipe(DictFrame.fromOne(ModItems.chunk_ore, EnumChunkType.RARE), new ItemStack(ModItems.powder_desh_mix));
|
||||
ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2));
|
||||
|
||||
List<ItemStack> logs = OreDictionary.getOres("logWood");
|
||||
List<ItemStack> planks = OreDictionary.getOres("plankWood");
|
||||
@ -215,13 +216,6 @@ public class ShredderRecipes extends SerializableRecipe {
|
||||
for(ItemStack log : logs) ShredderRecipes.setRecipe(log, new ItemStack(ModItems.powder_sawdust, 4));
|
||||
for(ItemStack plank : planks) ShredderRecipes.setRecipe(plank, new ItemStack(ModItems.powder_sawdust, 1));
|
||||
for(ItemStack sapling : saplings) ShredderRecipes.setRecipe(sapling, new ItemStack(Items.stick, 1));
|
||||
|
||||
List<ItemStack> silicon = OreDictionary.getOres("itemSilicon");
|
||||
if(!silicon.isEmpty()) {
|
||||
ShredderRecipes.setRecipe(Blocks.sand, silicon.get(0).copy());
|
||||
} else {
|
||||
ShredderRecipes.setRecipe(Blocks.sand, new ItemStack(ModItems.dust, 2));
|
||||
}
|
||||
|
||||
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
|
||||
int i = ore.ordinal();
|
||||
@ -289,7 +283,7 @@ public class ShredderRecipes extends SerializableRecipe {
|
||||
ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1));
|
||||
ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3));
|
||||
ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27));
|
||||
ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 32));
|
||||
ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 16));
|
||||
|
||||
/* Sellafite scrapping */
|
||||
ShredderRecipes.setRecipe(ModBlocks.sellafield_slaked, new ItemStack(Blocks.gravel));
|
||||
|
||||
@ -8,7 +8,9 @@ import java.util.List;
|
||||
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
@ -29,6 +31,12 @@ public class SolderingRecipes extends SerializableRecipe {
|
||||
@Override
|
||||
public void registerDefaults() {
|
||||
|
||||
boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting;
|
||||
|
||||
/*
|
||||
* CIRCUITS
|
||||
*/
|
||||
|
||||
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), 100, 100,
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.VACUUM_TUBE),
|
||||
@ -51,7 +59,7 @@ public class SolderingRecipes extends SerializableRecipe {
|
||||
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), 300, 1_000,
|
||||
new FluidStack(Fluids.SULFURIC_ACID, 1_000),
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP),
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR)},
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.PCB),
|
||||
@ -61,7 +69,7 @@ public class SolderingRecipes extends SerializableRecipe {
|
||||
));
|
||||
|
||||
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal()), 200, 300,
|
||||
new FluidStack(Fluids.ACID, 250),
|
||||
new FluidStack(Fluids.PEROXIDE, 250),
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CAPACITOR_TANTALIUM)},
|
||||
new AStack[] {
|
||||
@ -74,14 +82,42 @@ public class SolderingRecipes extends SerializableRecipe {
|
||||
new FluidStack(Fluids.SOLVENT, 1_000),
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CHIP_BISMOID),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP),
|
||||
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.CAPACITOR)},
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CHIP),
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 8 : 24, EnumCircuitType.CAPACITOR)},
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.PCB),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 2)},
|
||||
new AStack[] {
|
||||
new OreDictStack(PB.wireFine(), 12)}
|
||||
));
|
||||
|
||||
/*
|
||||
* COMPUTERS
|
||||
*/
|
||||
|
||||
// a very, very vague guess on what the recipes should be. testing still needed, upgrade requirements are likely to change. maybe inclusion of caesium?
|
||||
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER.ordinal()), 400, 15_000,
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CHIP),
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR),
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CAPACITOR_TANTALIUM)},
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS),
|
||||
new ComparableStack(ModItems.upgrade_speed_1)},
|
||||
new AStack[] {
|
||||
new OreDictStack(PB.wireFine(), 16)}
|
||||
));
|
||||
recipes.add(new SolderingRecipe(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()), 600, 25_000,
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 8 : 16, EnumCircuitType.CHIP_BISMOID),
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 16 : 48, EnumCircuitType.CAPACITOR),
|
||||
new ComparableStack(ModItems.circuit, lbsm ? 8 : 32, EnumCircuitType.CAPACITOR_TANTALIUM)},
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_CHASSIS),
|
||||
new ComparableStack(ModItems.upgrade_speed_3)},
|
||||
new AStack[] {
|
||||
new OreDictStack(PB.wireFine(), 24)}
|
||||
));
|
||||
|
||||
/*
|
||||
* UPGRADES
|
||||
@ -136,17 +172,19 @@ public class SolderingRecipes extends SerializableRecipe {
|
||||
}
|
||||
|
||||
public static void addFirstUpgrade(Item lower, Item higher) {
|
||||
boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting;
|
||||
recipes.add(new SolderingRecipe(new ItemStack(higher), 300, 10_000,
|
||||
new AStack[] {new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CAPACITOR)},
|
||||
new AStack[] {new ComparableStack(ModItems.circuit, lbsm ? 4 : 8, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 2 : 4, EnumCircuitType.CAPACITOR)},
|
||||
new AStack[] {new ComparableStack(lower), new OreDictStack(ANY_PLASTIC.ingot(), 4)},
|
||||
new AStack[] {}
|
||||
));
|
||||
}
|
||||
|
||||
public static void addSecondUpgrade(Item lower, Item higher) {
|
||||
boolean lbsm = GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting;
|
||||
recipes.add(new SolderingRecipe(new ItemStack(higher), 400, 25_000,
|
||||
new FluidStack(Fluids.SOLVENT, 500),
|
||||
new AStack[] {new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR)},
|
||||
new AStack[] {new ComparableStack(ModItems.circuit, lbsm ? 6 : 16, EnumCircuitType.CHIP), new ComparableStack(ModItems.circuit, lbsm ? 4 : 16, EnumCircuitType.CAPACITOR)},
|
||||
new AStack[] {new ComparableStack(lower), new OreDictStack(RUBBER.ingot(), 4)},
|
||||
new AStack[] {}
|
||||
));
|
||||
@ -201,12 +239,45 @@ public class SolderingRecipes extends SerializableRecipe {
|
||||
|
||||
@Override
|
||||
public void readRecipe(JsonElement recipe) {
|
||||
JsonObject obj = (JsonObject) recipe;
|
||||
|
||||
AStack[] toppings = this.readAStackArray(obj.get("toppings").getAsJsonArray());
|
||||
AStack[] pcb = this.readAStackArray(obj.get("pcb").getAsJsonArray());
|
||||
AStack[] solder = this.readAStackArray(obj.get("solder").getAsJsonArray());
|
||||
FluidStack fluid = obj.has("fluid") ? this.readFluidStack(obj.get("fluid").getAsJsonArray()) : null;
|
||||
ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray());
|
||||
int duration = obj.get("duration").getAsInt();
|
||||
long consumption = obj.get("consumption").getAsLong();
|
||||
|
||||
recipes.add(new SolderingRecipe(output, duration, consumption, fluid, toppings, pcb, solder));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeRecipe(Object obj, JsonWriter writer) throws IOException {
|
||||
SolderingRecipe recipe = (SolderingRecipe) obj;
|
||||
|
||||
writer.name("toppings").beginArray();
|
||||
for(AStack aStack : recipe.toppings) this.writeAStack(aStack, writer);
|
||||
writer.endArray();
|
||||
|
||||
writer.name("pcb").beginArray();
|
||||
for(AStack aStack : recipe.pcb) this.writeAStack(aStack, writer);
|
||||
writer.endArray();
|
||||
|
||||
writer.name("solder").beginArray();
|
||||
for(AStack aStack : recipe.solder) this.writeAStack(aStack, writer);
|
||||
writer.endArray();
|
||||
|
||||
if(recipe.fluid != null) {
|
||||
writer.name("fluid");
|
||||
this.writeFluidStack(recipe.fluid, writer);
|
||||
}
|
||||
|
||||
writer.name("output");
|
||||
this.writeItemStack(recipe.output, writer);
|
||||
|
||||
writer.name("duration").value(recipe.duration);
|
||||
writer.name("consumption").value(recipe.consumption);
|
||||
}
|
||||
|
||||
public static HashSet<AStack> toppings = new HashSet();
|
||||
|
||||
@ -148,15 +148,13 @@ public class AnvilRecipes {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_schrabidium))).setTier(3));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CMB.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_combine_steel))).setTier(3));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BIGMT.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_saturnite))).setTier(3));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(DURA.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_dura_steel))).setTier(3));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_ALUMINIUM.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_COPPER.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(W.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_TUNGSTEN.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MINGRADE.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_MINGRADE.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(ALLOY.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_ALLOY.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(GOLD.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_GOLD.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(SA326.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_SCHRABIDIUM.id))).setTier(4));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(MAGTUNG.ingot()), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, Mats.MAT_MAGTUNG.id))).setTier(4));
|
||||
for(NTMMaterial mat : Mats.orderedList) {
|
||||
if(mat.shapes.contains(MaterialShapes.WIRE) && mat.shapes.contains(MaterialShapes.INGOT)) {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(OreNames.INGOT + mat.names[0]), new AnvilOutput(new ItemStack(ModItems.wire_fine, 8, mat.id))).setTier(4));
|
||||
}
|
||||
}
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(COAL.dust()), new AnvilOutput(new ItemStack(Items.coal))).setTier(3));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(NETHERQUARTZ.dust()), new AnvilOutput(new ItemStack(Items.quartz))).setTier(3));
|
||||
@ -441,10 +439,9 @@ public class AnvilRecipes {
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.deuterium_filter, 2),
|
||||
new OreDictStack(STEEL.shell(), 5),
|
||||
new ComparableStack(ModBlocks.concrete_smooth, 8),
|
||||
new ComparableStack(ModBlocks.concrete_asbestos, 4),
|
||||
new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
new OreDictStack(STEEL.pipe(), 12),
|
||||
new ComparableStack(ModBlocks.concrete_asbestos, 8),
|
||||
new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
new OreDictStack(Fluids.SOURGAS.getDict(1_000), 8),
|
||||
},
|
||||
new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_tower))).setTier(4));
|
||||
@ -818,8 +815,11 @@ public class AnvilRecipes {
|
||||
new AnvilOutput(new ItemStack(ModItems.crt_display, 1)),
|
||||
new AnvilOutput(new ItemStack(ModItems.scrap, 3)),
|
||||
new AnvilOutput(new ItemStack(ModItems.wire_fine, 4, Mats.MAT_COPPER.id)),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.25F),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 2, EnumCircuitType.PCB.ordinal()))
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 2, EnumCircuitType.PCB.ordinal())),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.5F),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), 0.75F),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), 0.5F),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.ANALOG.ordinal()), 0.1F)
|
||||
|
||||
}
|
||||
).setTier(2));
|
||||
@ -879,7 +879,7 @@ public class AnvilRecipes {
|
||||
new AnvilOutput[] {
|
||||
new AnvilOutput(new ItemStack(ModItems.plate_steel, 4)),
|
||||
new AnvilOutput(new ItemStack(ModItems.wire_fine, 1, Mats.MAT_COPPER.id)),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.BASIC.ordinal()), 0.5F),
|
||||
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.5F),
|
||||
new AnvilOutput(new ItemStack(ModItems.ingot_polymer, 1), 0.25F),
|
||||
}
|
||||
).setTier(2));
|
||||
|
||||
@ -75,4 +75,8 @@ public class ItemEnums {
|
||||
public static enum EnumPages {
|
||||
PAGE1, PAGE2, PAGE3, PAGE4, PAGE5, PAGE6, PAGE7, PAGE8
|
||||
}
|
||||
|
||||
public static enum EnumSecretType {
|
||||
CANISTER, CONTROLLER
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,7 +12,8 @@ public class ItemGenericPart extends ItemEnumMulti {
|
||||
public static enum EnumPartType {
|
||||
PISTON_PNEUMATIC("piston_pneumatic"),
|
||||
PISTON_HYDRAULIC("piston_hydraulic"),
|
||||
PISTON_ELECTRIC("piston_electric");
|
||||
PISTON_ELECTRIC("piston_electric"),
|
||||
LDE("low_density_element");
|
||||
|
||||
private String texName;
|
||||
|
||||
|
||||
@ -213,6 +213,8 @@ public class ModItems {
|
||||
public static Item ore_seared;
|
||||
//public static Item ore_radcleaned;
|
||||
public static Item ore_enriched; //final stage
|
||||
public static Item bedrock_ore_base;
|
||||
public static Item bedrock_ore;
|
||||
|
||||
public static Item billet_uranium;
|
||||
public static Item billet_u233;
|
||||
@ -347,6 +349,7 @@ public class ModItems {
|
||||
public static Item thruster_nuclear;
|
||||
public static Item safety_fuse;
|
||||
public static Item part_generic;
|
||||
public static Item item_secret;
|
||||
public static Item chemical_dye;
|
||||
public static Item crayon;
|
||||
|
||||
@ -675,7 +678,6 @@ public class ModItems {
|
||||
public static Item dysfunctional_reactor;
|
||||
public static Item blade_titanium;
|
||||
public static Item turbine_titanium;
|
||||
public static Item generator_front;
|
||||
public static Item blade_tungsten;
|
||||
public static Item turbine_tungsten;
|
||||
public static Item pellet_coal;
|
||||
@ -702,7 +704,6 @@ public class ModItems {
|
||||
public static Item warhead_buster_medium;
|
||||
public static Item warhead_buster_large;
|
||||
public static Item warhead_nuclear;
|
||||
public static Item warhead_mirvlet;
|
||||
public static Item warhead_mirv;
|
||||
public static Item warhead_volcano;
|
||||
|
||||
@ -1086,7 +1087,7 @@ public class ModItems {
|
||||
public static Item waste_u233;
|
||||
public static Item waste_u235;
|
||||
public static Item waste_schrabidium;
|
||||
public static Item waste_zfb_mox; //TODO: remind me to smite these useless waste items and condense em like the rbmk waste
|
||||
public static Item waste_zfb_mox;
|
||||
|
||||
public static Item waste_plate_u233;
|
||||
public static Item waste_plate_u235;
|
||||
@ -1262,6 +1263,7 @@ public class ModItems {
|
||||
public static Item geiger_counter;
|
||||
public static Item digamma_diagnostic;
|
||||
public static Item pollution_detector;
|
||||
public static Item ore_density_scanner;
|
||||
public static Item survey_scanner;
|
||||
public static Item mirror_tool;
|
||||
public static Item rbmk_tool;
|
||||
@ -2590,7 +2592,7 @@ public class ModItems {
|
||||
ingot_semtex = new ItemLemon(4, 5, true).setUnlocalizedName("ingot_semtex").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_semtex");
|
||||
ingot_c4 = new Item().setUnlocalizedName("ingot_c4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_c4");
|
||||
ingot_phosphorus = new Item().setUnlocalizedName("ingot_phosphorus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_phosphorus");
|
||||
wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_advanced_alloy");
|
||||
wire_advanced_alloy = new Item().setUnlocalizedName("wire_advanced_alloy").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_advanced_alloy");
|
||||
coil_advanced_alloy = new Item().setUnlocalizedName("coil_advanced_alloy").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_alloy");
|
||||
coil_advanced_torus = new Item().setUnlocalizedName("coil_advanced_torus").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coil_advanced_torus");
|
||||
ingot_magnetized_tungsten = new Item().setUnlocalizedName("ingot_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_magnetized_tungsten");
|
||||
@ -2615,6 +2617,7 @@ public class ModItems {
|
||||
thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear");
|
||||
safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse");
|
||||
part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic");
|
||||
item_secret = new ItemEnumMulti(EnumSecretType.class, true, true).setUnlocalizedName("item_secret").setCreativeTab(null).setTextureName(RefStrings.MODID + ":item_secret");
|
||||
chemical_dye = new ItemChemicalDye().setUnlocalizedName("chemical_dye").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":chemical_dye");
|
||||
crayon = new ItemCrayon().setUnlocalizedName("crayon").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crayon");
|
||||
|
||||
@ -2720,6 +2723,8 @@ public class ModItems {
|
||||
ore_seared = new ItemBedrockOre().setUnlocalizedName("ore_seared").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_seared");
|
||||
//ore_radcleaned = new ItemBedrockOre().setUnlocalizedName("ore_radcleaned").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_radcleaned");
|
||||
ore_enriched = new ItemBedrockOre().setUnlocalizedName("ore_enriched").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ore_enriched");
|
||||
bedrock_ore_base = new ItemBedrockOreBase().setUnlocalizedName("bedrock_ore_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new");
|
||||
bedrock_ore = new ItemBedrockOreNew().setUnlocalizedName("bedrock_ore").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":bedrock_ore_new");
|
||||
|
||||
ingot_lanthanium = new ItemCustomLore().setUnlocalizedName("ingot_lanthanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_lanthanium");
|
||||
ingot_actinium = new ItemCustomLore().setUnlocalizedName("ingot_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_actinium");
|
||||
@ -2797,8 +2802,8 @@ public class ModItems {
|
||||
nugget_actinium = new Item().setUnlocalizedName("nugget_actinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_actinium");
|
||||
plate_titanium = new Item().setUnlocalizedName("plate_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_titanium");
|
||||
plate_aluminium = new Item().setUnlocalizedName("plate_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":plate_aluminium");
|
||||
wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_red_copper");
|
||||
wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_tungsten");
|
||||
wire_red_copper = new Item().setUnlocalizedName("wire_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_red_copper");
|
||||
wire_tungsten = new ItemCustomLore().setUnlocalizedName("wire_tungsten").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_tungsten");
|
||||
neutron_reflector = new Item().setUnlocalizedName("neutron_reflector").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":neutron_reflector");
|
||||
nugget_lead = new Item().setUnlocalizedName("nugget_lead").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_lead");
|
||||
ingot_bismuth = new ItemCustomLore().setUnlocalizedName("ingot_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_bismuth");
|
||||
@ -2993,24 +2998,18 @@ public class ModItems {
|
||||
motor_desh = new Item().setUnlocalizedName("motor_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_desh");
|
||||
motor_bismuth = new Item().setUnlocalizedName("motor_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_bismuth");
|
||||
centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element");
|
||||
//centrifuge_tower = new Item().setUnlocalizedName("centrifuge_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_tower");
|
||||
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");
|
||||
//thermo_unit_empty = new Item().setUnlocalizedName("thermo_unit_empty").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_empty");
|
||||
//thermo_unit_endo= new Item().setUnlocalizedName("thermo_unit_endo").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_endo");
|
||||
//thermo_unit_exo = new Item().setUnlocalizedName("thermo_unit_exo").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thermo_unit_exo");
|
||||
levitation_unit = new Item().setUnlocalizedName("levitation_unit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":levitation_unit");
|
||||
wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_aluminium");
|
||||
wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_copper");
|
||||
wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_gold");
|
||||
wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_schrabidium");
|
||||
wire_aluminium = new Item().setUnlocalizedName("wire_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_aluminium");
|
||||
wire_copper = new Item().setUnlocalizedName("wire_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_copper");
|
||||
wire_gold = new Item().setUnlocalizedName("wire_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_gold");
|
||||
wire_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("wire_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":wire_schrabidium");
|
||||
wire_magnetized_tungsten = new Item().setUnlocalizedName("wire_magnetized_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_magnetized_tungsten");
|
||||
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");
|
||||
//magnet_dee = new Item().setUnlocalizedName("magnet_dee").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnet_dee");
|
||||
magnet_circular = new Item().setUnlocalizedName("magnet_circular").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":magnet_circular");
|
||||
//cyclotron_tower = new Item().setUnlocalizedName("cyclotron_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cyclotron_tower");
|
||||
pellet_coal = new Item().setUnlocalizedName("pellet_coal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":pellet_coal");
|
||||
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");
|
||||
@ -3036,7 +3035,6 @@ public class ModItems {
|
||||
dysfunctional_reactor = new Item().setUnlocalizedName("dysfunctional_reactor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":dysfunctional_reactor");
|
||||
blade_titanium = new Item().setUnlocalizedName("blade_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_titanium");
|
||||
turbine_titanium = new Item().setUnlocalizedName("turbine_titanium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_titanium");
|
||||
generator_front = new Item().setUnlocalizedName("generator_front").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":generator_front");
|
||||
blade_tungsten = new Item().setUnlocalizedName("blade_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":blade_tungsten");
|
||||
turbine_tungsten = new Item().setUnlocalizedName("turbine_tungsten").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":turbine_tungsten");
|
||||
|
||||
@ -3057,7 +3055,6 @@ public class ModItems {
|
||||
warhead_buster_medium = new Item().setUnlocalizedName("warhead_buster_medium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_medium");
|
||||
warhead_buster_large = new Item().setUnlocalizedName("warhead_buster_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_buster_large");
|
||||
warhead_nuclear = new Item().setUnlocalizedName("warhead_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_nuclear");
|
||||
warhead_mirvlet = new Item().setUnlocalizedName("warhead_mirvlet").setCreativeTab(null).setTextureName(RefStrings.MODID + ":warhead_mirvlet");
|
||||
warhead_mirv = new Item().setUnlocalizedName("warhead_mirv").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_mirv");
|
||||
warhead_volcano = new Item().setUnlocalizedName("warhead_volcano").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":warhead_volcano");
|
||||
|
||||
@ -3094,28 +3091,28 @@ public class ModItems {
|
||||
entanglement_kit = new ItemCustomLore().setUnlocalizedName("entanglement_kit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":entanglement_kit");
|
||||
|
||||
circuit = new ItemCircuit().setUnlocalizedName("circuit").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit");
|
||||
circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_raw");
|
||||
circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_aluminium");
|
||||
circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_copper");
|
||||
circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_red_copper");
|
||||
circuit_gold = new Item().setUnlocalizedName("circuit_gold").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_gold");
|
||||
circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_schrabidium");
|
||||
circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw");
|
||||
circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_bismuth");
|
||||
circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw");
|
||||
circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_arsenic");
|
||||
circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw");
|
||||
circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_tantalium");
|
||||
circuit_raw = new Item().setUnlocalizedName("circuit_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_raw");
|
||||
circuit_aluminium = new Item().setUnlocalizedName("circuit_aluminium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_aluminium");
|
||||
circuit_copper = new Item().setUnlocalizedName("circuit_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_copper");
|
||||
circuit_red_copper = new Item().setUnlocalizedName("circuit_red_copper").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_red_copper");
|
||||
circuit_gold = new Item().setUnlocalizedName("circuit_gold").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_gold");
|
||||
circuit_schrabidium = new ItemCustomLore().setRarity(EnumRarity.rare).setUnlocalizedName("circuit_schrabidium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_schrabidium");
|
||||
circuit_bismuth_raw = new Item().setUnlocalizedName("circuit_bismuth_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_bismuth_raw");
|
||||
circuit_bismuth = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_bismuth").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_bismuth");
|
||||
circuit_arsenic_raw = new Item().setUnlocalizedName("circuit_arsenic_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_arsenic_raw");
|
||||
circuit_arsenic = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_arsenic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_arsenic");
|
||||
circuit_tantalium_raw = new Item().setUnlocalizedName("circuit_tantalium_raw").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_tantalium_raw");
|
||||
circuit_tantalium = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_tantalium").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_tantalium");
|
||||
crt_display = new Item().setUnlocalizedName("crt_display").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":crt_display");
|
||||
circuit_star_piece = (ItemEnumMulti) new ItemEnumMulti(ScrapType.class, true, true).setUnlocalizedName("circuit_star_piece").setCreativeTab(null);
|
||||
circuit_star_component = (ItemEnumMulti) new ItemCircuitStarComponent().setUnlocalizedName("circuit_star_component").setCreativeTab(null);
|
||||
circuit_star = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("circuit_star").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_star");
|
||||
circuit_targeting_tier1 = new Item().setUnlocalizedName("circuit_targeting_tier1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier1");
|
||||
circuit_targeting_tier2 = new Item().setUnlocalizedName("circuit_targeting_tier2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier2");
|
||||
circuit_targeting_tier3 = new Item().setUnlocalizedName("circuit_targeting_tier3").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier3");
|
||||
circuit_targeting_tier4 = new Item().setUnlocalizedName("circuit_targeting_tier4").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier4");
|
||||
circuit_targeting_tier5 = new Item().setUnlocalizedName("circuit_targeting_tier5").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier5");
|
||||
circuit_targeting_tier6 = new Item().setUnlocalizedName("circuit_targeting_tier6").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":circuit_targeting_tier6");
|
||||
circuit_targeting_tier1 = new Item().setUnlocalizedName("circuit_targeting_tier1").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier1");
|
||||
circuit_targeting_tier2 = new Item().setUnlocalizedName("circuit_targeting_tier2").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier2");
|
||||
circuit_targeting_tier3 = new Item().setUnlocalizedName("circuit_targeting_tier3").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier3");
|
||||
circuit_targeting_tier4 = new Item().setUnlocalizedName("circuit_targeting_tier4").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier4");
|
||||
circuit_targeting_tier5 = new Item().setUnlocalizedName("circuit_targeting_tier5").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier5");
|
||||
circuit_targeting_tier6 = new Item().setUnlocalizedName("circuit_targeting_tier6").setCreativeTab(null).setTextureName(RefStrings.MODID + ":circuit_targeting_tier6");
|
||||
mechanism_revolver_1 = new Item().setUnlocalizedName("mechanism_revolver_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_1");
|
||||
mechanism_revolver_2 = new Item().setUnlocalizedName("mechanism_revolver_2").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_3");
|
||||
mechanism_rifle_1 = new Item().setUnlocalizedName("mechanism_rifle_1").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":mechanism_2");
|
||||
@ -3282,7 +3279,12 @@ public class ModItems {
|
||||
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");
|
||||
wire_fine = new ItemAutogen(MaterialShapes.WIRE).setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine");
|
||||
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")
|
||||
.aot(Mats.MAT_TUNGSTEN, "wire_tungsten").aot(Mats.MAT_ALLOY, "wire_advanced_alloy")
|
||||
.aot(Mats.MAT_CARBON, "wire_carbon").aot(Mats.MAT_SCHRABIDIUM, "wire_schrabidium")
|
||||
.aot(Mats.MAT_MAGTUNG, "wire_magnetized_tungsten").setUnlocalizedName("wire_fine").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_fine");
|
||||
wire_dense = new ItemAutogen(MaterialShapes.DENSEWIRE).setUnlocalizedName("wire_dense").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":wire_dense");
|
||||
|
||||
part_lithium = new Item().setUnlocalizedName("part_lithium").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":part_lithium");
|
||||
@ -4603,6 +4605,7 @@ public class ModItems {
|
||||
geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter");
|
||||
digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic");
|
||||
pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector");
|
||||
ore_density_scanner = new ItemOreDensityScanner().setUnlocalizedName("ore_density_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":ore_density_scanner");
|
||||
survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner");
|
||||
mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool");
|
||||
rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool");
|
||||
@ -5940,9 +5943,10 @@ public class ModItems {
|
||||
GameRegistry.registerItem(ore_nitrocrystalline, ore_nitrocrystalline.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_deepcleaned, ore_deepcleaned.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_seared, ore_seared.getUnlocalizedName());
|
||||
//GameRegistry.registerItem(ore_radcleaned, ore_radcleaned.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_enriched, ore_enriched.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_byproduct, ore_byproduct.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bedrock_ore_base, bedrock_ore_base.getUnlocalizedName());
|
||||
GameRegistry.registerItem(bedrock_ore, bedrock_ore.getUnlocalizedName());
|
||||
|
||||
//Crystals
|
||||
GameRegistry.registerItem(crystal_coal, crystal_coal.getUnlocalizedName());
|
||||
@ -6154,6 +6158,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(chemical_dye, chemical_dye.getUnlocalizedName());
|
||||
GameRegistry.registerItem(crayon, crayon.getUnlocalizedName());
|
||||
GameRegistry.registerItem(part_generic, part_generic.getUnlocalizedName());
|
||||
GameRegistry.registerItem(item_secret, item_secret.getUnlocalizedName());
|
||||
GameRegistry.registerItem(parts_legendary, parts_legendary.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gear_large, gear_large.getUnlocalizedName());
|
||||
GameRegistry.registerItem(sawblade, sawblade.getUnlocalizedName());
|
||||
@ -6183,7 +6188,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(turbine_titanium, turbine_titanium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(turbine_tungsten, turbine_tungsten.getUnlocalizedName());
|
||||
GameRegistry.registerItem(flywheel_beryllium, flywheel_beryllium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(generator_front, generator_front.getUnlocalizedName());
|
||||
GameRegistry.registerItem(toothpicks, toothpicks.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ducttape, ducttape.getUnlocalizedName());
|
||||
GameRegistry.registerItem(catalyst_clay, catalyst_clay.getUnlocalizedName());
|
||||
@ -6201,7 +6205,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(warhead_buster_medium, warhead_buster_medium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_buster_large, warhead_buster_large.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_nuclear, warhead_nuclear.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_mirvlet, warhead_mirvlet.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_mirv, warhead_mirv.getUnlocalizedName());
|
||||
GameRegistry.registerItem(warhead_volcano, warhead_volcano.getUnlocalizedName());
|
||||
GameRegistry.registerItem(fuel_tank_small, fuel_tank_small.getUnlocalizedName());
|
||||
@ -6846,6 +6849,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(linker, linker.getUnlocalizedName());
|
||||
GameRegistry.registerItem(reactor_sensor, reactor_sensor.getUnlocalizedName());
|
||||
GameRegistry.registerItem(oil_detector, oil_detector.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ore_density_scanner, ore_density_scanner.getUnlocalizedName());
|
||||
GameRegistry.registerItem(survey_scanner, survey_scanner.getUnlocalizedName());
|
||||
GameRegistry.registerItem(mirror_tool, mirror_tool.getUnlocalizedName());
|
||||
GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName());
|
||||
|
||||
@ -6,6 +6,7 @@ import com.hbm.blocks.BlockMulti;
|
||||
import com.hbm.blocks.IBlockMulti;
|
||||
import com.hbm.blocks.IPersistentInfoProvider;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.blocks.generic.BlockMetalFence;
|
||||
import com.hbm.tileentity.IPersistentNBT;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@ -42,6 +43,8 @@ public class ItemBlockBase extends ItemBlock {
|
||||
|
||||
if(field_150939_a instanceof BlockMulti) {
|
||||
return ((BlockMulti)field_150939_a).getUnlocalizedName(stack);
|
||||
} else if(field_150939_a instanceof BlockMetalFence) {
|
||||
return ((BlockMetalFence)field_150939_a).getUnlocalizedName(stack); // I considered reworking IBlockMulti instead but there are like a bajillion implementers
|
||||
} else {
|
||||
return super.getUnlocalizedName(stack);
|
||||
}
|
||||
|
||||
@ -47,9 +47,9 @@ public class ItemArcElectrode extends ItemEnumMulti {
|
||||
|
||||
public static enum EnumElectrodeType {
|
||||
GRAPHITE( 10),
|
||||
LANTHANIUM( 50),
|
||||
DESH( 250),
|
||||
SATURNITE( 500);
|
||||
LANTHANIUM( 100),
|
||||
DESH( 500),
|
||||
SATURNITE( 1500);
|
||||
|
||||
public int durability;
|
||||
|
||||
|
||||
@ -4,7 +4,11 @@ import java.util.List;
|
||||
|
||||
import com.hbm.items.ItemEnumMulti;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemCircuit extends ItemEnumMulti {
|
||||
@ -13,6 +17,26 @@ public class ItemCircuit extends ItemEnumMulti {
|
||||
super(EnumCircuitType.class, true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tab, List list) {
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.VACUUM_TUBE.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_TANTALIUM.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.PCB.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.SILICON.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CHIP.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CHIP_BISMOID.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.ANALOG.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.BASIC.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.ADVANCED.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CAPACITOR_BOARD.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.BISMOID.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_CHASSIS.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER.ordinal()));
|
||||
list.add(new ItemStack(item, 1, EnumCircuitType.CONTROLLER_ADVANCED.ordinal()));
|
||||
}
|
||||
|
||||
public static enum EnumCircuitType {
|
||||
VACUUM_TUBE,
|
||||
CAPACITOR,
|
||||
@ -26,6 +50,9 @@ public class ItemCircuit extends ItemEnumMulti {
|
||||
ADVANCED,
|
||||
CAPACITOR_BOARD,
|
||||
BISMOID,
|
||||
CONTROLLER_CHASSIS,
|
||||
CONTROLLER,
|
||||
CONTROLLER_ADVANCED,
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -45,7 +45,7 @@ public class ItemMold extends Item {
|
||||
registerMold(new MoldShape( 1, S, "billet", MaterialShapes.BILLET));
|
||||
registerMold(new MoldShape( 2, S, "ingot", MaterialShapes.INGOT));
|
||||
registerMold(new MoldShape( 3, S, "plate", MaterialShapes.PLATE));
|
||||
registerMold(new MoldShape( 4, S, "wire", MaterialShapes.WIRE));
|
||||
registerMold(new MoldShape( 4, S, "wire", MaterialShapes.WIRE, 8));
|
||||
|
||||
registerMold(new MoldShape( 19, S, "plate_cast", MaterialShapes.CASTPLATE));
|
||||
registerMold(new MoldShape( 20, S, "wire_dense", MaterialShapes.DENSEWIRE));
|
||||
|
||||
57
src/main/java/com/hbm/items/special/ItemBedrockOreBase.java
Normal file
57
src/main/java/com/hbm/items/special/ItemBedrockOreBase.java
Normal file
@ -0,0 +1,57 @@
|
||||
package com.hbm.items.special;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.items.tool.ItemOreDensityScanner;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.gen.NoiseGeneratorPerlin;
|
||||
|
||||
public class ItemBedrockOreBase extends Item {
|
||||
|
||||
public static double getOreAmount(ItemStack stack, BedrockOreType type) {
|
||||
if(!stack.hasTagCompound()) return 0;
|
||||
NBTTagCompound data = stack.getTagCompound();
|
||||
return data.getDouble(type.suffix);
|
||||
}
|
||||
|
||||
public static void setOreAmount(ItemStack stack, int x, int z) {
|
||||
if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound();
|
||||
NBTTagCompound data = stack.getTagCompound();
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
data.setDouble(type.suffix, getOreLevel(x, z, type));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
double amount = this.getOreAmount(stack, type);
|
||||
String typeName = StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name");
|
||||
list.add(typeName + ": " + ((int) (amount * 100)) / 100D + " (" + ItemOreDensityScanner.translateDensity(amount) + EnumChatFormatting.RESET + ")");
|
||||
}
|
||||
}
|
||||
|
||||
private static NoiseGeneratorPerlin[] ores = new NoiseGeneratorPerlin[BedrockOreType.values().length];
|
||||
private static NoiseGeneratorPerlin level;
|
||||
|
||||
public static double getOreLevel(int x, int z, BedrockOreType type) {
|
||||
|
||||
if(level == null) level = new NoiseGeneratorPerlin(new Random(2114043), 4);
|
||||
if(ores[type.ordinal()] == null) ores[type.ordinal()] = new NoiseGeneratorPerlin(new Random(2082127 + type.ordinal()), 4);
|
||||
|
||||
double scale = 0.01D;
|
||||
|
||||
return MathHelper.clamp_double(Math.abs(level.func_151601_a(x * scale, z * scale) * ores[type.ordinal()].func_151601_a(x * scale, z * scale)) * 0.05, 0, 2);
|
||||
}
|
||||
}
|
||||
261
src/main/java/com/hbm/items/special/ItemBedrockOreNew.java
Normal file
261
src/main/java/com/hbm/items/special/ItemBedrockOreNew.java
Normal file
@ -0,0 +1,261 @@
|
||||
package com.hbm.items.special;
|
||||
|
||||
import static com.hbm.inventory.OreDictManager.*;
|
||||
import static com.hbm.items.special.ItemBedrockOreNew.ProcessingTrait.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.util.EnumUtil;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.inventory.material.NTMMaterial;
|
||||
import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior;
|
||||
import com.hbm.items.ItemEnums.EnumChunkType;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap;
|
||||
import com.hbm.render.icon.TextureAtlasSpriteMutatable;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class ItemBedrockOreNew extends Item {
|
||||
|
||||
public IIcon[] icons = new IIcon[BedrockOreType.values().length * BedrockOreGrade.values().length];
|
||||
public IIcon[] overlays = new IIcon[ProcessingTrait.values().length];
|
||||
|
||||
public ItemBedrockOreNew() {
|
||||
this.setHasSubtypes(true);
|
||||
this.setMaxDamage(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister reg) {
|
||||
|
||||
|
||||
if(reg instanceof TextureMap) {
|
||||
TextureMap map = (TextureMap) reg;
|
||||
|
||||
for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i];
|
||||
for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j];
|
||||
String placeholderName = RefStrings.MODID + ":bedrock_ore_" + grade.prefix + "_" + type.suffix + "-" + (i * BedrockOreType.values().length + j);
|
||||
TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, type.light, type.dark));
|
||||
map.setTextureEntry(placeholderName, mutableIcon);
|
||||
this.icons[i * BedrockOreType.values().length + j] = mutableIcon;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < overlays.length; i++) {
|
||||
ProcessingTrait trait = ProcessingTrait.values()[i];
|
||||
overlays[i] = reg.registerIcon(RefStrings.MODID + ":bedrock_ore_overlay." + trait.name().toLowerCase(Locale.US));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubItems(Item item, CreativeTabs tab, List list) {
|
||||
|
||||
for(int j = 0; j < BedrockOreType.values().length; j++) { BedrockOreType type = BedrockOreType.values()[j];
|
||||
for(int i = 0; i < BedrockOreGrade.values().length; i++) { BedrockOreGrade grade = BedrockOreGrade.values()[i];
|
||||
list.add(this.make(grade, type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean requiresMultipleRenderPasses() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderPasses(int metadata) {
|
||||
return 1 + this.getGrade(metadata).traits.length;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIconFromDamageForRenderPass(int meta, int pass) {
|
||||
if(pass == 0) return this.getIconFromDamage(meta);
|
||||
return this.overlays[this.getGrade(meta).traits[pass - 1].ordinal()];
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIconFromDamage(int meta) {
|
||||
int icon = this.getGrade(meta).ordinal() * BedrockOreType.values().length + this.getType(meta).ordinal();
|
||||
return icons[Math.abs(icon % icons.length)];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getItemStackDisplayName(ItemStack stack) {
|
||||
int meta = stack.getItemDamage();
|
||||
String type = StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".type." + this.getType(meta).suffix + ".name");
|
||||
return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".grade." + this.getGrade(meta).name().toLowerCase(Locale.US) + ".name", type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
|
||||
|
||||
for(ProcessingTrait trait : this.getGrade(stack.getItemDamage()).traits) {
|
||||
list.add(I18nUtil.resolveKey(this.getUnlocalizedNameInefficiently(stack) + ".trait." + trait.name().toLowerCase(Locale.US)));
|
||||
}
|
||||
}
|
||||
|
||||
public static enum BedrockOreType {
|
||||
// primary sulfuric solvent radsolvent
|
||||
LIGHT_METAL( 0xFFFFFF, 0x353535, "light", IRON, CU, TI, AL, AL, CHLOROCALCITE, LI, NA, CHLOROCALCITE, LI, NA),
|
||||
HEAVY_METAL( 0x868686, 0x000000, "heavy", W, PB, GOLD, GOLD, BE, W, PB, GOLD, BI, BI, GOLD),
|
||||
RARE_EARTH( 0xE6E6B6, 0x1C1C00, "rare", CO, EnumChunkType.RARE, B, LA, NB, ND, B, ZR, CO, ND, ZR),
|
||||
ACTINIDE( 0xC1C7BD, 0x2B3227, "actinide", U, TH232, RA226, RA226, PO210, RA226, RA226, PO210, TC99, TC99, U238),
|
||||
NON_METAL( 0xAFAFAF, 0x0F0F0F, "nonmetal", COAL, S, LIGNITE, KNO, F, P_RED, F, S, CHLOROCALCITE, SI, SI),
|
||||
CRYSTALLINE( 0xE2FFFA, 0x1E8A77, "crystal", DIAMOND, SODALITE, CINNABAR, ASBESTOS, REDSTONE, CINNABAR, ASBESTOS, EMERALD, BORAX, MOLYSITE, SODALITE);
|
||||
//sediment
|
||||
|
||||
public int light;
|
||||
public int dark;
|
||||
public String suffix;
|
||||
public Object primary1, primary2;
|
||||
public Object byproductAcid1, byproductAcid2, byproductAcid3;
|
||||
public Object byproductSolvent1, byproductSolvent2, byproductSolvent3;
|
||||
public Object byproductRad1, byproductRad2, byproductRad3;
|
||||
|
||||
private BedrockOreType(int light, int dark, String suffix, Object p1, Object p2, Object bA1, Object bA2, Object bA3, Object bS1, Object bS2, Object bS3, Object bR1, Object bR2, Object bR3) {
|
||||
this.light = light;
|
||||
this.dark = dark;
|
||||
this.suffix = suffix;
|
||||
this.primary1 = p1; this.primary2 = p2;
|
||||
this.byproductAcid1 = bA1; this.byproductAcid2 = bA2; this.byproductAcid3 = bA3;
|
||||
this.byproductSolvent1 = bS1; this.byproductSolvent2 = bS2; this.byproductSolvent3 = bS3;
|
||||
this.byproductRad1 = bR1; this.byproductRad2 = bR2; this.byproductRad3 = bR3;
|
||||
}
|
||||
}
|
||||
|
||||
public static MaterialStack toFluid(Object o, int amount) {
|
||||
if(o instanceof DictFrame) {
|
||||
NTMMaterial mat = Mats.matByName.get(((DictFrame) o).mats[0]);
|
||||
if(mat != null && mat.smeltable == SmeltingBehavior.SMELTABLE) {
|
||||
return new MaterialStack(mat, amount);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack extract(Object o) {
|
||||
return extract(o, 1);
|
||||
}
|
||||
|
||||
public static ItemStack extract(Object o, int amount) {
|
||||
if(o instanceof EnumChunkType) return new ItemStack(ModItems.chunk_ore, amount, ((EnumChunkType) o).ordinal());
|
||||
if(o instanceof DictFrame) {
|
||||
DictFrame frame = (DictFrame) o;
|
||||
List<ItemStack> gems = OreDictionary.getOres(frame.gem(), false); if(!gems.isEmpty()) return fromList(gems, amount);
|
||||
List<ItemStack> dusts = OreDictionary.getOres(frame.dust(), false); if(!dusts.isEmpty()) return fromList(dusts, amount);
|
||||
List<ItemStack> crystals = OreDictionary.getOres(frame.crystal(), false); if(!crystals.isEmpty()) return fromList(crystals, amount);
|
||||
List<ItemStack> billets = OreDictionary.getOres(frame.billet(), false); if(!billets.isEmpty()) return fromList(billets, amount);
|
||||
List<ItemStack> ingots = OreDictionary.getOres(frame.ingot(), false); if(!ingots.isEmpty()) return fromList(ingots, amount);
|
||||
}
|
||||
return new ItemStack(ModItems.nothing);
|
||||
}
|
||||
|
||||
private static ItemStack fromList(List<ItemStack> list, int amount) {
|
||||
ItemStack first = list.get(0).copy();
|
||||
first.stackSize = amount;
|
||||
return first;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getColorFromItemStack(ItemStack stack, int pass) {
|
||||
if(pass != 0) return 0xFFFFFF;
|
||||
BedrockOreGrade grade = this.getGrade(stack.getItemDamage());
|
||||
return grade.tint;
|
||||
}
|
||||
|
||||
public static final int none = 0xFFFFFF;
|
||||
public static final int roasted = 0xCFCFCF;
|
||||
public static final int arc = 0xC3A2A2;
|
||||
public static final int washed = 0xDBE2CB;
|
||||
|
||||
public static enum ProcessingTrait {
|
||||
ROASTED,
|
||||
ARC,
|
||||
WASHED,
|
||||
CENTRIFUGED,
|
||||
SULFURIC,
|
||||
SOLVENT,
|
||||
RAD
|
||||
}
|
||||
|
||||
public static enum BedrockOreGrade {
|
||||
BASE(none, "base"), //from the slopper
|
||||
BASE_ROASTED(roasted, "base", ROASTED), //optional combination oven step, yields vitriol
|
||||
BASE_WASHED(washed, "base", WASHED), //primitive-ass acidizer with water
|
||||
PRIMARY(none, "primary", CENTRIFUGED), //centrifuging for more primary
|
||||
PRIMARY_ROASTED(roasted, "primary", ROASTED), //optional comboven
|
||||
PRIMARY_SULFURIC(0xFFFFD3, "primary", SULFURIC), //sulfuric acid
|
||||
PRIMARY_NOSULFURIC(0xD3D4FF, "primary", CENTRIFUGED, SULFURIC), //from centrifuging, sulfuric byproduct removed
|
||||
PRIMARY_SOLVENT(0xD3F0FF, "primary", SOLVENT), //solvent
|
||||
PRIMARY_NOSOLVENT(0xFFDED3, "primary", CENTRIFUGED, SOLVENT), //solvent byproduct removed
|
||||
PRIMARY_RAD(0xECFFD3, "primary", RAD), //radsolvent
|
||||
PRIMARY_NORAD(0xEBD3FF, "primary", CENTRIFUGED, RAD), //radsolvent byproduct removed
|
||||
PRIMARY_FIRST(0xFFD3D4, "primary", CENTRIFUGED), //higher first material yield
|
||||
PRIMARY_SECOND(0xD3FFEB, "primary", CENTRIFUGED), //higher second material yield
|
||||
CRUMBS(none, "crumbs", CENTRIFUGED), //endpoint for primary, recycling
|
||||
|
||||
SULFURIC_BYPRODUCT(none, "sulfuric", CENTRIFUGED, SULFURIC), //from centrifuging
|
||||
SULFURIC_ROASTED(roasted, "sulfuric", ROASTED, SULFURIC), //comboven again
|
||||
SULFURIC_ARC(arc, "sulfuric", ARC, SULFURIC), //alternate step
|
||||
SULFURIC_WASHED(washed, "sulfuric", WASHED, SULFURIC), //sulfuric endpoint
|
||||
|
||||
SOLVENT_BYPRODUCT(none, "solvent", CENTRIFUGED, SOLVENT), //from centrifuging
|
||||
SOLVENT_ROASTED(roasted, "solvent", ROASTED, SOLVENT), //comboven again
|
||||
SOLVENT_ARC(arc, "solvent", ARC, SOLVENT), //alternate step
|
||||
SOLVENT_WASHED(washed, "solvent", WASHED, SOLVENT), //solvent endpoint
|
||||
|
||||
RAD_BYPRODUCT(none, "rad", CENTRIFUGED, RAD), //from centrifuging
|
||||
RAD_ROASTED(roasted, "rad", ROASTED, RAD), //comboven again
|
||||
RAD_ARC(arc, "rad", ARC, RAD), //alternate step
|
||||
RAD_WASHED(washed, "rad", WASHED, RAD); //rad endpoint
|
||||
|
||||
public int tint;
|
||||
public String prefix;
|
||||
public ProcessingTrait[] traits;
|
||||
|
||||
private BedrockOreGrade(int tint, String prefix, ProcessingTrait... traits) {
|
||||
this.tint = tint;
|
||||
this.prefix = prefix;
|
||||
this.traits = traits;
|
||||
}
|
||||
}
|
||||
|
||||
public static ItemStack make(BedrockOreGrade grade, BedrockOreType type) {
|
||||
return make(grade, type, 1);
|
||||
}
|
||||
|
||||
public static ItemStack make(BedrockOreGrade grade, BedrockOreType type, int amount) {
|
||||
return new ItemStack(ModItems.bedrock_ore, amount, grade.ordinal() << 4 | type.ordinal());
|
||||
}
|
||||
|
||||
public BedrockOreGrade getGrade(int meta) {
|
||||
return EnumUtil.grabEnumSafely(BedrockOreGrade.class, meta >> 4);
|
||||
}
|
||||
|
||||
public BedrockOreType getType(int meta) {
|
||||
return EnumUtil.grabEnumSafely(BedrockOreType.class, meta & 15);
|
||||
}
|
||||
}
|
||||
@ -30,36 +30,6 @@ public class ItemOreBlock extends ItemBlock {
|
||||
list.add("Deposit location: X:-400; Z:-400");
|
||||
list.add("Estimated quantity: 490");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_weidanium) {
|
||||
list.add("Weidanium ore");
|
||||
list.add("Deposit location: X:0; Z:300");
|
||||
list.add("Estimated quantity: 2800");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_reiium) {
|
||||
list.add("Reiium ore");
|
||||
list.add("Deposit location: X:0; Z:0");
|
||||
list.add("Estimated quantity: 2800");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_unobtainium) {
|
||||
list.add("Unobtainium ore");
|
||||
list.add("Deposit location: X:200; Z:200");
|
||||
list.add("Estimated quantity: 12480");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_daffergon) {
|
||||
list.add("Daffergon ore");
|
||||
list.add("Deposit location: X:400; Z:-200");
|
||||
list.add("Estimated quantity: 14980");
|
||||
}
|
||||
|
||||
if(this.field_150939_a == ModBlocks.ore_verticium) {
|
||||
list.add("Verticium ore");
|
||||
list.add("Deposit location: X:-300; Z:200");
|
||||
list.add("Estimated quantity: 4680");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -69,7 +69,17 @@ public class ItemBlowtorch extends Item implements IFillableItem {
|
||||
initNBT(stack);
|
||||
}
|
||||
|
||||
return stack.stackTagCompound.getInteger(type.getName());
|
||||
//just in case
|
||||
String name = Fluids.toNameCompat(type);
|
||||
if(stack.stackTagCompound.hasKey(name)) {
|
||||
int fill = stack.stackTagCompound.getInteger(name);
|
||||
stack.stackTagCompound.removeTag(name);
|
||||
stack.stackTagCompound.setInteger(Integer.toString(type.getID()), fill);
|
||||
|
||||
return fill;
|
||||
}
|
||||
|
||||
return stack.stackTagCompound.getInteger(Integer.toString(type.getID()));
|
||||
}
|
||||
|
||||
public int getMaxFill(FluidType type) {
|
||||
@ -85,7 +95,7 @@ public class ItemBlowtorch extends Item implements IFillableItem {
|
||||
initNBT(stack);
|
||||
}
|
||||
|
||||
stack.stackTagCompound.setInteger(type.getName(), fill);
|
||||
stack.stackTagCompound.setInteger(Integer.toString(type.getID()), fill);
|
||||
}
|
||||
|
||||
public void initNBT(ItemStack stack) {
|
||||
|
||||
42
src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java
Normal file
42
src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java
Normal file
@ -0,0 +1,42 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import com.hbm.items.special.ItemBedrockOreBase;
|
||||
import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemOreDensityScanner extends Item {
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) {
|
||||
|
||||
if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 5 != 0) return;
|
||||
|
||||
EntityPlayerMP player = (EntityPlayerMP) entity;
|
||||
|
||||
for(BedrockOreType type : BedrockOreType.values()) {
|
||||
double level = ItemBedrockOreBase.getOreLevel((int) Math.floor(player.posX), (int) Math.floor(player.posZ), type);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(
|
||||
StatCollector.translateToLocalFormatted("item.bedrock_ore.type." + type.suffix + ".name") + ": " + ((int) (level * 100) / 100D) + " (" + translateDensity(level) + EnumChatFormatting.RESET + ")",
|
||||
777 + type.ordinal(), 4000), player);
|
||||
}
|
||||
}
|
||||
|
||||
public static String translateDensity(double density) {
|
||||
if(density <= 0.1) return EnumChatFormatting.DARK_RED + "Very poor";
|
||||
if(density <= 0.35) return EnumChatFormatting.RED + "Poor";
|
||||
if(density <= 0.75) return EnumChatFormatting.GOLD + "Low";
|
||||
if(density >= 1.9) return EnumChatFormatting.AQUA + "Excellent";
|
||||
if(density >= 1.65) return EnumChatFormatting.BLUE + "Very high";
|
||||
if(density >= 1.25) return EnumChatFormatting.GREEN + "High";
|
||||
return EnumChatFormatting.YELLOW + "Moderate";
|
||||
}
|
||||
}
|
||||
@ -143,7 +143,7 @@ public class ItemPipette extends Item implements IFillableItem {
|
||||
|
||||
public boolean willFizzle(FluidType type) {
|
||||
if (this != ModItems.pipette) return false;
|
||||
return type.isCorrosive() && type != Fluids.ACID;
|
||||
return type.isCorrosive() && type != Fluids.PEROXIDE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (4977)";
|
||||
public static final String VERSION = "1.0.27 BETA (5000)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user