le ponge die bob

new rust steel deco block (no more shittium recolor)
updated carrier to use it
naval mine model and texture swapped to legendarydoge30's
new effects for naval mine explosion (out of water and in water both have different effects)
crafting recipies added for all new things
dos uno
This commit is contained in:
Lazzzycatwastaken 2025-03-30 19:00:30 +02:00
parent 1b53215e61
commit 1ecbc015a3
17 changed files with 9671 additions and 10954 deletions

View File

@ -6,11 +6,7 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.config.ServerConfig;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth;
import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon;
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
import com.hbm.explosion.vanillant.standard.*;
import com.hbm.interfaces.IBomb;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.XFactoryCatapult;
@ -22,10 +18,12 @@ import com.hbm.tileentity.bomb.TileEntityLandmine;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.BlockDirectional;
import net.minecraft.block.BlockFence;
import net.minecraft.block.material.Material;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -33,6 +31,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class Landmine extends BlockContainer implements IBomb {
@ -67,9 +66,7 @@ public class Landmine extends BlockContainer implements IBomb {
if(this == ModBlocks.mine_ap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f);
if(this == ModBlocks.mine_he) this.setBlockBounds(4 * f, 0.0F, 4 * f, 12 * f, 2 * f, 12 * f);
if(this == ModBlocks.mine_shrap) this.setBlockBounds(5 * f, 0.0F, 5 * f, 11 * f, 1 * f, 11 * f);
if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);
if(this == ModBlocks.mine_naval) this.setBlockBounds(5 * f, 0.0F, 10 * f, 10 * f, 10 * f, 10 * f);
}
if(this == ModBlocks.mine_fat) this.setBlockBounds(5 * f, 0.0F, 4 * f, 11 * f, 6 * f, 12 * f);}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
@ -134,6 +131,18 @@ public class Landmine extends BlockContainer implements IBomb {
return false;
}
public boolean isWaterAbove(World world, int x, int y, int z) {
for(int xo = -1; xo <= 1; xo++) {
for(int zo = -1; zo <= 1; zo++) {
Block blockAbove = world.getBlock(x + xo, y + 1, z + zo);
if(blockAbove == Blocks.water || blockAbove == Blocks.flowing_water) {
return true;
}
}
}
return false;
}
@Override
public BombReturnCode explode(World world, int x, int y, int z) {
@ -167,7 +176,6 @@ public class Landmine extends BlockContainer implements IBomb {
ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D);
ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5);
} else if(this == ModBlocks.mine_fat) {
ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10);
vnt.setBlockAllocator(new BlockAllocatorStandard(64));
vnt.setBlockProcessor(new BlockProcessorStandard());
@ -186,13 +194,16 @@ public class Landmine extends BlockContainer implements IBomb {
vnt.setBlockProcessor(new BlockProcessorStandard());
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_NAVAL_DAMAGE.get()).setupPiercing(5F, 0.2F));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F));
vnt.setSFX(new ExplosionEffectWeapon(6, 1F, 0.5F));
vnt.explode();
ExplosionLarge.spawnParticlesRadial(world, x + 0.5, y + 2, z + 0.5, 10);
ExplosionLarge.spawnParticlesRadial(world, x + 0.5, y + 2, z + 0.5, 30);
ExplosionLarge.spawnRubble(world,x + 0.5, y + 0.5, z + 0.5, 5 );
ExplosionLarge.spawnSplash(world, x + 0.5, y + 0.5, z + 0.5, 30);
ExplosionLarge.spawnFoam(world, x + 0.5, y + 0.5, z + 0.5, 50);
// Only spawn water effects if there's water above the mine
if (isWaterAbove(world, x, y, z)) {
ExplosionLarge.spawnFoam(world, x + 0.5, y + 0.5, z + 0.5, 60);
}
}
}

View File

