This commit is contained in:
Bob 2023-04-23 22:00:59 +02:00
parent 43c43eb14f
commit d0854bb795
29 changed files with 396 additions and 50 deletions

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=4562
mod_build_number=4578
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\

View File

@ -177,12 +177,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
if(meta > 7) {
if(world.getBlock(x, y - 1, z) == this) {
if(!player.capabilities.isCreativeMode) {
this.dropBlockAsItem(world, x, y - 1, z, world.getBlockMetadata(x, y - 1, z), 0);
}
}
// dead
} else if(world.getBlock(x, y + 1, z) == this) {
if(player.capabilities.isCreativeMode) {

View File

@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry;
import com.hbm.tileentity.TileEntityProxyCombo;
import com.hbm.tileentity.machine.TileEntityCrucible;
import api.hbm.block.ICrucibleAcceptor;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -24,8 +25,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
import net.minecraftforge.common.util.ForgeDirection;
public class MachineCrucible extends BlockDummyable {
public class MachineCrucible extends BlockDummyable implements ICrucibleAcceptor {
public MachineCrucible() {
super(Material.rock);
@ -151,4 +153,31 @@ public class MachineCrucible extends BlockDummyable {
for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(aabb.expand(exp, exp, exp).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1);
ICustomBlockHighlight.cleanup();
}
@Override
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return false;
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(tile instanceof TileEntityCrucible)) return false;
TileEntityCrucible crucible = (TileEntityCrucible) tile;
return crucible.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack);
}
@Override
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return stack;
TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]);
if(!(tile instanceof TileEntityCrucible)) return stack;
TileEntityCrucible crucible = (TileEntityCrucible) tile;
return crucible.pour(world, x, y, z, dX, dY, dZ, side, stack);
}
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
}

View File

@ -3,12 +3,14 @@ package com.hbm.crafting;
import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.*;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.main.CraftingManager;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
/**
@ -123,6 +125,20 @@ public class RodRecipes {
addRBMKRod(ModItems.billet_zfb_pu241, ModItems.rbmk_fuel_zfb_pu241);
addRBMKRod(ModItems.billet_zfb_am_mix, ModItems.rbmk_fuel_zfb_am_mix);
CraftingManager.addShapelessAuto(new ItemStack(ModItems.rbmk_fuel_drx, 1), new Object[] { ModItems.rbmk_fuel_balefire, ModItems.particle_digamma });
addPellet(SA326, EnumWatzType.SCHRABIDIUM);
addPellet(ModItems.ingot_hes, EnumWatzType.HES);
addPellet(ModItems.ingot_schrabidium_fuel, EnumWatzType.MES);
addPellet(ModItems.ingot_les, EnumWatzType.LES);
addPellet(NP237, EnumWatzType.HEN);
addPellet(ModItems.ingot_uranium_fuel, EnumWatzType.MEU);
addPellet(ModItems.ingot_pu_mix, EnumWatzType.MEP);
addPellet(PB, EnumWatzType.LEAD);
addPellet(B, EnumWatzType.BORON);
addPellet(U238, EnumWatzType.DU);
/* GT6 */
if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD);
if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR);
}
//Fill rods with one billet. For fuels only, therefore no unloading or ore dict
@ -223,4 +239,12 @@ public class RodRecipes {
public static void addZIRNOXRod(DictFrame mat, EnumZirnoxType num) {
CraftingManager.addShapelessAuto(new ItemStack(ModItems.rod_zirnox, 1, num.ordinal()), new Object[] { ModItems.rod_zirnox_empty, mat.billet(), mat.billet() });
}
/** Watz pellet crafting **/
public static void addPellet(DictFrame mat, EnumWatzType num) {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', mat.ingot(), 'G', GRAPHITE.ingot() });
}
public static void addPellet(Item item, EnumWatzType num) {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', item, 'G', GRAPHITE.ingot() });
}
}

View File

@ -5,6 +5,8 @@ import com.hbm.config.GeneralConfig;
import com.hbm.inventory.fluid.Fluids;
import static com.hbm.inventory.OreDictManager.*;
import com.hbm.items.ItemGenericPart.EnumPartType;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBattery;
import com.hbm.items.tool.ItemBlowtorch;
@ -137,6 +139,7 @@ public class ToolRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set_boron), new Object[] { "GIG", "GCG", 'G', ModBlocks.glass_boron, 'I', STEEL.ingot(), 'C', CO.ingot() });
CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), new Object[] { "CC ", " I ", "CCC", 'C', CU.plate528(), 'I', IRON.ingot() });
CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.acetylene_torch), new Object[] { "SS ", " PS", " T ", 'S', STEEL.plate528(), 'P', ANY_PLASTIC.ingot(), 'T', ModItems.tank_steel });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.boltgun), new Object[] { "DPS", " RD", " D ", 'D', DURA.ingot(), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'R', RUBBER.ingot(), 'S', ModItems.hull_small_steel });
//Bobmazon
CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string });

View File

@ -29,6 +29,7 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
@ -66,8 +67,9 @@ public class EntityMist extends Entity {
public void onEntityUpdate() {
float height = this.dataWatcher.getWatchableObjectFloat(12);
this.yOffset = -height / 2F;
this.yOffset = 0;
this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height);
this.setPosition(this.posX, this.posY, this.posZ);
if(!worldObj.isRemote) {
@ -90,11 +92,20 @@ public class EntityMist extends Entity {
return;
}
List<Entity> affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox);
AxisAlignedBB aabb = this.boundingBox.copy();
List<Entity> affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, aabb.offset(-this.width / 2, 0, -this.width / 2));
for(Entity e : affected) {
this.affect(e, intensity);
}
} else {
for(int i = 0; i < 2; i++) {
double x = this.boundingBox.minX + rand.nextDouble() * (this.boundingBox.maxX - this.boundingBox.minX);
double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY);
double z = this.boundingBox.minZ + rand.nextDouble() * (this.boundingBox.maxZ - this.boundingBox.minZ);
worldObj.spawnParticle("cloud", x, y, z, 0, 0, 0);
}
}
}

View File

@ -32,6 +32,7 @@ public class EntityCreeperPhosgene extends EntityCreeper {
if(!this.worldObj.isRemote) {
this.setDead();
worldObj.createExplosion(this, posX, posY + this.height / 2, posZ, 2F, false);
EntityMist mist = new EntityMist(worldObj);
mist.setType(Fluids.PHOSGENE);
mist.setPosition(posX, posY, posZ);

View File

@ -80,10 +80,15 @@ public class EntityShrapnel extends EntityThrowable {
}
}
} else if(this.dataWatcher.getWatchableObjectByte(16) == 3) {
if(worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ).isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) {
worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.mud_block);
}
} else {
for(int i = 0; i < 5; i++)
worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
for(int i = 0; i < 5; i++) worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0);
}
worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F);
@ -97,4 +102,8 @@ public class EntityShrapnel extends EntityThrowable {
public void setVolcano(boolean b) {
this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0));
}
public void setWatz(boolean b) {
this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0));
}
}

View File

@ -162,8 +162,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK));
bullet.dmgMax *= 2;
bullet.dmgMin *= 2;
bullet.dmgMax = 20;
bullet.dmgMin = 24;
bullet.velocity *= 2.5;
bullet.maxAge *= 2;
bullet.spread /= 2;
@ -177,8 +177,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = get762NATOConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP));
bullet.dmgMax *= 1.5;
bullet.dmgMin *= 1.5;
bullet.dmgMax = 24;
bullet.dmgMin = 28;
bullet.spentCasing = CASING762NATO.clone().register("762NATOAP");
@ -189,8 +189,8 @@ public class Gun762mmFactory {
final BulletConfiguration bullet = get762NATOConfig();
bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU));
bullet.dmgMax *= 2;
bullet.dmgMin *= 2;
bullet.dmgMax = 36;
bullet.dmgMin = 40;
bullet.spentCasing = CASING762NATO.clone().register("762NATODU");

View File

@ -223,8 +223,8 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler {
case 4: return new int[][] {
{102, 24 - 9},
{120, 24 - 9},
{138 + 36, 24 + 9},
{156 + 36, 24 + 9}
{102, 24 + 9},
{120, 24 + 9}
};
}

View File