@ -40,15 +40,6 @@ public class ExplosionLarge {
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 250));
}
public static void spawnSplash(World world, double x, double y, double z, int count) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "smoke");
data.setString("mode", "waterSplash");
data.setInteger("count", count);
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(world.provider.dimensionId, x, y, z, 250));
}
public static void spawnFoam(World world, double x, double y, double z, int count) {
NBTTagCompound data = new NBTTagCompound();

View File

@ -46,18 +46,18 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class AssemblerRecipes extends SerializableRecipe {
public static HashMap<ComparableStack, AssemblerRecipe> recipes = new HashMap();
public static List<ComparableStack> recipeList = new ArrayList();
/** Legacy NOP, WarTec needs this */
public static void loadRecipes() { }
@Override
public void registerDefaults() {
boolean exp = GeneralConfig.enableExpensiveMode;
makeRecipe(new ComparableStack(ModItems.plate_iron, 2), new AStack[] {new OreDictStack(IRON.ingot(), 3), },30);
makeRecipe(new ComparableStack(ModItems.plate_gold, 2), new AStack[] {new OreDictStack(GOLD.ingot(), 3), },30);
makeRecipe(new ComparableStack(ModItems.plate_titanium, 2), new AStack[] {new OreDictStack(TI.ingot(), 3), },30);
@ -153,6 +153,7 @@ 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.mine_naval, 1), new AStack[] {new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED), new ComparableStack(ModBlocks.block_semtex, 5)},300);
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);
@ -187,7 +188,7 @@ public class AssemblerRecipes extends SerializableRecipe {
makeRecipe(new ComparableStack(ModItems.boy_shielding, 1), new AStack[] {new OreDictStack(OreDictManager.getReflector(), 12), new OreDictStack(STEEL.plate528(), 4), },150);
makeRecipe(new ComparableStack(ModItems.boy_target, 1), new AStack[] {new OreDictStack(U235.nugget(), 18), },200);
makeRecipe(new ComparableStack(ModItems.boy_bullet, 1), new AStack[] {new OreDictStack(U235.nugget(), 9), },100);
makeRecipe(new ComparableStack(ModItems.boy_propellant, 1), new AStack[] {new ComparableStack(ModItems.cordite, 8), new OreDictStack(IRON.plate528(), 8), new OreDictStack(AL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 4), },100);
makeRecipe(new ComparableStack(ModItems.boy_propellant, 1), new AStack[] {new ComparableStack(ModItems.cordite, 8), new OreDictStack(IRON.plate528(), 8), new OreDictStack(AL.plate528(), 4), new OreDictStack(MINGRADE.wireFine(), 4), },100);
makeRecipe(new ComparableStack(ModItems.boy_igniter, 1), new AStack[] {new OreDictStack(ANY_HIGHEXPLOSIVE.ingot(), 1), new OreDictStack(AL.plate528(), 6), new OreDictStack(STEEL.plate528(), 1), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(MINGRADE.wireFine(), 3), },150); //HE for gating purposes
makeRecipe(new ComparableStack(ModItems.man_igniter, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED.ordinal()), new OreDictStack(MINGRADE.wireFine(), 9), },150);
makeRecipe(new ComparableStack(ModItems.man_core, 1), new AStack[] {new OreDictStack(PU239.nugget(), 8), new OreDictStack(BE.nugget(), 2), },250);
@ -264,7 +265,7 @@ public class AssemblerRecipes extends SerializableRecipe {
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),
@ -273,7 +274,7 @@ public class AssemblerRecipes extends SerializableRecipe {
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),
@ -378,7 +379,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.ingot_cft, 16),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
}, 500);
makeRecipe(new ComparableStack(ModBlocks.machine_fensu, 1), new AStack[] {
new ComparableStack(ModItems.ingot_electronium, 32),
new ComparableStack(ModBlocks.machine_dineutronium_battery, 16),
@ -477,7 +478,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.drillbit, 1, EnumDrillType.STEEL.ordinal()),
new OreDictStack(DIAMOND.dust(), 16)
}, 100);
makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()), new AStack[] {
new OreDictStack(DURA.ingot(), 12),
new OreDictStack(ANY_PLASTIC.ingot(), 12),
@ -487,7 +488,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.drillbit, 1, EnumDrillType.HSS.ordinal()),
new OreDictStack(DIAMOND.dust(), 24)
}, 100);
makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()), new AStack[] {
new OreDictStack(DESH.ingot(), 16),
new OreDictStack(RUBBER.ingot(), 12),
@ -497,7 +498,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.drillbit, 1, EnumDrillType.DESH.ordinal()),
new OreDictStack(DIAMOND.dust(), 32)
}, 100);
makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new AStack[] {
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 20),
new OreDictStack(DESH.ingot(), 12),
@ -507,7 +508,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()),
new OreDictStack(DIAMOND.dust(), 48)
}, 100);
makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new AStack[] {
new OreDictStack(FERRO.ingot(), 24),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12),
@ -517,7 +518,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()),
new OreDictStack(DIAMOND.dust(), 56)
}, 100);
makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.plate528(), 12) : new OreDictStack(STEEL.heavyComp(), 1),
new OreDictStack(RUBBER.ingot(), 4),
@ -539,7 +540,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(DURA.pipe(), 16),
new OreDictStack(STEEL.pipe(), 16)
}, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_condenser_powered, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.plateWelded(), 8) : new OreDictStack(STEEL.heavyComp(), 3),
new OreDictStack(ANY_RESISTANTALLOY.plateWelded(), 4),
@ -548,7 +549,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(STEEL.pipe(), 24),
new OreDictStack(Fluids.LUBRICANT.getDict(1_000), 4)
}, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_lithium_battery, 3),
new OreDictStack(ND.wireDense(), 32),
@ -560,7 +561,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(CU.plateCast(), 8),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
}, 600);
makeRecipe(new ComparableStack(ModBlocks.reactor_zirnox, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.shell(), 4) : new OreDictStack(STEEL.heavyComp(), 1),
new OreDictStack(STEEL.pipe(), 8),
@ -591,7 +592,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 64, EnumCircuitType.CONTROLLER_QUANTUM),
new ComparableStack(ModItems.coin_ufo, 1),
}, 1200, ModItems.journal_bj);
makeRecipe(new ComparableStack(ModBlocks.vault_door, 1), new AStack[] {
new OreDictStack(STEEL.ingot(), 32),
new OreDictStack(W.ingot(), 32),
@ -602,7 +603,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(DURA.bolt(), 16),
new ComparableStack(ModItems.motor, 3),
}, 200);
makeRecipe(new ComparableStack(ModBlocks.blast_door, 1), new AStack[] {
new OreDictStack(STEEL.ingot(), 8),
new OreDictStack(W.ingot(), 8),
@ -613,7 +614,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(DURA.bolt(), 4),
new ComparableStack(ModItems.motor, 1),
}, 300);
makeRecipe(new ComparableStack(ModBlocks.fire_door, 1), new AStack[] {
new OreDictStack(STEEL.ingot(), 8),
new OreDictStack(STEEL.plate(), 8),
@ -728,7 +729,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModBlocks.machine_radar, 1),
new ComparableStack(ModItems.crt_display, 1)
}, 300);
makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL), new AStack[] {
new OreDictStack(STEEL.plate(), 24),
new OreDictStack(ANY_PLASTIC.ingot(), 12),
@ -794,7 +795,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(Fluids.PEROXIDE.getDict(1_000), 16),
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.ADVANCED),
}, 100);
makeRecipe(new ComparableStack(ModBlocks.machine_silex, 1), new AStack[] {
new ComparableStack(ModBlocks.glass_quartz, 16),
!exp ? new OreDictStack(STEEL.plateCast(), 8) : new OreDictStack(STEEL.heavyComp(), 1),
@ -810,14 +811,14 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR),
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC)
}, 400);
makeRecipe(new ComparableStack(ModBlocks.rbmk_blank, 1), new AStack[] {
new ComparableStack(ModBlocks.concrete_asbestos, 4),
!exp ? new OreDictStack(STEEL.plate528(), 4) : new OreDictStack(STEEL.plateCast(), 16),
new OreDictStack(CU.ingot(), 4),
new ComparableStack(ModItems.plate_polymer, 4)
}, 100);
makeRecipe(new ComparableStack(ModItems.multitool_hit, 1), new AStack[] {
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4),
new OreDictStack(STEEL.plate(), 4),
@ -825,7 +826,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.motor, 4),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD)
}, 100);
makeRecipe(new ComparableStack(ModBlocks.machine_assemfac, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8),
@ -837,7 +838,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(STEEL.pipe(), 8),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
}, 400);
makeRecipe(new ComparableStack(ModBlocks.machine_chemfac, 1), new AStack[] {
!exp ? new OreDictStack(STEEL.ingot(), 48) : new OreDictStack(STEEL.heavyComp(), 2),
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8),
@ -850,7 +851,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(STEEL.pipe(), 8),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC)
}, 400);
makeRecipe(new ComparableStack(ModItems.missile_shuttle, 1), new AStack[] {
new ComparableStack(ModItems.missile_generic, 2),
new ComparableStack(ModItems.missile_strong, 1),
@ -862,7 +863,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(KEY_ANYPANE, 6),
new OreDictStack(STEEL.plate(), 4),
}, 100);
makeRecipe(new ComparableStack(ModBlocks.machine_difurnace_rtg_off, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_difurnace_off, 1),
new ComparableStack(ModItems.rtg_unit, 3),
@ -982,7 +983,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModBlocks.capacitor_tantalium, 1),
new ComparableStack(ModBlocks.glass_quartz, 16)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.launch_pad_large, 1), new AStack[] {
new OreDictStack(STEEL.plateCast(), 6),
@ -997,7 +998,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED)
}, 400);
makeRecipe(new ComparableStack(ModItems.euphemium_capacitor, 1), new AStack[] {
new OreDictStack(NB.ingot(), 4),
new ComparableStack(ModItems.redcoil_capacitor, 1),
@ -1083,7 +1084,7 @@ public class AssemblerRecipes extends SerializableRecipe {
makeRecipe(new ComparableStack(ModBlocks.machine_radgen, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(STEEL.plate(), 32), new ComparableStack(ModItems.coil_magnetized_tungsten, 6), new OreDictStack(MAGTUNG.wireFine(), 24), new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), new ComparableStack(ModItems.reactor_core, 3), new OreDictStack(STAR.ingot(), 1), new OreDictStack("dyeRed", 1), }, 400, ModItems.journal_pip);
makeRecipe(new ComparableStack(ModBlocks.machine_reactor_breeding, 1), new AStack[] {new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1)},150);
makeRecipe(new ComparableStack(ModBlocks.reactor_research, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.motor_desh, 2), new OreDictStack(B.ingot(), 5), new OreDictStack(PB.plate(), 8), new ComparableStack(ModItems.crt_display, 3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC), },300);
} else {
addTantalium(new ComparableStack(ModBlocks.machine_centrifuge, 1), 5);
addTantalium(new ComparableStack(ModBlocks.machine_gascent, 1), 25);
@ -1096,7 +1097,7 @@ public class AssemblerRecipes extends SerializableRecipe {
addTantalium(new ComparableStack(ModBlocks.machine_mining_laser, 1), 30);
addTantalium(new ComparableStack(ModBlocks.machine_vacuum_distill, 1), 50);
addTantalium(new ComparableStack(ModBlocks.machine_catalytic_reformer, 1), 50);
addTantalium(new ComparableStack(ModBlocks.turret_chekhov, 1), 3);
addTantalium(new ComparableStack(ModBlocks.turret_friendly, 1), 3);
addTantalium(new ComparableStack(ModBlocks.turret_jeremy, 1), 3);
@ -1106,7 +1107,7 @@ public class AssemblerRecipes extends SerializableRecipe {
addTantalium(new ComparableStack(ModBlocks.turret_maxwell, 1), 3);
addTantalium(new ComparableStack(ModBlocks.turret_fritz, 1), 3);
addTantalium(new ComparableStack(ModBlocks.launch_pad, 1), 5);
makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_lithium_battery, 3),
new ComparableStack(ModBlocks.hadron_coil_neodymium, 8),
@ -1120,7 +1121,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC),
new ComparableStack(ModItems.circuit, 50, EnumCircuitType.CAPACITOR_BOARD)
}, 600);
makeRecipe(new ComparableStack(ModBlocks.rbmk_console, 1), new AStack[] {
new OreDictStack(STEEL.ingot(), 16),
new OreDictStack(AL.plate528(), 32),
@ -1129,7 +1130,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 20, EnumCircuitType.CAPACITOR_BOARD),
new ComparableStack(ModItems.crt_display, 8),
}, 300);
makeRecipe(new ComparableStack(ModBlocks.rbmk_crane_console, 1), new AStack[] {
new OreDictStack(STEEL.ingot(), 16),
new OreDictStack(AL.plate528(), 8),
@ -1137,7 +1138,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BASIC),
new ComparableStack(ModItems.circuit, 10, EnumCircuitType.CAPACITOR_BOARD),
}, 300);
makeRecipe(new ComparableStack(ModBlocks.struct_launcher_core, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_battery, 3),
new ComparableStack(ModBlocks.steel_scaffold, 10),
@ -1146,7 +1147,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED),
new ComparableStack(ModItems.circuit, 15, EnumCircuitType.CAPACITOR_BOARD),
}, 200);
makeRecipe(new ComparableStack(ModBlocks.struct_launcher_core_large, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_battery, 5),
new ComparableStack(ModBlocks.steel_scaffold, 10),
@ -1155,7 +1156,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED),
new ComparableStack(ModItems.circuit, 25, EnumCircuitType.CAPACITOR_BOARD),
}, 200);
makeRecipe(new ComparableStack(ModBlocks.struct_soyuz_core, 1), new AStack[] {
new ComparableStack(ModBlocks.machine_lithium_battery, 5),
new ComparableStack(ModBlocks.steel_scaffold, 24),
@ -1166,7 +1167,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 100, EnumCircuitType.CAPACITOR_BOARD),
}, 200);
}
makeRecipe(new ComparableStack(ModBlocks.machine_fracking_tower), new AStack[] {
new ComparableStack(ModBlocks.steel_scaffold, 40),
new ComparableStack(ModBlocks.concrete_smooth, 64),
@ -1177,7 +1178,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.tank_steel, 24),
new ComparableStack(ModItems.pipes_steel, 2)
}, 600);
makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_cracker), new AStack[] {
new ComparableStack(ModBlocks.steel_scaffold, 16),
!exp ? new OreDictStack(STEEL.shell(), 6) : new OreDictStack(STEEL.heavyComp()),
@ -1185,7 +1186,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new OreDictStack(NB.ingot(), 2),
new ComparableStack(ModItems.catalyst_clay, 12),
}, 300);
makeRecipe(new ComparableStack(ModBlocks.machine_liquefactor), new AStack[] {
new OreDictStack(STEEL.ingot(), 8),
new OreDictStack(CU.plate528(), 12),
@ -1195,7 +1196,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.catalyst_clay, 4),
new ComparableStack(ModItems.coil_tungsten, 8)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.machine_solidifier), new AStack[] {
new OreDictStack(ANY_CONCRETE.any(), 8),
new OreDictStack(AL.plate528(), 12),
@ -1205,7 +1206,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.catalyst_clay, 4),
new ComparableStack(ModItems.coil_copper, 4)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.machine_radiolysis), new AStack[] {
new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4),
new OreDictStack(RUBBER.ingot(), 8),
@ -1214,7 +1215,7 @@ public class AssemblerRecipes extends SerializableRecipe {
new ComparableStack(ModItems.thermo_element, 8),
new ComparableStack(ModItems.tank_steel, 3)
}, 200);
makeRecipe(new ComparableStack(ModBlocks.transition_seal, 1), new AStack[]{
new ComparableStack(ModBlocks.cmb_brick_reinforced, 16),
new OreDictStack(STEEL.plate(), 64),
@ -1243,13 +1244,13 @@ public class AssemblerRecipes extends SerializableRecipe {
makeRecipe(new ComparableStack(ModBlocks.sliding_seal_door, 1), new AStack[]{new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack("dyeWhite", 2)}, 200);
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(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(BIGMT.plateCast(), 16),
new OreDictStack(CU.plateWelded(), 12),
@ -1261,13 +1262,13 @@ public class AssemblerRecipes extends SerializableRecipe {
}, 1200);
}
}
for(NTMMaterial mat : Mats.orderedList) {
if(mat.autogen.contains(MaterialShapes.CASTPLATE) && mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) {
makeRecipe(new ComparableStack(ModItems.heavy_component, 1, mat.id), new AStack[] { new OreDictStack(MaterialShapes.CASTPLATE.name() + mat.names[0], 256) }, 12_000);
}
}
// WarTec compatibility code
try {
Class wartecmodAssemblerRecipes = ClassLoader.getSystemClassLoader().loadClass("com.wartec.wartecmod.inventory.wartecmodAssemblerRecipes");
@ -1278,18 +1279,18 @@ public class AssemblerRecipes extends SerializableRecipe {
MainRegistry.logger.info("WarTec recipes loaded!");
} catch(Exception e) { }
}
public static void makeRecipe(ComparableStack out, AStack[] in, int duration) {
makeRecipe(out, in, duration, ModItems.template_folder);
}
public static void makeRecipe(ComparableStack out, AStack[] in, int duration, Item... folder) {
if(out == null || Item.itemRegistry.getNameForObject(out.item) == null) {
MainRegistry.logger.error("Canceling assembler registration, item was null!");
return;
}
AssemblerRecipe recipe = new AssemblerRecipe(in, duration, folder);
recipes.put(out, recipe);
recipeList.add(out);
@ -1314,13 +1315,13 @@ public class AssemblerRecipes extends SerializableRecipe {
@Override
public void readRecipe(JsonElement recipe) {
JsonObject obj = recipe.getAsJsonObject();
ItemStack output = this.readItemStack(obj.get("output").getAsJsonArray());
AStack[] input = this.readAStackArray(obj.get("input").getAsJsonArray());
int duration = obj.get("duration").getAsInt();
if(output == null || output.getItem() == ModItems.nothing) return;
if(obj.has("folders")) {
JsonArray array = obj.get("folders").getAsJsonArray();
List<Item> items = new ArrayList();
@ -1337,46 +1338,46 @@ public class AssemblerRecipes extends SerializableRecipe {
@Override
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
Entry<ComparableStack, AssemblerRecipe> entry = (Entry<ComparableStack, AssemblerRecipe>) recipe;
writer.name("output");
this.writeItemStack(entry.getKey().toStack(), writer);
writer.name("input").beginArray();
for(AStack stack : entry.getValue().ingredients) this.writeAStack(stack, writer);
writer.endArray();
writer.name("duration").value(entry.getValue().time);
if(entry.getValue().folders.size() != 1 || !entry.getValue().folders.contains(ModItems.template_folder)) {
writer.name("folders").beginArray();
for(Item folder : entry.getValue().folders) writer.value(Item.itemRegistry.getNameForObject(folder));
writer.endArray();
}
}
public static ItemStack getOutputFromTempate(ItemStack stack) {
if(stack != null && stack.getItem() instanceof ItemAssemblyTemplate) {
ComparableStack comp = ItemAssemblyTemplate.readType(stack);
//NEW
if(comp != null) {
return comp.toStack();
}
//LEGACY
int i = stack.getItemDamage();
if(i >= 0 && i < recipeList.size()) {
return recipeList.get(i).toStack();
}
}
return null;
}
public static List<AStack> getRecipeFromTempate(ItemStack stack) {
if(stack != null && stack.getItem() instanceof ItemAssemblyTemplate) {
//NEW
ComparableStack compStack = ItemAssemblyTemplate.readType(stack);
if(compStack != null) {
@ -1385,12 +1386,12 @@ public class AssemblerRecipes extends SerializableRecipe {
AStack[] ret = recipe.ingredients;
return ret == null ? null : Arrays.asList(ret);
}
//LEGACY
int i = stack.getItemDamage();
if(i >= 0 && i < recipeList.size()) {
ItemStack out = recipeList.get(i).toStack();
if(out != null) {
ComparableStack comp = new ComparableStack(out);
AssemblerRecipe recipe = recipes.get(comp);
@ -1400,55 +1401,55 @@ public class AssemblerRecipes extends SerializableRecipe {
}
}
}
return null;
}
public static void addTantalium(ComparableStack out, int amount) {
AssemblerRecipe recipe = recipes.get(out);
if(recipe != null) {
AStack[] news = new AStack[recipe.ingredients.length + 1];
for(int i = 0; i < recipe.ingredients.length; i++)
news[i] = recipe.ingredients[i];
news[news.length - 1] = new ComparableStack(ModItems.circuit, amount, EnumCircuitType.CAPACITOR_BOARD);
recipe.ingredients = news;
}
}
public static Map<ItemStack, List<Object>> getRecipes() {
Map<ItemStack, List<Object>> recipes = new HashMap();
for(Entry<ComparableStack, AssemblerRecipe> entry : AssemblerRecipes.recipes.entrySet()) {
List<Object> value = new ArrayList();
AssemblerRecipe recipe = entry.getValue();
for(AStack o : recipe.ingredients) {
value.add(o.extractForNEI());
}
recipes.put(entry.getKey().toStack(), value);
}
return recipes;
}
public static class AssemblerRecipe {
public AStack[] ingredients;
public int time;
public HashSet<Item> folders;
public AssemblerRecipe(AStack[] ingredients, int time) {
this(ingredients, time, ModItems.template_folder);
}
public AssemblerRecipe(AStack[] ingredients, int time, Item... folder) {
this.ingredients = ingredients;
this.time = time;

View File

@ -390,6 +390,10 @@ public class ChemplantRecipes extends SerializableRecipe {
new ItemStack(ModItems.niter, 3))
.outputFluids(new FluidStack(Fluids.SALIENT, 250)));
recipes.add(new ChemRecipe(104, "RUSTY_DECO_STEEL", 100)
.inputItems(new ComparableStack(ModBlocks.deco_steel, 8))
.inputFluids(new FluidStack(Fluids.WATER, 1000))
.outputItems(new ItemStack(ModBlocks.deco_rusty_steel, 8)));
}
public static void registerOtherOil() {

View File

@ -40,7 +40,7 @@ public class AnvilRecipes extends SerializableRecipe {
public static List<AnvilSmithingRecipe> smithingRecipes = new ArrayList();
public static List<AnvilConstructionRecipe> constructionRecipes = new ArrayList();
public static void register() {
registerSmithing();
}
@ -49,7 +49,7 @@ public class AnvilRecipes extends SerializableRecipe {
@Override public Object getRecipeObject() { return constructionRecipes; }
@Override public void deleteRecipes() { constructionRecipes.clear(); }
@Override public void registerDefaults() { registerConstruction(); }
/*
* ////// // // // ////// // // // // // //////
* // //// //// // // // // // //// // //
@ -58,9 +58,9 @@ public class AnvilRecipes extends SerializableRecipe {
* ////// // // // // // // // // // //////
*/
public static void registerSmithing() {
Block[] anvils = new Block[]{ModBlocks.anvil_iron, ModBlocks.anvil_lead};
for(Block anvil : anvils) {
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_steel, 1), new ComparableStack(anvil), new OreDictStack(STEEL.ingot(), 10)));
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_desh, 1), new ComparableStack(anvil), new OreDictStack(DESH.ingot(), 10)));
@ -72,14 +72,14 @@ public class AnvilRecipes extends SerializableRecipe {
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_dnt, 1), new ComparableStack(anvil), new OreDictStack(DNT.ingot(), 10)));
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_osmiridium, 1), new ComparableStack(anvil), new OreDictStack(OSMIRIDIUM.ingot(), 10)));
}
for(int i = 0; i < 9; i++)
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_steel_dusted, 1, i + 1),
new ComparableStack(ModItems.ingot_steel_dusted, 1, i), new ComparableStack(ModItems.ingot_steel_dusted, 1, i)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_chainsteel, 1),
new ComparableStack(ModItems.ingot_steel_dusted, 1, 9), new ComparableStack(ModItems.ingot_steel_dusted, 1, 9)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_meteorite_forged, 1), new ComparableStack(ModItems.ingot_meteorite), new ComparableStack(ModItems.ingot_meteorite)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.blade_meteorite, 1), new ComparableStack(ModItems.ingot_meteorite_forged), new ComparableStack(ModItems.ingot_meteorite_forged)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.meteorite_sword_reforged, 1), new ComparableStack(ModItems.meteorite_sword_seared), new ComparableStack(ModItems.ingot_meteorite_forged)));
@ -95,7 +95,7 @@ public class AnvilRecipes extends SerializableRecipe {
smithingRecipes.add(new AnvilSmithingRecipe(4, new ItemStack(ModItems.flask_infusion, 1, EnumInfusion.SHIELD.ordinal()), new ComparableStack(ModItems.gem_alexandrite), new ComparableStack(ModItems.bottle_nuka)));
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.ingot_gunmetal, 1), new OreDictStack(CU.ingot()), new OreDictStack(AL.ingot())));
smithingRecipes.add(new AnvilSmithingMold(0, new OreDictStack(GOLD.nugget()), new OreDictStack("nugget")));
smithingRecipes.add(new AnvilSmithingMold(1, new OreDictStack(U.billet()), new OreDictStack("billet")));
smithingRecipes.add(new AnvilSmithingMold(2, new OreDictStack(IRON.ingot()), new OreDictStack("ingot")));
@ -126,11 +126,11 @@ public class AnvilRecipes extends SerializableRecipe {
smithingRecipes.add(new AnvilSmithingMold(13, new ComparableStack(ModItems.pipes_steel), new ItemStack[] {new ItemStack(ModItems.pipes_steel)}));
smithingRecipes.add(new AnvilSmithingMold(20, new OreDictStack(ALLOY.wireDense(), 1), new OreDictStack("wireDense", 1)));
smithingRecipes.add(new AnvilSmithingMold(21, new OreDictStack(ALLOY.wireDense(), 9), new OreDictStack("wireDense", 9)));
smithingRecipes.add(new AnvilSmithingCyanideRecipe());
smithingRecipes.add(new AnvilSmithingRenameRecipe());
}
/*
* ////// ////// // // ////// ////// //// // // ////// ////// // ////// // //
* // // // //// // // // // // // // // // // // // //// //
@ -139,7 +139,7 @@ public class AnvilRecipes extends SerializableRecipe {
* ////// ////// // // ////// // // // ////// ////// // // ////// // //
*/
public static void registerConstruction() {
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(IRON.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_iron))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(GOLD.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_gold))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(TI.ingot()), new AnvilOutput(new ItemStack(ModItems.plate_titanium))).setTier(3));
@ -166,13 +166,13 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(LAPIS.dust()), new AnvilOutput(new ItemStack(Items.dye, 1, 4))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(DIAMOND.dust()), new AnvilOutput(new ItemStack(Items.diamond))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(EMERALD.dust()), new AnvilOutput(new ItemStack(Items.emerald))).setTier(3));
registerConstructionRecipes();
registerConstructionAmmo();
registerConstructionUpgrades();
registerConstructionRecycling();
}
public static void registerConstructionRecipes() {
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_aluminium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION));
@ -191,13 +191,13 @@ public class AnvilRecipes extends SerializableRecipe {
new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 4),
new AnvilOutput(new ItemStack(ModItems.shell, 1, mat.id))).setTier(1));
for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) {
String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ?
String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ?
MaterialShapes.PLATE.name() + mat.names[0] : MaterialShapes.INGOT.name() + mat.names[0]);
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack(key, 3),
new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1));
}
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModItems.coil_copper, 2),
new AnvilOutput(new ItemStack(ModItems.coil_copper_torus))).setTier(1).setOverlay(OverlayType.CONSTRUCTION));
@ -217,7 +217,7 @@ public class AnvilRecipes extends SerializableRecipe {
pullFromAssembler(new ComparableStack(ModItems.filter_coal), 2);
pullFromAssembler(new ComparableStack(ModItems.thermo_element), 2);
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new ComparableStack(Blocks.stonebrick, 4),
@ -225,7 +225,7 @@ public class AnvilRecipes extends SerializableRecipe {
new OreDictStack(CU.plate(), 4)
},
new AnvilOutput(new ItemStack(ModBlocks.machine_difurnace_off))).setTier(1));
int ukModifier = 1;
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
@ -405,7 +405,7 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 2, EnumCircuitType.VACUUM_TUBE.ordinal()),
new ComparableStack(ModItems.sawblade)
}, new AnvilOutput(new ItemStack(ModBlocks.machine_autosaw))).setTier(2));
pullFromAssembler(new ComparableStack(ModBlocks.machine_diesel), 2);
/*constructionRecipes.add(new AnvilConstructionRecipe(
@ -432,14 +432,14 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModBlocks.machine_condenser, 16),
new OreDictStack(STEEL.pipe(), 8),
}, new AnvilOutput(new ItemStack(ModBlocks.machine_tower_large))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new ComparableStack(Items.bone, 16),
new ComparableStack(Items.leather, 4),
new ComparableStack(Items.feather, 24)
}, new AnvilOutput(new ItemStack(ModItems.wings_limp))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new ComparableStack(ModItems.sulfur, 12),
@ -448,7 +448,7 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModItems.circuit, 2, EnumCircuitType.BASIC.ordinal())
},
new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_extractor))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new ComparableStack(ModItems.deuterium_filter, 2),
@ -459,7 +459,7 @@ public class AnvilRecipes extends SerializableRecipe {
new OreDictStack(Fluids.SOURGAS.getDict(1_000), 8),
},
new AnvilOutput(new ItemStack(ModBlocks.machine_deuterium_tower))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new OreDictStack(ANY_CONCRETE.any(), 2),
@ -468,7 +468,7 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModItems.coil_copper, 4)
},
new AnvilOutput(new ItemStack(ModBlocks.red_pylon_large))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new OreDictStack(ANY_CONCRETE.any(), 8),
@ -477,7 +477,7 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModItems.coil_copper, 8)
},
new AnvilOutput(new ItemStack(ModBlocks.substation, 2))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new OreDictStack(STEEL.plate(), 4),
@ -485,7 +485,7 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModBlocks.steel_grate, 2)
},
new AnvilOutput(new ItemStack(ModBlocks.chimney_brick))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new OreDictStack(STEEL.plate(), 16),
@ -494,7 +494,7 @@ public class AnvilRecipes extends SerializableRecipe {
new ComparableStack(ModItems.filter_coal, 4)
},
new AnvilOutput(new ItemStack(ModBlocks.chimney_industrial))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new ComparableStack(ModItems.tank_steel, 1),
@ -507,14 +507,14 @@ public class AnvilRecipes extends SerializableRecipe {
new OreDictStack(PB.plate528(), 2),
new ComparableStack(ModItems.nuclear_waste_vitrified, 10)
}, new AnvilOutput(new ItemStack(ModBlocks.vitrified_barrel))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {
new ComparableStack(ModItems.man_core, 1),
new OreDictStack(BE.ingot(), 4),
new ComparableStack(ModItems.screwdriver, 1)
}, new AnvilOutput(new ItemStack(ModItems.demon_core_open))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new OreDictStack(DESH.ingot(), 4), new OreDictStack(ANY_PLASTIC.dust(), 2), new OreDictStack(DURA.ingot(), 1)},
new AnvilOutput(new ItemStack(ModItems.plate_desh, 4))).setTier(3));
@ -546,7 +546,7 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(
new AStack[] {new ComparableStack(ModItems.plate_dineutronium, 4), new ComparableStack(ModItems.particle_sparkticle, 1), new ComparableStack(ModItems.plate_armor_fau, 6)},
new AnvilOutput(new ItemStack(ModItems.plate_armor_dnt))).setTier(7));
pullFromAssembler(new ComparableStack(ModItems.plate_mixed, 4), 3);
constructionRecipes.add(new AnvilConstructionRecipe(
@ -556,7 +556,7 @@ public class AnvilRecipes extends SerializableRecipe {
new OreDictStack(AL.plateWelded(), 2),
new OreDictStack(PU239.billet(), 3)
}, new AnvilOutput(new ItemStack(ModItems.missile_doomsday))).setTier(5));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u233, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u233))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_u235, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_u235))).setTier(4));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModItems.ingot_mox_fuel, 1), new AnvilOutput(new ItemStack(ModItems.plate_fuel_mox))).setTier(4));
@ -577,7 +577,7 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_exhaust, 8, i), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron)), new AnvilOutput(new ItemStack(ModItems.plate_polymer))}).setTier(2));
}
}
public static void registerConstructionAmmo() {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.stamp_iron_flat), new OreDictStack(GUNMETAL.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.stamp_9))).setTier(2));
@ -587,7 +587,7 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 16))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(IRON.ingot(), 2)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 17))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 22))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 23))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 24))).setTier(2));
@ -595,10 +595,10 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 26))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 27))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2));
pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1);
}
public static void registerConstructionUpgrades() {
pullFromAssembler(new ComparableStack(ModItems.upgrade_template), 2);
pullFromAssembler(new ComparableStack(ModItems.upgrade_speed_1), 2);
@ -626,7 +626,7 @@ public class AnvilRecipes extends SerializableRecipe {
pullFromAssembler(new ComparableStack(ModItems.upgrade_nullifier), 4);
pullFromAssembler(new ComparableStack(ModItems.upgrade_screm), 4);
}
public static void registerConstructionRecycling() {
constructionRecipes.add(new AnvilConstructionRecipe(
@ -648,6 +648,7 @@ public class AnvilRecipes extends SerializableRecipe {
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_tungsten, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_tungsten, 1))}).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_aluminium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_aluminium, 1))}).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_steel, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_steel, 1))}).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_rusty_steel, 8), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_steel, 1))}).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_lead, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_lead, 1))}).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_beryllium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 1))}).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_asbestos, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_asbestos, 1))}).setTier(1));
@ -659,7 +660,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.ingot_copper, 6))
}
).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.heater_oven),
new AnvilOutput[] {
@ -745,7 +746,7 @@ public class AnvilRecipes extends SerializableRecipe {
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));
constructionRecipes.add(new AnvilConstructionRecipe(
@ -756,7 +757,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.wire_fine, 2, Mats.MAT_COPPER.id)),
new AnvilOutput(new ItemStack(ModItems.wire_fine, 2, Mats.MAT_GOLD.id), 0.25F),
new AnvilOutput(new ItemStack(ModItems.circuit, 1, EnumCircuitType.VACUUM_TUBE.ordinal()), 0.25F)
}
).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
@ -769,7 +770,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.battery_generic, 1), 0.25F),
new AnvilOutput(new ItemStack(ModItems.battery_advanced, 1), 0.1F),
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.01F)
}
).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
@ -782,7 +783,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.battery_lithium, 1), 0.25F),
new AnvilOutput(new ItemStack(ModItems.battery_sc_uranium, 1), 0.1F),
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.05F)
}
).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
@ -796,7 +797,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.fusion_core, 1), 0.5F),
new AnvilOutput(new ItemStack(ModItems.gem_alexandrite, 1), 0.25F),
new AnvilOutput(new ItemStack(ModItems.flame_pony, 1), 0.01F)
}
).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
@ -840,7 +841,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.plate_steel, 2), 0.5F),
new AnvilOutput(new ItemStack(ModItems.plate_polymer, 2), 0.25F),
new AnvilOutput(new ItemStack(ModItems.scrap, 1))
}
).setTier(1));
@ -870,7 +871,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.lithium, 1)),
new AnvilOutput(new ItemStack(ModItems.cell_empty, 1))
}).setTier(2));
//RBMK
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.rbmk_moderator), new AnvilOutput[] {
@ -929,9 +930,9 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModBlocks.rbmk_blank, 1)),
new AnvilOutput(new ItemStack(ModBlocks.crate_steel, 2))
}).setTier(4));
if(!GeneralConfig.enable528) {
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.rbmk_rod), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModBlocks.rbmk_blank, 1)),
@ -1002,7 +1003,7 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(ModItems.coil_copper, 2)),
new AnvilOutput(new ItemStack(ModItems.ingot_steel, 4))
}).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.yellow_barrel), new AnvilOutput[] {
new AnvilOutput(new ItemStack(ModItems.tank_steel, 1)),
@ -1024,91 +1025,91 @@ public class AnvilRecipes extends SerializableRecipe {
new AnvilOutput(new ItemStack(Items.experience_bottle, 1), 0.5F)
}).setTier(1));
}
public static void pullFromAssembler(ComparableStack result, int tier) {
AssemblerRecipe recipe = AssemblerRecipes.recipes.get(result);
if(recipe != null) {
constructionRecipes.add(new AnvilConstructionRecipe(recipe.ingredients, new AnvilOutput(result.toStack())).setTier(tier));
}
}
public static List<AnvilSmithingRecipe> getSmithing() {
return smithingRecipes;
}
public static List<AnvilConstructionRecipe> getConstruction() {
return constructionRecipes;
}
public static class AnvilConstructionRecipe {
public List<AStack> input = new ArrayList();
public List<AnvilOutput> output = new ArrayList();
public int tierLower = 0;
public int tierUpper = -1;
OverlayType overlay = OverlayType.NONE;
public AnvilConstructionRecipe(AStack input, AnvilOutput output) {
this.input.add(input);
this.output.add(output);
this.setOverlay(OverlayType.SMITHING); //preferred overlay for 1:1 conversions is smithing
}
public AnvilConstructionRecipe(AStack[] input, AnvilOutput output) {
for(AStack stack : input) this.input.add(stack);
this.output.add(output);
this.setOverlay(OverlayType.CONSTRUCTION); //preferred overlay for many:1 conversions is construction
}
public AnvilConstructionRecipe(AStack input, AnvilOutput[] output) {
this.input.add(input);
for(AnvilOutput out : output) this.output.add(out);
this.setOverlay(OverlayType.RECYCLING); //preferred overlay for 1:many conversions is recycling
}
public AnvilConstructionRecipe(AStack[] input, AnvilOutput[] output) {
for(AStack stack : input) this.input.add(stack);
for(AnvilOutput out : output) this.output.add(out);
this.setOverlay(OverlayType.NONE); //no preferred overlay for many:many conversions
}
public AnvilConstructionRecipe(AStack[] input, Pair<ItemStack, Float>[] output) {
for(AStack stack : input) this.input.add(stack);
for(Pair<ItemStack, Float> out : output) this.output.add(new AnvilOutput(out.getKey(), out.getValue()));
this.setOverlay(OverlayType.NONE); //no preferred overlay for many:many conversions
}
public AnvilConstructionRecipe setTier(int tier) {
this.tierLower = tier;
if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = 1;
return this;
}
public AnvilConstructionRecipe setTierRange(int lower, int upper) {
this.tierLower = lower;
this.tierUpper = upper;
if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMUnlockAnvil) this.tierLower = this.tierUpper = 1;
return this;
}
public boolean isTierValid(int tier) {
if(this.tierUpper == -1)
return tier >= this.tierLower;
return tier >= this.tierLower && tier <= this.tierUpper;
}
public AnvilConstructionRecipe setOverlay(OverlayType overlay) {
this.overlay = overlay;
return this;
}
public OverlayType getOverlay() {
return this.overlay;
}
public ItemStack getDisplay() {
switch(this.overlay) {
case NONE: return this.output.get(0).stack.copy();
@ -1124,21 +1125,21 @@ public class AnvilRecipes extends SerializableRecipe {
}
}
}
public static class AnvilOutput {
public ItemStack stack;
public float chance;
public AnvilOutput(ItemStack stack) {
this(stack, 1F);
}
public AnvilOutput(ItemStack stack, float chance) {
this.stack = stack;
this.chance = chance;
}
}
public static enum OverlayType {
NONE,
CONSTRUCTION,
@ -1149,38 +1150,38 @@ public class AnvilRecipes extends SerializableRecipe {
@Override
public void readRecipe(JsonElement recipe) {
JsonObject obj = (JsonObject) recipe;
AStack[] inputs = this.readAStackArray(obj.get("inputs").getAsJsonArray());
Pair<ItemStack, Float>[] outputs = this.readItemStackArrayChance(obj.get("outputs").getAsJsonArray());
int tierLower = obj.get("tierLower").getAsInt();
int tierUpper = obj.has("tierUpper") ? obj.get("tierUpper").getAsInt() : -1;
OverlayType overlay = OverlayType.NONE;
if(obj.has("overlay")) {
String overlayName = obj.get("overlay").getAsString();
overlay = OverlayType.valueOf(overlayName);
if(overlay == null) overlay = OverlayType.NONE;
}
this.constructionRecipes.add(new AnvilConstructionRecipe(inputs, outputs).setTierRange(tierLower, tierUpper).setOverlay(overlay));
}
@Override
public void writeRecipe(Object recipe, JsonWriter writer) throws IOException {
AnvilConstructionRecipe rec = (AnvilConstructionRecipe) recipe;
writer.name("inputs").beginArray();
for(AStack stack : rec.input) this.writeAStack(stack, writer);
writer.endArray();
writer.name("outputs").beginArray();
for(AnvilOutput stack : rec.output) this.writeItemStackChance(new Pair(stack.stack, stack.chance), writer);
writer.endArray();
writer.name("tierLower").value(rec.tierLower);
writer.name("tierUpper").value(rec.tierUpper);
writer.name("overlay").value(rec.overlay.name());
}
}

File diff suppressed because it is too large Load Diff

View File

@ -8,6 +8,8 @@ import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@SideOnly(Side.CLIENT)
@ -16,74 +18,172 @@ public class ParticleFoam extends EntityFX {
private int age;
public int maxAge;
private float baseScale = 1.0F;
private float maxScale = 1.0F;
private float maxScale = 1.5F;
// Parameters for the trail effect
private List<TrailPoint> trail = new ArrayList<TrailPoint>();
private int trailLength = 15;
private float initialVelocity;
private float buoyancy = 0.05F;
private float jitter = 0.15F;
private float drag = 0.96F;
private int explosionPhase; // 0=burst up, 1=peak, 2=settle
private static class TrailPoint {
double x, y, z;
float alpha;
public TrailPoint(double x, double y, double z, float alpha) {
this.x = x;
this.y = y;
this.z = z;
this.alpha = alpha;
}
}
public ParticleFoam(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) {
super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_);
particleIcon = ModEventHandlerClient.particleBase;
maxAge = 500 + rand.nextInt(5);
particleGravity = 0.1F;
maxAge = 60 + rand.nextInt(60);
particleGravity = 0.005F + rand.nextFloat() * 0.015F;
initialVelocity = 2.0F + rand.nextFloat() * 3.0F;
motionY = initialVelocity;
double angle = rand.nextDouble() * Math.PI * 2;
double strength = rand.nextDouble() * 0.5;
motionX = Math.cos(angle) * strength;
motionZ = Math.sin(angle) * strength;
explosionPhase = 0; // Start in burst phase
particleScale = 0.3F + rand.nextFloat() * 0.7F;
}
public void setBaseScale(float f) { this.baseScale = f; }
public void setMaxScale(float f) { this.maxScale = f; }
public void setTrailLength(int length) { this.trailLength = length; }
public void setBuoyancy(float buoyancy) { this.buoyancy = buoyancy; }
public void onUpdate() {
this.prevPosX = this.posX;
this.prevPosY = this.posY;
this.prevPosZ = this.posZ;
particleAlpha = 1 - ((float) age / (float) maxAge);
trail.add(0, new TrailPoint(posX, posY, posZ, particleAlpha));
while (trail.size() > trailLength) {
trail.remove(trail.size() - 1);
}
// Update age and phase
++this.age;
if (this.age == this.maxAge) {
this.setDead();
}
if (this.age < maxAge / 4) {
this.motionY = 3;
float phaseRatio = (float) age / (float) maxAge;
if (phaseRatio < 0.3F) {
explosionPhase = 0;
if (phaseRatio < 0.15F) {
motionY += buoyancy * 6.0F;
} else {
motionY += buoyancy * (1.0F - (phaseRatio / 0.3F)) * 2.0F;
}
particleScale = baseScale + (maxScale - baseScale) * (phaseRatio / 0.3F);
} else if (phaseRatio < 0.6F) {
explosionPhase = 1;
motionY *= 0.98F;
particleScale = maxScale;
} else {
this.motionY -= 0.05 * (1 - (float) this.age /maxAge);
explosionPhase = 2;
motionY -= particleGravity;
particleScale = maxScale * (1.0F - ((phaseRatio - 0.6F) / 0.4F) * 0.7F);
}
this.motionY -= this.particleGravity;
particleAlpha = 0.8F * (1.0F - phaseRatio * phaseRatio);
this.motionX += rand.nextGaussian() * 0.1;
this.motionZ += rand.nextGaussian() * 0.1;
motionX += (rand.nextFloat() - 0.5F) * jitter;
motionZ += (rand.nextFloat() - 0.5F) * jitter;
this.moveEntity(this.motionX, motionY, this.motionZ);
// drag like ninja drags the low taper fade
motionX *= drag;
motionY *= drag;
motionZ *= drag;
motionX *= 0.925;
motionY *= 0.925;
motionZ *= 0.925;
this.moveEntity(this.motionX, motionY, this.motionZ);
this.particleAge++;
if(this.onGround || this.isInWeb) this.setDead();
// Kill particle if it hits ground
if (this.onGround || this.isInWeb) {
this.setDead();
}
}
public int getFXLayer() {
return 1;
}
// ty kercig cuz id kms lol
public void renderParticle(Tessellator p_70539_1_, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) {
renderFoamBubbles(p_70539_1_, p_70539_2_, p_70539_3_, p_70539_4_, p_70539_5_, p_70539_6_, p_70539_7_,
posX, posY, posZ, particleScale, particleAlpha);
Random urandom = new Random(this.getEntityId());
for (int i = 1; i < trail.size(); i++) {
TrailPoint point = trail.get(i);
float trailScale = particleScale * (1.0F - (float)i / trailLength);
float trailAlpha = particleAlpha * (1.0F - (float)i / trailLength) * 0.7F;
for(int i = 0; i < 6; i++) {
renderFoamBubbles(p_70539_1_, p_70539_2_, p_70539_3_, p_70539_4_, p_70539_5_, p_70539_6_, p_70539_7_,
point.x, point.y, point.z, trailScale, trailAlpha);
}
}
p_70539_1_.setColorRGBA_F(255F, 255F, 255F, this.particleAlpha);
p_70539_1_.setNormal(0.0F, 1.0F, 0.0F);
private void renderFoamBubbles(Tessellator tessellator, float p_70539_2_, float p_70539_3_, float p_70539_4_,
float p_70539_5_, float p_70539_6_, float p_70539_7_, double x, double y, double z, float scale, float alpha) {
float scale = urandom.nextFloat() + 0.5F;
float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double)p_70539_2_ - interpPosX) + (urandom.nextGaussian() - 1D) * 0.75F);
float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double)p_70539_2_ - interpPosY) + (urandom.nextGaussian() - 1D) * 0.75F);
float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double)p_70539_2_ - interpPosZ) + (urandom.nextGaussian() - 1D) * 0.75F);
Random urandom = new Random(this.getEntityId() + (long)(x * 100) + (long)(y * 10) + (long)z);
p_70539_1_.addVertexWithUV((double)(pX - p_70539_3_ * scale - p_70539_6_ * scale), (double)(pY - p_70539_4_ * scale), (double)(pZ - p_70539_5_ * scale - p_70539_7_ * scale), particleIcon.getMaxU(), particleIcon.getMaxV());
p_70539_1_.addVertexWithUV((double)(pX - p_70539_3_ * scale + p_70539_6_ * scale), (double)(pY + p_70539_4_ * scale), (double)(pZ - p_70539_5_ * scale + p_70539_7_ * scale), particleIcon.getMaxU(), particleIcon.getMinV());
p_70539_1_.addVertexWithUV((double)(pX + p_70539_3_ * scale + p_70539_6_ * scale), (double)(pY + p_70539_4_ * scale), (double)(pZ + p_70539_5_ * scale + p_70539_7_ * scale), particleIcon.getMinU(), particleIcon.getMinV());
p_70539_1_.addVertexWithUV((double)(pX + p_70539_3_ * scale - p_70539_6_ * scale), (double)(pY - p_70539_4_ * scale), (double)(pZ + p_70539_5_ * scale - p_70539_7_ * scale), particleIcon.getMinU(), particleIcon.getMaxV());
int bubbleCount = explosionPhase == 0 ? 8 : (explosionPhase == 1 ? 6 : 4);
for (int i = 0; i < bubbleCount; i++) {
float whiteness = 0.9F + urandom.nextFloat() * 0.1F;
tessellator.setColorRGBA_F(whiteness, whiteness, whiteness, alpha);
tessellator.setNormal(0.0F, 1.0F, 0.0F);
float bubbleScale = scale * (urandom.nextFloat() * 0.5F + 0.75F);
float offset = explosionPhase == 0 ? 0.4F : (explosionPhase == 1 ? 0.6F : 0.9F);
float pX = (float) ((x - interpPosX) + (urandom.nextGaussian()) * offset);
float pY = (float) ((y - interpPosY) + (urandom.nextGaussian()) * offset * 0.7F);
float pZ = (float) ((z - interpPosZ) + (urandom.nextGaussian()) * offset);
tessellator.addVertexWithUV(
(double)(pX - p_70539_3_ * bubbleScale - p_70539_6_ * bubbleScale),
(double)(pY - p_70539_4_ * bubbleScale),
(double)(pZ - p_70539_5_ * bubbleScale - p_70539_7_ * bubbleScale),
particleIcon.getMaxU(), particleIcon.getMaxV());
tessellator.addVertexWithUV(
(double)(pX - p_70539_3_ * bubbleScale + p_70539_6_ * bubbleScale),
(double)(pY + p_70539_4_ * bubbleScale),
(double)(pZ - p_70539_5_ * bubbleScale + p_70539_7_ * bubbleScale),
particleIcon.getMaxU(), particleIcon.getMinV());
tessellator.addVertexWithUV(
(double)(pX + p_70539_3_ * bubbleScale + p_70539_6_ * bubbleScale),
(double)(pY + p_70539_4_ * bubbleScale),
(double)(pZ + p_70539_5_ * bubbleScale + p_70539_7_ * bubbleScale),
particleIcon.getMinU(), particleIcon.getMinV());
tessellator.addVertexWithUV(
(double)(pX + p_70539_3_ * bubbleScale - p_70539_6_ * bubbleScale),
(double)(pY - p_70539_4_ * bubbleScale),
(double)(pZ + p_70539_5_ * bubbleScale - p_70539_7_ * bubbleScale),
particleIcon.getMinU(), particleIcon.getMaxV());
}
}
}

View File

@ -1,102 +0,0 @@
package com.hbm.particle;
import com.hbm.main.ModEventHandlerClient;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import java.awt.*;
import java.util.Random;
@SideOnly(Side.CLIENT)
public class ParticleWater extends EntityFX {
private int age;
public int maxAge;
private float baseScale = 1.0F;
private float maxScale = 1.0F;
public ParticleWater(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) {
super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_);
particleIcon = ModEventHandlerClient.particleBase;
maxAge = 10 + rand.nextInt(5);
particleGravity = 0.2F;
double speed = 0.1 + rand.nextDouble() *2;
double theta = rand.nextDouble() * 2 * Math.PI;
double phi = rand.nextDouble() * Math.PI / 2;
double motionX1 = speed * Math.cos(theta) * Math.sin(phi);
this.motionX = motionX1;
this.motionZ = motionX1;
}
public void setBaseScale(float f) { this.baseScale = f; }
public void setMaxScale(float f) { this.maxScale = f; }
public void onUpdate() {
this.prevPosX = this.posX;
this.prevPosY = this.posY;
this.prevPosZ = this.posZ;
particleAlpha = 1 - ((float) age / (float) maxAge);
++this.age;
if (this.age == this.maxAge) {
this.setDead();
}
if (this.age < maxAge / 4) {
this.motionY = 4;
} else {
this.motionY -= 0.2 * (1 - (float) this.age /maxAge);
}
this.motionY -= this.particleGravity;
this.motionX += rand.nextGaussian() * 0.2 * 2;
this.motionZ += rand.nextGaussian() * 0.2 * 2;
this.moveEntity(this.motionX, motionY, this.motionZ);
motionX *= 0.925;
motionY *= 0.925;
motionZ *= 0.925;
this.particleAge++;
if(this.onGround || this.isInWeb) this.setDead();
}
public int getFXLayer() {
return 1;
}
public void renderParticle(Tessellator p_70539_1_, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) {
Random urandom = new Random(this.getEntityId());
for(int i = 0; i < 6; i++) {
this.particleRed = this.particleGreen = this.particleBlue = urandom.nextFloat() * 0.25F + 0.25F;
p_70539_1_.setColorRGBA_F(this.particleRed, this.particleGreen, 185F, this.particleAlpha);
p_70539_1_.setNormal(0.0F, 1.0F, 0.0F);
float scale = urandom.nextFloat() + 0.5F;
float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double)p_70539_2_ - interpPosX) + (urandom.nextGaussian() - 1D) * 0.75F);
float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double)p_70539_2_ - interpPosY) + (urandom.nextGaussian() - 1D) * 0.75F);
float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double)p_70539_2_ - interpPosZ) + (urandom.nextGaussian() - 1D) * 0.75F);
p_70539_1_.addVertexWithUV((double)(pX - p_70539_3_ * scale - p_70539_6_ * scale), (double)(pY - p_70539_4_ * scale), (double)(pZ - p_70539_5_ * scale - p_70539_7_ * scale), particleIcon.getMaxU(), particleIcon.getMaxV());
p_70539_1_.addVertexWithUV((double)(pX - p_70539_3_ * scale + p_70539_6_ * scale), (double)(pY + p_70539_4_ * scale), (double)(pZ - p_70539_5_ * scale + p_70539_7_ * scale), particleIcon.getMaxU(), particleIcon.getMinV());
p_70539_1_.addVertexWithUV((double)(pX + p_70539_3_ * scale + p_70539_6_ * scale), (double)(pY + p_70539_4_ * scale), (double)(pZ + p_70539_5_ * scale + p_70539_7_ * scale), particleIcon.getMinU(), particleIcon.getMinV());
p_70539_1_.addVertexWithUV((double)(pX + p_70539_3_ * scale - p_70539_6_ * scale), (double)(pY - p_70539_4_ * scale), (double)(pZ + p_70539_5_ * scale - p_70539_7_ * scale), particleIcon.getMinU(), particleIcon.getMaxV());
}
}
}

View File

@ -55,8 +55,8 @@ public class RenderLandmine extends TileEntitySpecialRenderer {
ResourceManager.mine_fat.renderAll();
}
if(block == ModBlocks.mine_naval) {
GL11.glScaled(0.5D, 0.5D, 0.5D);
GL11.glTranslated(0, 1, 0);
GL11.glScaled(1D, 1D, 1D);
GL11.glTranslated(0,0.5,0);
bindTexture(ResourceManager.mine_naval_tex);
ResourceManager.mine_naval.renderAll();
}

View File

@ -794,6 +794,7 @@ public class NBTStructure {
}
// Each jigsaw block in a structure will instance one of these
private static class JigsawConnection {

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 923 B

After

Width:  |  Height:  |  Size: 613 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

After

Width:  |  Height:  |  Size: 874 B