@ -9,10 +9,12 @@ import com.hbm.config.GeneralConfig;
import com.hbm.hazard.modifier.*;
import com.hbm.hazard.transformer.*;
import com.hbm.hazard.type.*;
import com.hbm.inventory.OreDictManager.DictFrame;
import com.hbm.inventory.material.MaterialShapes;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType;
import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage;
import com.hbm.util.Compat;
@ -104,6 +106,7 @@ public class HazardRegistry {
public static final float saf = 5.85F;
public static final float sas3 = 5F;
public static final float gh336 = 5.0F;
public static final float mud = 1.0F;
public static final float radsource_mult = 3.0F;
public static final float pobe = po210 * radsource_mult;
public static final float rabe = ra226 * radsource_mult;
@ -429,6 +432,17 @@ public class HazardRegistry {
registerRBMKPellet(rbmk_pellet_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F);
registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F);
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.SCHRABIDIUM), makeData(RADIATION, sa326 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HES), makeData(RADIATION, saf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MES), makeData(RADIATION, saf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.LES), makeData(RADIATION, saf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HEN), makeData(RADIATION, np237 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEU), makeData(RADIATION, uf * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEP), makeData(RADIATION, purg * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4));
HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4));
HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder));
HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult));
HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder));

View File

@ -32,6 +32,7 @@ import com.hbm.util.Compat;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -138,6 +139,7 @@ public class OreDictManager {
public static final DictFrame SBD = new DictFrame("Schrabidate");
public static final DictFrame SRN = new DictFrame("Schraranium");
public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336");
public static final DictFrame MUD = new DictFrame("WatzMud");
/*
* STABLE
*/
@ -297,7 +299,7 @@ public class OreDictManager {
IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron);
GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold);
LAPIS.dust(powder_lapis);
NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz);
NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz).ore(Blocks.quartz_ore);
DIAMOND.dust(powder_diamond).ore(gravel_diamond);
EMERALD.dust(powder_emerald);
@ -331,6 +333,7 @@ public class OreDictManager {
SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate);
SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium);
GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336);
MUD .rad(HazardRegistry.mud) .ingot(ingot_mud);
/*
* STABLE

View File

@ -123,6 +123,7 @@ public class Mats {
public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK);
public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST);
public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK);
public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT);
@Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); }
@Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); }

View File

@ -298,15 +298,13 @@ public class AssemblerRecipes {
makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300);
makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500);
makeRecipe(new ComparableStack(ModBlocks.machine_combine_factory, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(TI.plate(), 4), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.coil_advanced_alloy, 8), new ComparableStack(ModItems.coil_tungsten, 4), new OreDictStack(MAGTUNG.ingot(), 12), },150);
makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.coil_advanced_alloy, 5), },150);
makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200);
makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250);
makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150);
makeRecipe(new ComparableStack(ModBlocks.watz_element, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.rod_empty, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 2), new ComparableStack(ModItems.wire_advanced_alloy, 4), },200);
makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(KNO.dust(), 4), },300);
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.plateTriple()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100);
makeRecipe(new ComparableStack(ModBlocks.watz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_schrabidium, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 12), },350);
makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250);
makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250);
makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300);

View File

@ -20,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.recipes.loader.SerializableRecipe;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
import com.hbm.items.special.ItemByproduct.EnumByproduct;
import com.hbm.main.MainRegistry;
@ -134,6 +135,73 @@ public class CentrifugeRecipes extends SerializableRecipe {
new ItemStack(ModItems.nugget_pu238, 1),
new ItemStack(ModItems.nugget_technetium, 1),
new ItemStack(ModItems.nuclear_waste_tiny, 6) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.SCHRABIDIUM)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 15),
new ItemStack(ModItems.nugget_euphemium, 3),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HES)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 17),
new ItemStack(ModItems.nugget_euphemium, 1),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MES)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 12),
new ItemStack(ModItems.nugget_tantalium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LES)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_solinium, 9),
new ItemStack(ModItems.nugget_tantalium, 9),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HEN)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_pu239, 12),
new ItemStack(ModItems.nugget_technetium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEU)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_pu239, 12),
new ItemStack(ModItems.nugget_bismuth, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEP)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_pu241, 12),
new ItemStack(ModItems.nugget_bismuth, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LEAD)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_lead, 6),
new ItemStack(ModItems.nugget_bismuth, 12),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.BORON)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.powder_coal_tiny, 12),
new ItemStack(ModItems.nugget_co60, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.DU)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_polonium, 12),
new ItemStack(ModItems.nugget_pu238, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
if(OreDictionary.doesOreNameExist("nuggetNaquadria")) {
ItemStack nuggetNQR = OreDictionary.getOres("nuggetNaquadria").get(0);
ItemStack copy = nuggetNQR.copy();
copy.stackSize = 12;
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
copy,
new ItemStack(ModItems.nugget_euphemium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQR)), new ItemStack[] {
new ItemStack(ModItems.ingot_mud, 1),
new ItemStack(ModItems.nugget_co60, 12),
new ItemStack(ModItems.nugget_euphemium, 6),
new ItemStack(ModItems.nuclear_waste, 2) });
}
recipes.put(new ComparableStack(ModItems.powder_cloud), new ItemStack[] {
new ItemStack(ModItems.powder_copper, 1),

View File

@ -96,6 +96,10 @@ public class CrucibleRecipes extends SerializableRecipe {
.inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n))
.outputs(new MaterialStack(Mats.MAT_CDALLOY, i)));
recipes.add(new CrucibleRecipe(13, "crucible.cmb", 3, new ItemStack(ModItems.ingot_combine_steel))
.inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3))
.outputs(new MaterialStack(Mats.MAT_CMB, i)));
registerMoldsForNEI();
}

View File

@ -66,6 +66,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(BIOGAS, 250, ModItems.biomass_compressed);
registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size)
registerRecipe(ENDERJUICE, 100, Items.ender_pearl);
registerRecipe(WATZ, 1000, ModItems.ingot_mud);
registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE));
registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK));

View File

@ -359,6 +359,7 @@ public class ModItems {
public static Item ingot_cadmium;
public static Item powder_cadmium;
public static Item powder_bismuth;
public static Item ingot_mud;
public static Item ingot_lanthanium;
public static Item ingot_actinium;
@ -2651,6 +2652,7 @@ public class ModItems {
ingot_cadmium = new Item().setUnlocalizedName("ingot_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cadmium");
powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium");
powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth");
ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud");
ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct");
@ -5540,6 +5542,7 @@ public class ModItems {
//GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName());
GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName());
GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName());
GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName());
GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName());
GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName());

View File

@ -36,18 +36,18 @@ public class ItemWatzPellet extends ItemEnumMulti {
public static enum EnumWatzType {
SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.02D, new FunctionLinear(1.5D), new FunctionSqrt(1D/20D).withOff(20D * 20D), null),
HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.01D, new FunctionLinear(1.25D), new FunctionSqrt(1/15D).withOff(15D*15D), null),
MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.005D, new FunctionLinear(1.15D), new FunctionSqrt(1/15D).withOff(15D*15D), null),
LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.0025D, new FunctionLinear(1D), new FunctionSqrt(1/10D).withOff(10D*10D), null),
HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.001D, new FunctionSqrt(100), null, null),
MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.001D, new FunctionSqrt(75), null, null),
MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.001D, new FunctionSqrt(150), new FunctionSqrt(1D/20D).withOff(20D * 20D), null),
LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.005D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient
BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.005D, null, null, new FunctionLinear(10)), //improved absorber, linear
DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.005D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient
NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.02D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null),
NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.02D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null);
SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.01D, new FunctionLinear(1.5D), new FunctionSqrtFalling(10D), null),
HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.005D, new FunctionLinear(1.25D), new FunctionSqrtFalling(15D), null),
MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.0025D, new FunctionLinear(1.15D), new FunctionSqrtFalling(15D), null),
LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.00125D, new FunctionLinear(1D), new FunctionSqrtFalling(20D), null),
HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.0005D, new FunctionSqrt(100), new FunctionSqrtFalling(10D), null),
MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.0005D, new FunctionSqrt(75), new FunctionSqrtFalling(10D), null),
MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.0005D, new FunctionSqrt(150), new FunctionSqrtFalling(10D), null),
LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.0025D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient
BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.0025D, null, null, new FunctionLinear(10)), //improved absorber, linear
DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.0025D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient
NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null),
NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null);
public double yield = 1_000_000_000;
public int colorLight;
@ -123,6 +123,9 @@ public class ItemWatzPellet extends ItemEnumMulti {
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) {
if(this != ModItems.watz_pellet) return;
EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage());
list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%");
@ -145,7 +148,7 @@ public class ItemWatzPellet extends ItemEnumMulti {
@Override
public boolean showDurabilityBar(ItemStack stack) {
return getDurabilityForDisplay(stack) > 0D;
return this == ModItems.watz_pellet && getDurabilityForDisplay(stack) > 0D;
}
@Override
@ -184,6 +187,7 @@ public class ItemWatzPellet extends ItemEnumMulti {
@Override
public void onCreated(ItemStack stack, World world, EntityPlayer player) {
if(this != ModItems.watz_pellet) return;
setNBTDefaults(stack); //minimize the window where NBT screwups can happen
}
}

View File

@ -690,7 +690,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
GunConfiguration gcfg = gun.mainConfig;
if(type == ElementType.HOTBAR) {
BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(stack)));
int mag = ItemGunBase.getMagType(stack);
if(gun.mainConfig.config.size() == 0) return;
BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(mag < gun.mainConfig.config.size() ? mag : 0));
if(bcfg == null) {
return;

View File

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

View File

@ -366,7 +366,8 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', ModItems.bolt_tungsten, 'I', MINGRADE.ingot() });
addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() });
addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 });
addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateTriple(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_cooler), 1), new Object[] { "IPI", "IPI", "IPI", 'I', TI.ingot(), 'P', TI.plate() });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_tank), 1), new Object[] { "CGC", "GGG", "CGC", 'C', CMB.plate(), 'G', KEY_ANYPANE });
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_scaffold), 1), new Object[] { "IPI", "P P", "IPI", 'I', W.ingot(), 'P', getReflector() });
@ -765,6 +766,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium });
addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS });
addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater });
addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateTriple(), 'H', ModBlocks.watz_cooler });
addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch });
addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse });
addRecipeAuto(new ItemStack(ModItems.catalytic_converter, 1), new Object[] { "PCP", "PBP", "PCP", 'P', ANY_HARDPLASTIC.ingot(), 'C', CO.dust(), 'B', BI.ingot() });

View File

@ -29,7 +29,7 @@ public class RenderShrapnel extends Render {
bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png"));
if(rocket instanceof EntityShrapnel) {
if(rocket.getDataWatcher().getWatchableObjectByte(16) == 2) { //scale up lava blobs
if(rocket.getDataWatcher().getWatchableObjectByte(16) >= 2) { //scale up lava blobs
GL11.glScaled(3, 3, 3);
}
}

View File

@ -23,6 +23,7 @@ import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.CrucibleUtil;
import api.hbm.block.ICrucibleAcceptor;
import api.hbm.tile.IHeatSource;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
@ -41,7 +42,7 @@ import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine {
public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine {
public int heat;
public int progress;
@ -529,4 +530,57 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
@Override
public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
CrucibleRecipe recipe = getLoadedRecipe();
if(recipe == null) {
return getQuantaFromType(this.wasteStack, null) < this.wasteZCapacity;
}
int recipeContent = recipe.getInputAmount();
int recipeInputRequired = getQuantaFromType(recipe.input, stack.material);
int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent;
int amountStored = getQuantaFromType(recipeStack, stack.material);
return amountStored < matMaximum;
}
@Override
public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) {
CrucibleRecipe recipe = getLoadedRecipe();
if(recipe == null) {
int amount = getQuantaFromType(this.wasteStack, null);
if(amount + stack.amount <= this.wasteZCapacity) {
this.addToStack(this.wasteStack, stack.copy());
return null;
} else {
int toAdd = this.wasteZCapacity - amount;
this.addToStack(this.wasteStack, new MaterialStack(stack.material, toAdd));
return new MaterialStack(stack.material, stack.amount - toAdd);
}
}
int recipeContent = recipe.getInputAmount();
int recipeInputRequired = getQuantaFromType(recipe.input, stack.material);
int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent;
if(recipeInputRequired + stack.amount <= matMaximum) {
this.addToStack(this.recipeStack, stack.copy());
return null;
}
int toAdd = matMaximum - stack.amount;
this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd));
return new MaterialStack(stack.material, stack.amount - toAdd);
}
@Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; }
@Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; }
}

View File

@ -2,8 +2,11 @@ package com.hbm.tileentity.machine;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.entity.projectile.EntityShrapnel;
import com.hbm.handler.radiation.ChunkRadiationManager;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.container.ContainerWatz;
import com.hbm.inventory.fluid.Fluids;
@ -14,6 +17,9 @@ import com.hbm.inventory.gui.GUIWatz;
import com.hbm.items.ModItems;
import com.hbm.items.machine.ItemWatzPellet;
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityMachineBase;
import com.hbm.util.Compat;
@ -22,10 +28,13 @@ import com.hbm.util.fauxpointtwelve.DirPos;
import com.hbm.util.function.Function;
import api.hbm.fluid.IFluidStandardTransceiver;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
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.init.Blocks;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -126,6 +135,29 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
}
segments.get(segments.size() - 1).sendOutBottom();
/* explode on mud overflow */
if(sharedTanks[2].getFill() > 0) {
for(int x = -3; x <= 3; x++) {
for(int y = 3; y < 6; y++) {
for(int z = -3; z <= 3; z++) {
worldObj.setBlock(xCoord + x, yCoord + y, zCoord + z, Blocks.air);
}
}
}
this.disassemble();
ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord + 1, zCoord, 1_000F);
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.rbmk_explosion", 50.0F, 1.0F);
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "rbmkmush");
data.setFloat("scale", 5);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 2, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250));
MainRegistry.proxy.effectNT(data);
return;
}
}
}
@ -137,7 +169,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
public void updateCoolant(FluidTank[] tanks) {
double coolingFactor = 0.05D; //20% per tick, TEMP
double coolingFactor = 0.1D; //10% per tick, TEMP
double heatToUse = this.heat * coolingFactor;
FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class);
@ -215,17 +247,21 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
}
for(int i = 0; i < 24; i++) {
ItemStack stack = slots[i];
/* deplete */
if(stack != null && stack.getItem() == ModItems.watz_pellet && ItemWatzPellet.getEnrichment(stack) <= 0) {
slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stack.getItemDamage());
continue; // depleted pellets may persist for one tick
}
}
if(above != null) {
for(int i = 0; i < 24; i++) {
ItemStack stackBottom = slots[i];
ItemStack stackTop = above.slots[i];
/* deplete */
if(stackBottom != null && stackBottom.getItem() == ModItems.watz_pellet && ItemWatzPellet.getYield(stackBottom) <= 0) {
slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stackBottom.getItemDamage());
continue; // depleted pellets may persist for one tick
}
/* items fall down if the bottom slot is empty */
if(stackBottom == null && stackTop != null) {
slots[i] = stackTop.copy();
@ -407,6 +443,73 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand
return bb;
}
private void disassemble() {
int count = 20;
Random rand = worldObj.rand;
for(int i = 0; i < count * 5; i++) {
EntityShrapnel shrapnel = new EntityShrapnel(worldObj);
shrapnel.posX = xCoord + 0.5;
shrapnel.posY = yCoord + 3;
shrapnel.posZ = zCoord + 0.5;
shrapnel.motionY = ((rand.nextFloat() * 0.5) + 0.5) * (1 + (count / (15 + rand.nextInt(21)))) + (rand.nextFloat() / 50 * count);
shrapnel.motionX = rand.nextGaussian() * 1 * (1 + (count / 100));
shrapnel.motionZ = rand.nextGaussian() * 1 * (1 + (count / 100));
shrapnel.setWatz(true);
worldObj.spawnEntityInWorld(shrapnel);
}
worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.mud_block);
worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.mud_block);
worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.mud_block);
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, 2, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 1);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 2);
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, -2, 0);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -1);
setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -2);
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 1);
setBrokenColumn(0, ModBlocks.watz_element, 0, 1, -1);
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 1);
setBrokenColumn(0, ModBlocks.watz_element, 0, -1, -1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, 1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, -1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, 2);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, 2);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, 1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, -1);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, -2);
setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, -2);
for(int j = -1; j < 2; j++) {
setBrokenColumn(1, ModBlocks.watz_end, 1, 3, j);
setBrokenColumn(1, ModBlocks.watz_end, 1, j, 3);
setBrokenColumn(1, ModBlocks.watz_end, 1, -3, j);
setBrokenColumn(1, ModBlocks.watz_end, 1, j, -3);
}
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, 2);
setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2);
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2);
setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2);
}
private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) {
int height = minHeight + worldObj.rand.nextInt(3 - minHeight);
for(int i = 0; i < 3; i++) {
if(i <= height) {
worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, b, meta, 3);
} else {
worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, ModBlocks.mud_block);
}
}
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {

View File

@ -64,6 +64,13 @@ public abstract class Function {
@Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; }
}
public static class FunctionSqrtFalling extends FunctionSqrt {
public FunctionSqrtFalling(double fallFactor) {
super(1D / fallFactor);
this.withOff(fallFactor * fallFactor);
}
}
public static class FunctionLinear extends FunctionSingleArg {
public FunctionLinear(double level) { super(level); }
@Override public double effonix(double x) { return getX(x) * this.level; }

View File

@ -416,6 +416,7 @@ container.zirnox=ZIRNOX Atomreaktor
crucible.aa=Herstellung - Fortgeschrittene Legierung
crucible.cdalloy=Herstellung Cadmiumstahl
crucible.cmb=Herstellung CMB-Stahl
crucible.ferro=Herstellung - Ferrouran
crucible.hematite=Herstellung - Eisen aus Hämatit
crucible.hss=Herstellung - Schnellarbeitsstahl
@ -781,6 +782,7 @@ hbmmat.uranium=Uran
hbmmat.uranium233=Uran-233
hbmmat.uranium235=Uran-235
hbmmat.uranium238=Uran-238
hbmmat.watzmud=Giftiger Schlamm
hbmmat.whitephosphorus=Weißer Phosphor
hbmmat.workersalloy=Desh
hbmmat.wroughtiron=Schmiedeeisen
@ -2014,6 +2016,7 @@ item.ingot_magnetized_tungsten.name=Magnetisierter Wolframbarren
item.ingot_meteorite.name=Meteoritenbarren
item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren
item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren
item.ingot_mud.name=Fester Schlammziegel
item.ingot_neptunium.name=Neptuniumbarren
item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren
item.ingot_niobium.name=Niobbarren
@ -4277,6 +4280,7 @@ tile.waste_mycelium.name=Leuchtende Myzel
tile.waste_planks.name=Verkohlte Holzbretter
tile.waste_trinitite.name=Trinititerz
tile.waste_trinitite_red.name=Rotes Trinititerz
tile.watz.name=Watzkraftwerk
tile.watz_conductor.name=Watz-Stromanschluss
tile.watz_control.name=Verstärkte Steuerstäbe
tile.watz_cooler.name=Watz-Superkühler
@ -4285,6 +4289,7 @@ tile.watz_element.name=Watzreaktionskammer
tile.watz_end.name=Watz-Stabilitätselement
tile.watz_end_bolted.name=Watz-Stabilitätselement (Genietet)
tile.watz_hatch.name=Watzreaktorzugriffsluke
tile.watz_pump.name=Watz-Druckpumpe
tile.yellow_barrel.name=Radioaktives Fass
tile.zirnox_destroyed.name=Zerstörter ZINOX

View File

@ -709,6 +709,7 @@ container.zirnox=ZIRNOX Nuclear Reactor
crucible.aa=Advanced Alloy Production
crucible.cdalloy=Cadmium Steel Production
crucible.cmb=CMB Steel Production
crucible.ferro=Ferrouranium Production
crucible.hematite=Iron Production from Hematite
crucible.hss=High-Speed Steel Production
@ -1358,6 +1359,7 @@ hbmmat.uranium=Uranium
hbmmat.uranium233=Uranium-233
hbmmat.uranium235=Uranium-235
hbmmat.uranium238=Uranium-238
hbmmat.watzmud=Poisonous Mud
hbmmat.whitephosphorus=White Phosphorus
hbmmat.workersalloy=Desh
hbmmat.wroughtiron=Wroght Iron
@ -2663,6 +2665,7 @@ item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot
item.ingot_meteorite.name=Meteorite Ingot
item.ingot_meteorite_forged.name=Forged Meteorite Ingot
item.ingot_mox_fuel.name=Ingot of MOX Fuel
item.ingot_mud.name=Solid Mud Brick
item.ingot_neptunium.name=Neptunium Ingot
item.ingot_neptunium.desc=That one's my favourite!
item.ingot_neptunium.desc.P11=Woo, scary!
@ -5095,6 +5098,7 @@ tile.waste_mycelium.name=Glowing Mycelium
tile.waste_planks.name=Charred Wooden Planks
tile.waste_trinitite.name=Trinitite Ore
tile.waste_trinitite_red.name=Red Trinitite Ore
tile.watz.name=Watz Powerplant
tile.watz_conductor.name=Watz Electricity Port
tile.watz_control.name=Reinforced Control Rods
tile.watz_cooler.name=Watz Reactor Supercooler
@ -5103,6 +5107,7 @@ tile.watz_element.name=Watz Reaction Chamber
tile.watz_end.name=Watz Reactor Stability Element
tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted)
tile.watz_hatch.name=Watz Reactor Access Hatch
tile.watz_pump.name=Watz Pressure Pump
tile.yellow_barrel.name=Radioactive Barrel
tile.zirnox_destroyed.name=Destroyed ZINROX

Binary file not shown.

After

Width:  |  Height:  |  Size: 537 B