Merge remote-tracking branch 'upstream/master' into Optimization

# Conflicts:
#	src/main/java/com/hbm/main/ModEventHandlerRenderer.java
This commit is contained in:
BallOfEnergy 2024-10-20 12:54:06 -05:00
commit 31c6809c65
110 changed files with 14249 additions and 3326 deletions

View File

@ -8,6 +8,11 @@
* Configs can be edited ingame via `/ntmclient set <name> <value>` or in the file and then `/ntmclient reload`
* Available configs include geiger counter HUD position, info system position and orientation, custom main menu splash texts, ore dict display and custom nuke item info
* Check the config file or `/ntmclient list` for a full list of values, the name should make them self-explanatory!
* Liquid lead
* A valid coolant for both PWRs and ICFs
* Has an immense heat transfer speed bonus, allowing ICFs to be cooled even when using higher tier pellets
* Cools quite effectively in PWRs, but has a negative neutron modifier and a small penalty of how much heat ends up usable
* Overall a cheap and very good coolant, just not as efficient as sodium
## Changed
* Updated russian and chinese localization
@ -28,6 +33,12 @@
* Cable connections (connectors, pylons, substations) now render about 10x faster and no longer have weird inaccuracies where the segments meet
* Cables can be made even faster by setting `RENDER_CABLE_HANG` in the config to `false`
* This causes cable connections to render taut, eliminating the need for multiple segments per pylon side
* Heat exchanging heaters are now set to 24,000mB/t by default
* The ICF GUI now lists the laser input as "per tick"
* Glpyhid hives caught in a fallout zone now turn radioactive
* Glyphids spawned by radioactive hives are immune to fire, twice as fast and five times as strong
* Radioactive glpyhids however are NOT immune to radiation, and typically die quickly
* Radioactive hives are sterile, they will not spawn scouts
## Fixed
* The conveyor grabber should no longer skip over items when used in long lines

View File

@ -1,5 +1,6 @@
package api.hbm.energymk2;
import com.hbm.interfaces.NotableComments;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.util.Compat;
@ -12,6 +13,7 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
/** If it receives energy, use this */
@NotableComments
public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 {
public default long transferPower(long power) {

View File

@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.Map.Entry;
import java.util.Set;
import com.hbm.interfaces.NotableComments;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.util.fauxpointtwelve.DirPos;
@ -147,7 +148,8 @@ public class Nodespace {
if(node != null) popNode(node);
}
}
@NotableComments
public static class PowerNode {
public BlockPos[] positions;

View File

@ -1195,8 +1195,6 @@ public class ModBlocks {
public static Block dummy_block_vault;
public static Block dummy_block_blast;
public static Block dummy_block_uf6;
public static Block dummy_block_puf6;
public static Block dummy_plate_compact_launcher;
public static Block dummy_port_compact_launcher;
public static Block dummy_plate_launch_table;
@ -2316,8 +2314,6 @@ public class ModBlocks {
dummy_block_vault = new DummyBlockVault(Material.iron).setBlockName("dummy_block_vault").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_block_blast = new DummyBlockBlast(Material.iron).setBlockName("dummy_block_blast").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_block_uf6 = new DummyBlockMachine(Material.iron, machine_uf6_tank, false).setBlockName("dummy_block_uf6").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_titanium");
dummy_block_puf6 = new DummyBlockMachine(Material.iron, machine_puf6_tank, false).setBlockName("dummy_block_puf6").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_plate_compact_launcher = new DummyBlockMachine(Material.iron, compact_launcher, false).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_port_compact_launcher = new DummyBlockMachine(Material.iron, compact_launcher, true).setBlockName("dummy_port_compact_launcher").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
dummy_plate_launch_table = new DummyBlockMachine(Material.iron, launch_table, false).setBounds(0, 16, 0, 16, 16, 16).setBlockName("dummy_plate_launch_table").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
@ -3409,8 +3405,6 @@ public class ModBlocks {
//Multiblock Dummy Blocks
GameRegistry.registerBlock(dummy_block_vault, dummy_block_vault.getUnlocalizedName());
GameRegistry.registerBlock(dummy_block_blast, dummy_block_blast.getUnlocalizedName());
GameRegistry.registerBlock(dummy_block_uf6, dummy_block_uf6.getUnlocalizedName());
GameRegistry.registerBlock(dummy_block_puf6, dummy_block_puf6.getUnlocalizedName());
GameRegistry.registerBlock(dummy_plate_compact_launcher, dummy_plate_compact_launcher.getUnlocalizedName());
GameRegistry.registerBlock(dummy_port_compact_launcher, dummy_port_compact_launcher.getUnlocalizedName());
GameRegistry.registerBlock(dummy_plate_launch_table, dummy_plate_launch_table.getUnlocalizedName());

View File

@ -22,6 +22,7 @@ public class BlockGlyphid extends Block implements IBlockMulti {
public IIcon[] iconsStandard = new IIcon[2];
public IIcon[] iconsInfested = new IIcon[2];
public IIcon[] iconsRad = new IIcon[2];
public BlockGlyphid(Material mat) {
super(mat);
@ -57,16 +58,19 @@ public class BlockGlyphid extends Block implements IBlockMulti {
iconsStandard[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_alt");
iconsInfested[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_infested");
iconsInfested[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_infested_alt");
iconsRad[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_rad");
iconsRad[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_base_rad_alt");
}
protected IIcon[] getIconArray(int meta) {
if(meta == 1) return this.iconsInfested;
if(meta == 2) return this.iconsRad;
return this.iconsStandard;
}
@Override
public int getSubCount() {
return 2;
return 3;
}
@Override

View File

@ -38,7 +38,7 @@ import net.minecraft.world.World;
public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti {
public IIcon[] icons = new IIcon[2];
public IIcon[] icons = new IIcon[3];
public BlockGlyphidSpawner(Material mat) {
super(mat);
@ -61,11 +61,12 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti {
public void registerBlockIcons(IIconRegister reg) {
icons[0] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_alt");
icons[1] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_infested");
icons[2] = reg.registerIcon(RefStrings.MODID + ":glyphid_eggs_rad");
}
@Override
public int getSubCount() {
return 2;
return 3;
}
@Override
@ -122,15 +123,16 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti {
List<EntityGlyphid> list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 5, yCoord + 1, zCoord - 5, xCoord + 6, yCoord + 7, zCoord + 6));
float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT);
if(list.size() <= 3) {
int subtype = this.getBlockMetadata();
if(list.size() <= 3 || subtype == EntityGlyphid.TYPE_RADIOACTIVE) {
ArrayList<EntityGlyphid> currentSwarm = createSwarm(soot, this.getBlockMetadata());
ArrayList<EntityGlyphid> currentSwarm = createSwarm(soot, subtype);
for(EntityGlyphid glyphid : currentSwarm) {
trySpawnEntity(glyphid);
}
if(!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold) {
if(!initialSpawn && worldObj.rand.nextInt(MobConfig.scoutSwarmSpawnChance + 1) == 0 && soot >= MobConfig.scoutThreshold && subtype != EntityGlyphid.TYPE_RADIOACTIVE) {
EntityGlyphidScout scout = new EntityGlyphidScout(worldObj);
if(this.getBlockMetadata() == 1) scout.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED);
trySpawnEntity(scout);
@ -168,6 +170,7 @@ public class BlockGlyphidSpawner extends BlockContainer implements IBlockMulti {
if(soot >= chance[2] && rand.nextInt(100) <= adjustedChance) {
EntityGlyphid entity = glyphid.getKey().apply(worldObj);
if(meta == 1) entity.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_INFECTED);
if(meta == 2) entity.getDataWatcher().updateObject(EntityGlyphid.DW_SUBTYPE, (byte) EntityGlyphid.TYPE_RADIOACTIVE);
currentSpawns.add(entity);
}
}

View File

@ -140,9 +140,10 @@ public class BlockPlushie extends BlockContainer implements IBlockMulti, IToolti
}
public static enum PlushieType {
NONE( "NONE", null),
YOMI( "Yomi", "Hi! Can I be your rabbit friend?"),
NUMBERNINE( "Number Nine", "None of y'all deserve coal.");
NONE( "NONE", null),
YOMI( "Yomi", "Hi! Can I be your rabbit friend?"),
NUMBERNINE( "Number Nine", "None of y'all deserve coal."),
POOH( "Winnie the Pooh", "Beloved children's character with no malicious intent.");
public String label;
public String inscription;

View File

@ -2,28 +2,22 @@ package com.hbm.blocks.machine;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandler;
import com.hbm.interfaces.IMultiblock;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.storage.TileEntityMachinePuF6Tank;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class MachinePuF6Tank extends BlockContainer implements IMultiblock {
public class MachinePuF6Tank extends BlockContainer {
public MachinePuF6Tank(Material p_i45386_1_) {
super(p_i45386_1_);
@ -57,7 +51,7 @@ public class MachinePuF6Tank extends BlockContainer implements IMultiblock {
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
return Item.getItemFromBlock(ModBlocks.machine_puf6_tank);
return null;
}
@Override
@ -76,26 +70,5 @@ public class MachinePuF6Tank extends BlockContainer implements IMultiblock {
if(i == 3) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.uf6Dimension)) {
MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.uf6Dimension, ModBlocks.dummy_block_puf6);
} else
world.func_147480_a(x, y, z, true);
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote) {
return true;
} else if(!player.isSneaking()) {
TileEntityMachinePuF6Tank entity = (TileEntityMachinePuF6Tank) world.getTileEntity(x, y, z);
if(entity != null) {
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
}
return true;
} else {
return false;
}
}
}

View File

@ -2,28 +2,22 @@ package com.hbm.blocks.machine;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.handler.MultiblockHandler;
import com.hbm.interfaces.IMultiblock;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.storage.TileEntityMachineUF6Tank;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class MachineUF6Tank extends BlockContainer implements IMultiblock {
public class MachineUF6Tank extends BlockContainer {
public MachineUF6Tank(Material p_i45386_1_) {
super(p_i45386_1_);
@ -57,7 +51,7 @@ public class MachineUF6Tank extends BlockContainer implements IMultiblock {
@Override
public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
return Item.getItemFromBlock(ModBlocks.machine_uf6_tank);
return null;
}
@Override
@ -76,26 +70,5 @@ public class MachineUF6Tank extends BlockContainer implements IMultiblock {
if(i == 3) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
}
if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.uf6Dimension)) {
MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.uf6Dimension, ModBlocks.dummy_block_uf6);
} else
world.func_147480_a(x, y, z, true);
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote) {
return true;
} else if(!player.isSneaking()) {
TileEntityMachineUF6Tank entity = (TileEntityMachineUF6Tank) world.getTileEntity(x, y, z);
if(entity != null) {
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
}
return true;
} else {
return false;
}
}
}

View File

@ -72,6 +72,9 @@ public class FalloutConfigJSON {
entries.add(new FalloutEntry() .mB(ModBlocks.waste_leaves) .prim(new Triplet(Blocks.air, 0, 1)) .max(woodEffectRange));
entries.add(new FalloutEntry() .mB(Blocks.leaves) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange - 5D));
entries.add(new FalloutEntry() .mB(Blocks.leaves2) .prim(new Triplet(ModBlocks.waste_leaves, 0, 1)) .min(woodEffectRange - 5D));
entries.add(new FalloutEntry() .mB(ModBlocks.glyphid_base) .prim(new Triplet(ModBlocks.glyphid_base, 2, 1)));
entries.add(new FalloutEntry() .mB(ModBlocks.glyphid_spawner) .prim(new Triplet(ModBlocks.glyphid_spawner, 2, 1)));
entries.add(new FalloutEntry().mB(Blocks.mossy_cobblestone).prim(new Triplet(Blocks.coal_ore, 0, 1)));
entries.add(new FalloutEntry().mB(ModBlocks.ore_nether_uranium).prim(new Triplet(ModBlocks.ore_nether_schrabidium, 0, 1), new Triplet(ModBlocks.ore_nether_uranium_scorched, 0, 99)));

View File

@ -10,6 +10,7 @@ import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter;
import com.hbm.interfaces.NotableComments;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.IConfigurableMachine;
import com.hbm.tileentity.TileMappings;
@ -20,6 +21,7 @@ import com.hbm.tileentity.TileMappings;
* tile entities from the registry automatically and generate config options.
* @author hbm
*/
@NotableComments
public class MachineDynConfig {
public static final Gson gson = new Gson();

View File

@ -166,7 +166,6 @@ public class WeaponRecipes {
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b93), new Object[] { "PCE", "SEB", "PCE", 'P', ModItems.plate_dineutronium, 'C', ModItems.weaponized_starblaster_cell, 'E', ModItems.component_emitter, 'B', ModItems.gun_b92, 'S', ModItems.singularity_spark });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_b92_ammo, 1), new Object[] { "PSP", "ESE", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'E', ModItems.powder_spark_mix });
CraftingManager.addShapelessAuto(new ItemStack(ModItems.weaponized_starblaster_cell, 1), new Object[] { new ItemStack(ModItems.fluid_tank_full, 1, Fluids.PEROXIDE.getID()), GunB92Cell.getFullCell(), CU.wireFine() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "SMS", " PB", " P ", 'S', STEEL.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', STEEL.plate(), 'B', DURA.bolt() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite, 1), new Object[] { "SMS", " PB", " P ", 'S', BIGMT.ingot(), 'M', ModItems.mechanism_rifle_2, 'P', BIGMT.plate(), 'B', W.bolt() });
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi_saturnite_silencer, 1), new Object[] { "P ", " P ", " U", 'P', ANY_PLASTIC.ingot(), 'U', ModItems.gun_uzi_saturnite });

View File

@ -86,6 +86,7 @@ public class EntityGlyphid extends EntityMob {
//subtypes
public static final int TYPE_NORMAL = 0;
public static final int TYPE_INFECTED = 1;
public static final int TYPE_RADIOACTIVE = 2;
//data watcher keys
public static final int DW_WALL = 16;
@ -116,9 +117,10 @@ public class EntityGlyphid extends EntityMob {
@Override
protected void applyEntityAttributes() {
super.applyEntityAttributes();
int variant = this.dataWatcher.getWatchableObjectByte(DW_SUBTYPE);
this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(GlyphidStats.getStats().getGrunt().health);
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getGrunt().speed);
this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getGrunt().damage);
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(GlyphidStats.getStats().getGrunt().speed * (variant == TYPE_RADIOACTIVE ? 2D : 1D));
this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(GlyphidStats.getStats().getGrunt().damage * (variant == TYPE_RADIOACTIVE ? 5D : 1D));
}
public float getDivisorPerArmorPoint() {

View File

@ -137,6 +137,7 @@ public abstract class GlyphidStats {
// If damage is fire damage, reduce damage above 5 then ignore armor
if(source.isFireDamage()) {
if(glyphid.getDataWatcher().getWatchableObjectByte(glyphid.DW_SUBTYPE) == glyphid.TYPE_RADIOACTIVE) return false;
float dmg = Math.min(amount, 5F);
if(amount > 5) dmg += (amount - 5F) * 0.1F;
return glyphid.attackSuperclass(source, dmg);

View File

@ -1,6 +1,7 @@
package com.hbm.entity.mob.siege;
import com.hbm.entity.mob.EntityBurrowingSwingingBase;
import com.hbm.interfaces.NotableComments;
import net.minecraft.entity.IEntityLivingData;
import net.minecraft.entity.SharedMonsterAttributes;
@ -21,6 +22,7 @@ import net.minecraft.world.World;
//well it ain't fucking funny
//this stupid fucking random ass bullshit is the P R E C I S E reason i loathe working with entities
//honest to fucking god was the entire mojang dev team on crack when they wrote this?
@NotableComments
public class EntitySiegeTunneler extends EntityBurrowingSwingingBase {
public EntitySiegeTunneler(World world) {

View File

@ -3,7 +3,13 @@ package com.hbm.entity.projectile;
import com.hbm.config.BombConfig;
import com.hbm.entity.logic.EntityNukeExplosionMK5;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockMutatorFire;
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.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
@ -45,18 +51,25 @@ public class EntityBombletZeta extends EntityThrowable {
{
if(!this.worldObj.isRemote)
{
if(type == 0) {
ExplosionLarge.explode(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 5.0F, true, false, false, this);
worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombDet", 25.0F, 0.8F + rand.nextFloat() * 0.4F);
if(type == 0) {
ExplosionVNT vnt = new ExplosionVNT(worldObj, this.posX + 0.5F, this.posY + 1.5F, this.posZ + 0.5F, 4F);
vnt.setBlockAllocator(new BlockAllocatorStandard());
vnt.setBlockProcessor(new BlockProcessorStandard());
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 100));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F));
vnt.explode();
}
if(type == 1) {
ExplosionLarge.explode(worldObj, this.posX + 0.5F, this.posY + 0.5F, this.posZ + 0.5F, 2.5F, false, false, false, this);
ExplosionChaos.burn(worldObj, (int)posX, (int)posY, (int)posZ, 9);
ExplosionChaos.flameDeath(worldObj, (int)posX, (int)posY, (int)posZ, 14);
worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "hbm:entity.bombDet", 25.0F, 1.0F);
for(int i = 0; i < 5; i++)
ExplosionLarge.spawnBurst(worldObj, this.posX + 0.5F, this.posY + 1.0F, this.posZ + 0.5F, rand.nextInt(10) + 15, rand.nextFloat() * 2 + 2);
ExplosionVNT vnt = new ExplosionVNT(worldObj, this.posX + 0.5F, this.posY + 1.5F, this.posZ + 0.5F, 4F);
vnt.setBlockAllocator(new BlockAllocatorStandard());
vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorFire()));
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 100));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(15, 5F, 1.75F));
vnt.explode();
}
if(type == 2) {
worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F);

View File

@ -1,19 +1,14 @@
package com.hbm.entity.projectile;
import com.hbm.items.weapon.sedna.BulletConfig;
import com.hbm.util.BobMathUtil;
import com.hbm.util.EntityDamageUtil;
import com.hbm.util.TrackerUtil;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.DamageSource;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.ForgeDirection;
public class EntityBulletBaseMK4 extends EntityThrowableInterp {
@ -21,6 +16,7 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
//used for rendering tracers
public double velocity;
public double prevVelocity;
public double accel;
public float damage;
public int ricochets = 0;
@ -122,85 +118,21 @@ public class EntityBulletBaseMK4 extends EntityThrowableInterp {
if(worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) worldObj, this);
}
@Override
protected void onImpact(MovingObjectPosition mop) {
if(!worldObj.isRemote) {
if(this.config.onImpact != null) this.config.onImpact.accept(this, mop);
if(this.isDead) return;
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ);
Vec3 vel = Vec3.createVectorHelper(motionX, motionY, motionZ).normalize();
double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90);
if(angle <= config.ricochetAngle) {
this.ricochets++;
if(this.ricochets > this.config.maxRicochetCount) {
this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
this.setDead();
}
switch(mop.sideHit) {
case 0: case 1: motionY *= -1; break;
case 2: case 3: motionZ *= -1; break;
case 4: case 5: motionX *= -1; break;
}
worldObj.playSoundAtEntity(this, "hbm:weapon.ricochet", 0.25F, 1.0F);
this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
//send a teleport so the ricochet is more accurate instead of the interp smoothing fucking everything up
if(worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) worldObj, this);
return;
} else {
this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
this.setDead();
}
}
if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
Entity entity = mop.entityHit;
if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) {
return;
}
DamageSource damageCalc = this.config.getDamage(this, getThrower(), false);
if(!(entity instanceof EntityLivingBase)) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, this.damage);
return;
}
EntityLivingBase living = (EntityLivingBase) entity;
float prevHealth = living.getHealth();
if(this.config.armorPiercingPercent == 0) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, this.damage);
} else {
DamageSource damagePiercing = this.config.getDamage(this, getThrower(), true);
EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, this.damage, this.config.armorPiercingPercent);
}
float newHealth = living.getHealth();
if(this.config.damageFalloffByPen) this.damage -= Math.max(prevHealth - newHealth, 0);
if(!this.doesPenetrate() || this.damage < 0) {
this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
this.setDead();
}
}
if(this.config.onRicochet != null) this.config.onRicochet.accept(this, mop);
if(this.config.onEntityHit != null) this.config.onEntityHit.accept(this, mop);
}
}
@Override protected double headingForceMult() { return 1D; }
@Override public double getGravityVelocity() { return this.config.gravity; }
@Override protected double motionMult() { return this.config.velocity; }
@Override protected double motionMult() { return this.config.velocity + this.accel; }
@Override protected float getAirDrag() { return 1F; }
@Override protected float getWaterDrag() { return 1F; }

View File

@ -22,7 +22,6 @@ public class ExplosionEffectWeapon implements IExplosionSFX {
public void doEffect(ExplosionVNT explosion, World world, double x, double y, double z, float size) {
if(world.isRemote) return;
world.playSoundEffect(x, y, z, "random.explode", 4.0F, (1.0F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F) * 0.9F);
ExplosionSmallCreator.composeEffect(world, x, y, z, cloudCount, cloudScale, cloudSpeedMult);
}
}

View File

@ -0,0 +1,7 @@
package com.hbm.interfaces;
/*
* Historically, NTM has had so many comments that are either funny or lengthy rants or other silly shit that it's
* hard to keep track of all of it, this annotation shall be used on classes with noteworthy comments.
*/
public @interface NotableComments { }

View File

@ -20,6 +20,7 @@ import com.hbm.hazard.HazardData;
import com.hbm.hazard.HazardEntry;
import com.hbm.hazard.HazardRegistry;
import com.hbm.hazard.HazardSystem;
import com.hbm.interfaces.NotableComments;
import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.material.MaterialShapes;
import com.hbm.inventory.material.Mats;
@ -45,6 +46,7 @@ import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent;
//the more i optimize this, the more it starts looking like gregtech
@NotableComments
public class OreDictManager {
/** Alternate, additional names for ore dict registration. Used mostly for DictGroups */

View File

@ -1,5 +1,7 @@
package com.hbm.inventory;
import com.hbm.interfaces.NotableComments;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
@ -8,6 +10,7 @@ import net.minecraft.item.ItemStack;
* Because vanilla slots have severe mental disabilities that prevent them from working as expected.
* @author hbm
*/
@NotableComments
public class SlotNonRetarded extends Slot {
public SlotNonRetarded(IInventory inventory, int id, int x, int y) {

View File

@ -170,6 +170,8 @@ public class Fluids {
public static FluidType HEAVYWATER_HOT;
public static FluidType SODIUM;
public static FluidType SODIUM_HOT;
public static FluidType LEAD;
public static FluidType LEAD_HOT;
public static FluidType THORIUM_SALT;
public static FluidType THORIUM_SALT_HOT;
public static FluidType THORIUM_SALT_DEPLETED;
@ -379,7 +381,9 @@ public class Fluids {
LIGHTOIL_DS = new FluidType("LIGHTOIL_DS", 0x63543E, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(LIQUID, P_FUEL);
STELLAR_FLUX = new FluidType("STELLAR_FLUX", 0xE300FF, 0, 4, 4, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS);
VITRIOL = new FluidType("VITRIOL", 0x6E5222, 2, 0, 1, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
SLOP = new FluidType(141, "SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
SLOP = new FluidType("SLOP", 0x929D45, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS);
LEAD = new FluidType("LEAD", 0x666672, 4, 0, 0, EnumSymbol.NONE).setTemp(350).addTraits(LIQUID, VISCOUS);
LEAD_HOT = new FluidType(143, "LEAD_HOT", 0x776563, 4, 0, 0, EnumSymbol.NONE).setTemp(1500).addTraits(LIQUID, VISCOUS);
// ^ ^ ^ ^ ^ ^ ^ ^
//ADD NEW FLUIDS HERE
@ -416,6 +420,8 @@ public class Fluids {
metaOrder.add(BLOOD_HOT);
metaOrder.add(SODIUM);
metaOrder.add(SODIUM_HOT);
metaOrder.add(LEAD);
metaOrder.add(LEAD_HOT);
metaOrder.add(THORIUM_SALT);
metaOrder.add(THORIUM_SALT_HOT);
metaOrder.add(THORIUM_SALT_DEPLETED);
@ -609,9 +615,11 @@ public class Fluids {
HEAVYWATER.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(300, 1, HEAVYWATER_HOT, 1), new FT_PWRModerator(1.25D));
HEAVYWATER_HOT.addTraits(new FT_Coolable(HEAVYWATER, 1, 1, 300).setEff(CoolingType.HEATEXCHANGER, 1.0D));
SODIUM.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 2.5D).setEff(HeatingType.ICF, 3D).addStep(400, 1, SODIUM_HOT, 1));
SODIUM_HOT.addTraits(new FT_Coolable(SODIUM, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));
LEAD.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 0.75D).setEff(HeatingType.ICF, 4D).addStep(800, 1, LEAD_HOT, 1), new FT_PWRModerator(0.75D));
LEAD_HOT.addTraits(new FT_Coolable(LEAD, 1, 1, 680 /* -15% is not a huge nerf but it will piss off the PWRmaxxers hard, lead should not be the end-all-be-all, especially given the cost */).setEff(CoolingType.HEATEXCHANGER, 1.0D));
THORIUM_SALT.addTraits(new FT_Heatable().setEff(HeatingType.PWR, 1.0D).addStep(400, 1, THORIUM_SALT_HOT, 1), new FT_PWRModerator(2.5D));
THORIUM_SALT_HOT.addTraits(new FT_Coolable(THORIUM_SALT_DEPLETED, 1, 1, 400).setEff(CoolingType.HEATEXCHANGER, 1.0D));

View File

@ -42,7 +42,7 @@ public class FT_Coolable extends FluidTrait {
@Override
public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.RED + "Thermal capacity: " + heatEnergy + " TU");
info.add(EnumChatFormatting.RED + "Thermal capacity: " + heatEnergy + " TU per " + amountReq + "mB");
for(CoolingType type : CoolingType.values()) {
double eff = getEfficiency(type);

View File

@ -42,7 +42,7 @@ public class FT_Heatable extends FluidTrait {
@Override
public void addInfoHidden(List<String> info) {
info.add(EnumChatFormatting.RED + "Thermal capacity: " + this.getFirstStep().heatReq + " TU");
info.add(EnumChatFormatting.RED + "Thermal capacity: " + this.getFirstStep().heatReq + " TU per " + this.getFirstStep().amountReq + "mB");
for(HeatingType type : HeatingType.values()) {
double eff = getEfficiency(type);

View File

@ -4,6 +4,7 @@ import java.util.Arrays;
import org.lwjgl.opengl.GL11;
import com.hbm.interfaces.NotableComments;
import com.hbm.inventory.container.ContainerAutocrafter;
import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityMachineAutocrafter;
@ -15,6 +16,7 @@ import net.minecraft.inventory.Slot;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
@NotableComments
public class GUIAutocrafter extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_autocrafter.png");

View File

@ -32,7 +32,7 @@ public class GUIICF extends GuiInfoContainer {
icf.tanks[1].renderTankInfo(this, x, y, guiLeft + 188, guiTop + 18, 16, 70);
icf.tanks[2].renderTankInfo(this, x, y, guiLeft + 224, guiTop + 18, 16, 70);
this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%"));
this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU/t - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%"));
this.drawCustomInfoStat(x, y, guiLeft + 187, guiTop + 89, 18, 18, x, y, BobMathUtil.getShortNumber(icf.heat) + " / " + BobMathUtil.getShortNumber(icf.maxHeat) + "TU");
}

View File

@ -43,6 +43,8 @@ public class LiquefactionRecipes extends SerializableRecipe {
recipes.put(KEY_LOG, new FluidStack(100, Fluids.MUG));
recipes.put(KNO.dust(), new FluidStack(750, Fluids.NITRIC_ACID));
recipes.put(NA.dust(), new FluidStack(100, Fluids.SODIUM));
recipes.put(PB.ingot(), new FluidStack(100, Fluids.LEAD));
recipes.put(PB.dust(), new FluidStack(100, Fluids.LEAD));
//general utility recipes because why not
recipes.put(new ComparableStack(Blocks.netherrack), new FluidStack(250, Fluids.LAVA));
recipes.put(new ComparableStack(Blocks.cobblestone), new FluidStack(250, Fluids.LAVA));

View File

@ -70,6 +70,7 @@ public class SolidificationRecipes extends SerializableRecipe {
registerRecipe(WATZ, 1000, ModItems.ingot_mud);
registerRecipe(REDMUD, 1000, Items.iron_ingot);
registerRecipe(SODIUM, 100, ModItems.powder_sodium);
registerRecipe(LEAD, 100, ModItems.ingot_lead);
registerRecipe(SLOP, 250, ModBlocks.ore_oil_sand);
registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE));

View File

@ -1529,7 +1529,6 @@ public class ModItems {
public static Item gun_rpg;
public static Item gun_karl;
public static Item gun_panzerschreck;
public static Item gun_quadro;
public static Item gun_hk69;
public static Item gun_stinger;
@ -1561,13 +1560,11 @@ public class ModItems {
public static Item gun_chemthrower;
public static Item gun_mp40;
public static Item gun_thompson;
public static Item gun_uzi;
public static Item gun_uzi_silencer;
public static Item gun_uzi_saturnite;
public static Item gun_uzi_saturnite_silencer;
public static Item gun_uboinik;
public static Item gun_remington;
public static Item gun_spas12;
public static Item gun_supershotgun;
public static Item gun_benelli;
public static Item gun_ks23;
@ -1630,6 +1627,7 @@ public class ModItems {
public static Item gun_henry;
public static Item gun_greasegun;
public static Item gun_maresleg;
public static Item gun_maresleg_akimbo;
public static Item gun_flaregun;
public static Item gun_heavy_revolver;
public static Item gun_carbine;
@ -1638,6 +1636,10 @@ public class ModItems {
public static Item gun_congolake;
public static Item gun_flamer;
public static Item gun_lag;
public static Item gun_uzi;
public static Item gun_spas12;
public static Item gun_panzerschreck;
public static Item gun_g3;
public static Item ammo_standard;
@ -4123,13 +4125,11 @@ public class ModItems {
gun_chemthrower = new ItemGunChemthrower().setUnlocalizedName("gun_chemthrower").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fatman");
gun_mp40 = new ItemGunBase(Gun9mmFactory.getMP40Config()).setUnlocalizedName("gun_mp40").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mp40");
gun_thompson = new ItemGunBase(Gun45ACPFactory.getThompsonConfig()).setUnlocalizedName("gun_thompson").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_thompson");
gun_uzi = new ItemGunBase(Gun22LRFactory.getUziConfig()).setUnlocalizedName("gun_uzi").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi");
gun_uzi_silencer = new ItemGunBase(Gun22LRFactory.getUziConfig().silenced()).setUnlocalizedName("gun_uzi_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_silencer");
gun_uzi_saturnite = new ItemGunBase(Gun22LRFactory.getSaturniteConfig()).setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite");
gun_uzi_saturnite_silencer = new ItemGunBase(Gun22LRFactory.getSaturniteConfig().silenced()).setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer");
gun_uboinik = new ItemGunBase(Gun12GaugeFactory.getUboinikConfig()).setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik");
gun_remington = new ItemGunBase(Gun12GaugeFactory.getRemington870Config()).setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12");
gun_spas12 = new ItemGunBase(Gun12GaugeFactory.getSpas12Config(), Gun12GaugeFactory.getSpas12AltConfig()).setUnlocalizedName("gun_spas12").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12");
gun_benelli = new ItemGunBase(Gun12GaugeFactory.getBenelliModConfig()).setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12");
gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik");
gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik");
@ -6966,7 +6966,6 @@ public class ModItems {
GameRegistry.registerItem(gun_b93, gun_b93.getUnlocalizedName());
GameRegistry.registerItem(gun_rpg, gun_rpg.getUnlocalizedName());
GameRegistry.registerItem(gun_karl, gun_karl.getUnlocalizedName());
GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName());
GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName());
GameRegistry.registerItem(gun_hk69, gun_hk69.getUnlocalizedName());
GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName());
@ -6977,13 +6976,11 @@ public class ModItems {
GameRegistry.registerItem(gun_chemthrower, gun_chemthrower.getUnlocalizedName());
GameRegistry.registerItem(gun_mp40, gun_mp40.getUnlocalizedName());
GameRegistry.registerItem(gun_thompson, gun_thompson.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi_silencer,gun_uzi_silencer.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi_saturnite, gun_uzi_saturnite.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi_saturnite_silencer,gun_uzi_saturnite_silencer.getUnlocalizedName());
GameRegistry.registerItem(gun_uboinik, gun_uboinik.getUnlocalizedName());
GameRegistry.registerItem(gun_remington, gun_remington.getUnlocalizedName());
GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName());
GameRegistry.registerItem(gun_benelli, gun_benelli.getUnlocalizedName());
GameRegistry.registerItem(gun_supershotgun, gun_supershotgun.getUnlocalizedName());
GameRegistry.registerItem(gun_ks23, gun_ks23.getUnlocalizedName());
@ -7033,6 +7030,7 @@ public class ModItems {
GameRegistry.registerItem(gun_henry, gun_henry.getUnlocalizedName());
GameRegistry.registerItem(gun_greasegun, gun_greasegun.getUnlocalizedName());
GameRegistry.registerItem(gun_maresleg, gun_maresleg.getUnlocalizedName());
GameRegistry.registerItem(gun_maresleg_akimbo, gun_maresleg_akimbo.getUnlocalizedName());
GameRegistry.registerItem(gun_flaregun, gun_flaregun.getUnlocalizedName());
GameRegistry.registerItem(gun_heavy_revolver, gun_heavy_revolver.getUnlocalizedName());
GameRegistry.registerItem(gun_carbine, gun_carbine.getUnlocalizedName());
@ -7041,6 +7039,10 @@ public class ModItems {
GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName());
GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName());
GameRegistry.registerItem(gun_lag, gun_lag.getUnlocalizedName());
GameRegistry.registerItem(gun_uzi, gun_uzi.getUnlocalizedName());
GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName());
GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName());
GameRegistry.registerItem(gun_g3, gun_g3.getUnlocalizedName());
GameRegistry.registerItem(ammo_standard, ammo_standard.getUnlocalizedName());

View File

@ -1,11 +1,13 @@
package com.hbm.items.block;
import com.hbm.blocks.ModBlocks;
import com.hbm.interfaces.NotableComments;
import net.minecraft.block.Block;
import net.minecraft.block.BlockSlab;
import net.minecraft.item.ItemSlab;
@NotableComments
public class ItemModSlab extends ItemSlab {
public ItemModSlab(Block block) {

View File

@ -11,12 +11,19 @@ import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.lib.ModDamageSource;
import com.hbm.particle.SpentCasing;
import com.hbm.util.BobMathUtil;
import com.hbm.util.EntityDamageUtil;
import com.hbm.util.TrackerUtil;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSourceIndirect;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.util.ForgeDirection;
public class BulletConfig {
@ -50,6 +57,8 @@ public class BulletConfig {
public Consumer<EntityBulletBaseMK4> onUpdate;
public BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> onImpact;
public BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> onRicochet = LAMBDA_STANDARD_RICOCHET;
public BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> onEntityHit = LAMBDA_STANDARD_ENTITY_HIT;
public double gravity = 0;
public int expires = 30;
@ -92,9 +101,11 @@ public class BulletConfig {
public BulletConfig setRenderRotations(boolean rot) { this.renderRotations = rot; return this; }
public BulletConfig setCasing(SpentCasing casing) { this.casing = casing; return this; }
public BulletConfig setRenderer(BiConsumer<EntityBulletBaseMK4, Float> renderer) { this.renderer = renderer; return this; }
public BulletConfig setOnUpdate(Consumer<EntityBulletBaseMK4> lambda) { this.onUpdate = lambda; return this; }
public BulletConfig setOnImpact(BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> lambda) { this.onImpact = lambda; return this; }
public BulletConfig setOnUpdate(Consumer<EntityBulletBaseMK4> lambda) { this.onUpdate = lambda; return this; }
public BulletConfig setOnRicochet(BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> lambda) { this.onRicochet = lambda; return this; }
public BulletConfig setOnImpact(BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> lambda) { this.onImpact = lambda; return this; }
public BulletConfig setOnEntityHit(BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> lambda) { this.onEntityHit = lambda; return this; }
public DamageSource getDamage(EntityBulletBaseMK4 bullet, EntityLivingBase shooter, boolean bypass) {
@ -110,4 +121,75 @@ public class BulletConfig {
return dmg;
}
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_RICOCHET = (bullet, mop) -> {
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit);
Vec3 face = Vec3.createVectorHelper(dir.offsetX, dir.offsetY, dir.offsetZ);
Vec3 vel = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).normalize();
double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90);
if(angle <= bullet.config.ricochetAngle) {
bullet.ricochets++;
if(bullet.ricochets > bullet.config.maxRicochetCount) {
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
bullet.setDead();
}
switch(mop.sideHit) {
case 0: case 1: bullet.motionY *= -1; break;
case 2: case 3: bullet.motionZ *= -1; break;
case 4: case 5: bullet.motionX *= -1; break;
}
bullet.worldObj.playSoundAtEntity(bullet, "hbm:weapon.ricochet", 0.25F, 1.0F);
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
//send a teleport so the ricochet is more accurate instead of the interp smoothing fucking everything up
if(bullet.worldObj instanceof WorldServer) TrackerUtil.sendTeleport((WorldServer) bullet.worldObj, bullet);
return;
} else {
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
bullet.setDead();
}
}
};
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_ENTITY_HIT = (bullet, mop) -> {
if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
Entity entity = mop.entityHit;
if(entity == bullet.getThrower() && bullet.ticksExisted < bullet.selfDamageDelay()) return;
if(entity instanceof EntityLivingBase && ((EntityLivingBase) entity).getHealth() <= 0) return;
DamageSource damageCalc = bullet.config.getDamage(bullet, bullet.getThrower(), false);
if(!(entity instanceof EntityLivingBase)) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage);
return;
}
EntityLivingBase living = (EntityLivingBase) entity;
float prevHealth = living.getHealth();
if(bullet.config.armorPiercingPercent == 0) {
EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, damageCalc, bullet.damage);
} else {
DamageSource damagePiercing = bullet.config.getDamage(bullet, bullet.getThrower(), true);
EntityDamageUtil.attackArmorPiercing(living, damageCalc, damagePiercing, bullet.damage, bullet.config.armorPiercingPercent);
}
float newHealth = living.getHealth();
if(bullet.config.damageFalloffByPen) bullet.damage -= Math.max(prevHealth - newHealth, 0);
if(!bullet.doesPenetrate() || bullet.damage < 0) {
bullet.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
bullet.setDead();
}
}
};
}

View File

@ -49,6 +49,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
public static final String KEY_DRAWN = "drawn";
public static final String KEY_AIMING = "aiming";
public static final String KEY_MODE = "mode_";
public static final String KEY_WEAR = "wear_";
public static final String KEY_TIMER = "timer_";
public static final String KEY_STATE = "state_";
@ -221,6 +222,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei
// GUN STATE //
public static GunState getState(ItemStack stack, int index) { return EnumUtil.grabEnumSafely(GunState.class, getValueByte(stack, KEY_STATE + index)); }
public static void setState(ItemStack stack, int index, GunState value) { setValueByte(stack, KEY_STATE + index, (byte) value.ordinal()); }
// GUN MODE //
public static int getMode(ItemStack stack, int index) { return getValueInt(stack, KEY_MODE + index); }
public static void setMode(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MODE + index, value); }
// GUN AIMING //
public static boolean getIsAiming(ItemStack stack) { return getValueBool(stack, KEY_AIMING); }
public static void setIsAiming(ItemStack stack, boolean value) { setValueBool(stack, KEY_AIMING, value); }

View File

@ -4,6 +4,7 @@ import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.Lego;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import net.minecraft.item.ItemStack;
@ -17,27 +18,28 @@ import net.minecraft.util.Vec3;
*/
public class Receiver {
public static final String F_BASEDAMAGE = "F_BASEDAMAGE";
public static final String I_DELAYAFTERFIRE = "I_DELAYAFTERFIRE";
public static final String I_DELAYAFTERDRYFIRE = "I_DELAYAFTERDRYFIRE";
public static final String I_ROUNDSPERCYCLE = "I_ROUNDSPERCYCLE";
public static final String F_SPREADMOD = "F_SPREADMOD";
public static final String B_REFIREONHOLD = "B_REFIREONHOLD";
public static final String B_DOESDRYFIRE = "B_DOESDRYFIRE";
public static final String B_EJECTONFIRE = "B_EJECTONFIRE";
public static final String I_RELOADBEGINDURATION = "I_RELOADBEGINDURATION";
public static final String I_RELOADCYCLEDURATION = "I_RELOADCYCLEDURATION";
public static final String I_RELOADENDDURATION = "I_RELOADENDDURATION";
public static final String I_RELOADCOCKONEMPTY = "I_RELOADCOCKONEMPTY";
public static final String I_JAMDURATION = "I_JAMDURATION";
public static final String S_FIRESOUND = "S_FIRESOUND";
public static final String F_FIREVOLUME = "F_FIREVOLUME";
public static final String F_FIREPITCH = "F_FIREPITCH";
public static final String O_MAGAZINE = "O_MAGAZINE";
public static final String O_PROJECTILEOFFSET = "O_PROJECTILEOFFSET";
public static final String FUN_CANFIRE = "FUN_CANFIRE";
public static final String CON_ONFIRE = "CON_ONFIRE";
public static final String CON_ONRECOIL = "CON_ONRECOIL";
public static final String F_BASEDAMAGE = "F_BASEDAMAGE";
public static final String I_DELAYAFTERFIRE = "I_DELAYAFTERFIRE";
public static final String I_DELAYAFTERDRYFIRE = "I_DELAYAFTERDRYFIRE";
public static final String I_ROUNDSPERCYCLE = "I_ROUNDSPERCYCLE";
public static final String F_SPREADMOD = "F_SPREADMOD";
public static final String B_REFIREONHOLD = "B_REFIREONHOLD";
public static final String B_DOESDRYFIRE = "B_DOESDRYFIRE";
public static final String B_EJECTONFIRE = "B_EJECTONFIRE";
public static final String I_RELOADBEGINDURATION = "I_RELOADBEGINDURATION";
public static final String I_RELOADCYCLEDURATION = "I_RELOADCYCLEDURATION";
public static final String I_RELOADENDDURATION = "I_RELOADENDDURATION";
public static final String I_RELOADCOCKONEMPTYPRE = "I_RELOADCOCKONEMPTYPRE";
public static final String I_RELOADCOCKONEMPTYPOST = "I_RELOADCOCKONEMPTYPOST";
public static final String I_JAMDURATION = "I_JAMDURATION";
public static final String S_FIRESOUND = "S_FIRESOUND";
public static final String F_FIREVOLUME = "F_FIREVOLUME";
public static final String F_FIREPITCH = "F_FIREPITCH";
public static final String O_MAGAZINE = "O_MAGAZINE";
public static final String O_PROJECTILEOFFSET = "O_PROJECTILEOFFSET";
public static final String FUN_CANFIRE = "FUN_CANFIRE";
public static final String CON_ONFIRE = "CON_ONFIRE";
public static final String CON_ONRECOIL = "CON_ONRECOIL";
public Receiver(int index) {
this.index = index;
@ -55,7 +57,8 @@ public class Receiver {
protected int reloadBeginDuration_DNA;
protected int reloadCycleDuration_DNA;
protected int reloadEndDuration_DNA;
protected int reloadCockOnEmpty_DNA;
protected int reloadCockOnEmptyPre_DNA;
protected int reloadCockOnEmptyPost_DNA;
protected int jamDuration_DNA = 0;
protected String fireSound_DNA;
protected float fireVolume_DNA = 1.0F;
@ -78,7 +81,8 @@ public class Receiver {
public int getReloadBeginDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadBeginDuration_DNA, stack, I_RELOADBEGINDURATION, this); }
public int getReloadCycleDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCycleDuration_DNA, stack, I_RELOADCYCLEDURATION, this); }
public int getReloadEndDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadEndDuration_DNA, stack, I_RELOADENDDURATION, this); }
public int getReloadCockOnEmpty(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCockOnEmpty_DNA, stack, I_RELOADCOCKONEMPTY, this); }
public int getReloadCockOnEmptyPre(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCockOnEmptyPre_DNA, stack, I_RELOADCOCKONEMPTYPRE, this); }
public int getReloadCockOnEmptyPost(ItemStack stack) { return WeaponUpgradeManager.eval(this.reloadCockOnEmptyPost_DNA, stack, I_RELOADCOCKONEMPTYPOST, this); }
public int getJamDuration(ItemStack stack) { return WeaponUpgradeManager.eval(this.jamDuration_DNA, stack, I_JAMDURATION, this); }
public String getFireSound(ItemStack stack) { return WeaponUpgradeManager.eval(this.fireSound_DNA, stack, S_FIRESOUND, this); }
public float getFireVolume(ItemStack stack) { return WeaponUpgradeManager.eval(this.fireVolume_DNA, stack, F_FIREVOLUME, this); }
@ -103,14 +107,14 @@ public class Receiver {
public Receiver offset(double f, double u, double s) { this.projectileOffset_DNA = Vec3.createVectorHelper(f, u, s); return this; }
public Receiver jam(int jam) { this.jamDuration_DNA = jam; return this; }
public Receiver reload(int delay) {
return reload(delay, delay, 0, 0);
}
public Receiver reload(int begin, int cycle, int end, int cock) {
public Receiver reload(int delay) { return reload(0, delay, delay, 0, 0); }
public Receiver reload(int begin, int cycle, int end, int cock) { return reload(0, begin, cycle, end, cock); }
public Receiver reload(int pre, int begin, int cycle, int end, int post) {
this.reloadBeginDuration_DNA = begin;
this.reloadCycleDuration_DNA = cycle;
this.reloadEndDuration_DNA = end;
this.reloadCockOnEmpty_DNA = cock;
this.reloadCockOnEmptyPre_DNA = pre;
this.reloadCockOnEmptyPost_DNA = post;
return this;
}
@ -124,4 +128,10 @@ public class Receiver {
this.firePitch_DNA = pitch;
return this;
}
public Receiver setupStandardFire() {
return this
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE)
.fire(Lego.LAMBDA_STANDARD_FIRE);
}
}

View File

@ -54,6 +54,8 @@ public class GunFactory {
XFactory762mm.init();
XFactory22lr.init();
XFactoryFlamer.init();
XFactoryRocket.init();
XFactory556mm.init();
/// PROXY BULLSHIT ///
MainRegistry.proxy.registerGunCfg();
@ -65,9 +67,11 @@ public class GunFactory {
M44_SP, M44_FMJ, M44_JHP, M44_AP, M44_EXPRESS,
P22_SP, P22_FMJ, P22_JHP, P22_AP,
P9_SP, P9_FMJ, P9_JHP, P9_AP,
G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12,
R556_SP, R556_FMJ, R556_JHP, R556_AP,
R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU,
G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12,
G40_FLARE, G40,
ROCKET_HE, ROCKET_HEAT,
FLAME_DIESEL,
}
}

View File

@ -6,8 +6,10 @@ import static com.hbm.items.weapon.sedna.factory.XFactory22lr.*;
import static com.hbm.items.weapon.sedna.factory.XFactory357.*;
import static com.hbm.items.weapon.sedna.factory.XFactory40mm.*;
import static com.hbm.items.weapon.sedna.factory.XFactory44.*;
import static com.hbm.items.weapon.sedna.factory.XFactory556mm.*;
import static com.hbm.items.weapon.sedna.factory.XFactory762mm.*;
import static com.hbm.items.weapon.sedna.factory.XFactory9mm.*;
import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
@ -26,6 +28,7 @@ public class GunFactoryClient {
MinecraftForgeClient.registerItemRenderer(ModItems.gun_henry, new ItemRenderHenry());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_greasegun, new ItemRenderGreasegun());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg, new ItemRenderMaresleg());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_maresleg_akimbo, new ItemRenderMareslegAkimbo());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flaregun, new ItemRenderFlaregun());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_heavy_revolver, new ItemRenderHeavyRevolver());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_carbine, new ItemRenderCarbine());
@ -34,6 +37,10 @@ public class GunFactoryClient {
MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderCongoLake());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderFlamer());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_lag, new ItemRenderLAG());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUzi());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderSPAS12());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderPanzerschreck());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_g3, new ItemRenderG3());
//PROJECTILES
ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
ammo_debug_buckshot.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
@ -66,6 +73,12 @@ public class GunFactoryClient {
p22_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
g40_flare.setRenderer(LegoClient.RENDER_FLARE);
g40.setRenderer(LegoClient.RENDER_GRENADE);
rocket_rpzb_he.setRenderer(LegoClient.RENDER_RPZB);
rocket_rpzb_heat.setRenderer(LegoClient.RENDER_RPZB);
r556_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
r556_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
r556_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET);
r556_ap.setRenderer(LegoClient.RENDER_AP_BULLET);
//HUDS
((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
@ -81,8 +94,14 @@ public class GunFactoryClient {
((ItemGunBaseNT) ModItems.gun_congolake) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_flamer) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO_NOCOUNTER);
((ItemGunBaseNT) ModItems.gun_lag) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_uzi) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_spas12) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_panzerschreck) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_g3) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_light_revolver_dani).getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
((ItemGunBaseNT) ModItems.gun_light_revolver_dani).getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo).getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR);
((ItemGunBaseNT) ModItems.gun_maresleg_akimbo).getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO);
}
}

View File

@ -27,7 +27,7 @@ public class GunStateDecider {
deciderStandardFinishDraw(stack, lastState, index);
deciderStandardClearJam(stack, lastState, index);
deciderStandardReload(stack, ctx, lastState, 0, index);
deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getPrimary(stack, index); });
deciderAutoRefire(stack, ctx, lastState, 0, index, () -> { return ItemGunBaseNT.getPrimary(stack, index) && ItemGunBaseNT.getMode(stack, ctx.configIndex) == 0; });
};
/** Transitions the gun from DRAWING to IDLE */
@ -76,7 +76,7 @@ public class GunStateDecider {
ItemGunBaseNT.playAnimation(player, stack, AnimType.JAMMED, gunIndex);
} else {
ItemGunBaseNT.setState(stack, gunIndex, GunState.DRAWING);
int duration = rec.getReloadEndDuration(stack) + (mag.getAmountBeforeReload(stack) <= 0 ? rec.getReloadCockOnEmpty(stack) : 0);
int duration = rec.getReloadEndDuration(stack) + (mag.getAmountBeforeReload(stack) <= 0 ? rec.getReloadCockOnEmptyPost(stack) : 0);
ItemGunBaseNT.setTimer(stack, gunIndex, duration);
ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_END, gunIndex);
}
@ -114,11 +114,11 @@ public class GunStateDecider {
int remaining = rec.getRoundsPerCycle(stack) - 1;
for(int i = 0; i < remaining; i++) if(rec.getCanFire(stack).apply(stack, ctx)) rec.getOnFire(stack).accept(stack, ctx);
//if not, revert to idle
} else if(rec.getDoesDryFire(stack)) {
} else /*if(rec.getDoesDryFire(stack)) {
ItemGunBaseNT.setState(stack, gunIndex, GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, gunIndex, rec.getDelayAfterDryFire(stack));
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, gunIndex);
} else {
} else*/ {
ItemGunBaseNT.setState(stack, gunIndex, GunState.IDLE);
ItemGunBaseNT.setTimer(stack, gunIndex, 0);
}

View File

@ -50,9 +50,10 @@ public class Lego {
IMagazine mag = rec.getMagazine(stack);
if(mag.canReload(stack, ctx.player)) {
mag.setAmountBeforeReload(stack, mag.getAmount(stack));
int loaded = mag.getAmount(stack);
mag.setAmountBeforeReload(stack, loaded);
ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.RELOADING);
ItemGunBaseNT.setTimer(stack, ctx.configIndex, rec.getReloadBeginDuration(stack));
ItemGunBaseNT.setTimer(stack, ctx.configIndex, rec.getReloadBeginDuration(stack) + (loaded <= 0 ? rec.getReloadCockOnEmptyPre(stack) : 0));
ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD, ctx.configIndex);
} else {
ItemGunBaseNT.playAnimation(player, stack, AnimType.INSPECT, ctx.configIndex);
@ -60,8 +61,7 @@ public class Lego {
}
};
/**
* If IDLE and ammo is loaded, fire and set to JUST_FIRED. */
/** If IDLE and ammo is loaded, fire and set to JUST_FIRED. */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_CLICK_PRIMARY = (stack, ctx) -> {
EntityPlayer player = ctx.player;
@ -93,6 +93,23 @@ public class Lego {
}
};
/** If IDLE, switch mode between 0 and 1. */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_CLICK_SECONDARY = (stack, ctx) -> {
EntityPlayer player = ctx.player;
int index = ctx.configIndex;
GunState state = ItemGunBaseNT.getState(stack, index);
if(state == GunState.IDLE) {
int mode = ItemGunBaseNT.getMode(stack, 0);
ItemGunBaseNT.setMode(stack, index, 1 - mode);
if(mode == 0)
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.switchmode1", 1F, 1F);
else
player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.switchmode2", 1F, 1F);
}
};
/** Toggles isAiming. Used by keybinds. */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_RECOIL = (stack, ctx) -> {
//ItemGunBaseNT.recoilVertical += 10;
@ -149,9 +166,13 @@ public class Lego {
/** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_STANDARD_FIRE = (stack, ctx) -> {
doStandardFire(stack, ctx, AnimType.CYCLE);
};
public static void doStandardFire(ItemStack stack, LambdaContext ctx, AnimType anim) {
EntityPlayer player = ctx.player;
int index = ctx.configIndex;
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE, ctx.configIndex);
if(anim != null) ItemGunBaseNT.playAnimation(player, stack, anim, ctx.configIndex);
float aim = ItemGunBaseNT.getIsAiming(stack) ? 0.25F : 1F;
Receiver primary = ctx.config.getReceivers(stack)[0];
@ -179,7 +200,7 @@ public class Lego {
mag.setAmount(stack, mag.getAmount(stack) - 1);
ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack)));
};
}
public static float getStandardWearSpread(ItemStack stack, GunConfig config, int index) {
float percent = (float) ItemGunBaseNT.getWear(stack, index) / config.getDurability(stack);
@ -193,9 +214,10 @@ public class Lego {
return 1F - (percent - 0.75F) * 2F;
}
public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range) {
public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range) { standardExplode(bullet, mop, range, 1F); }
public static void standardExplode(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, float range, float damageMod) {
ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, range);
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage));
vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage * damageMod));
vnt.setPlayerProcessor(new PlayerProcessorStandard());
vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F));
vnt.explode();
@ -219,7 +241,7 @@ public class Lego {
.addBus("RELOAD_JOLT", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(2, 0, 0, 50).addPos(0, 0, 0, 100))
.addBus("RELOAD_BULLETS", new BusAnimationSequence().addPos(0, 0, 0, 650).addPos(10, 0, 0, 300).addPos(10, 0, 0, 200).addPos(0, 0, 0, 700))
.addBus("RELOAD_BULLETS_CON", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(1, 0, 0, 950).addPos(0, 0, 0, 1 ) );
case INSPECT: //if(ANIM_RAND.nextBoolean()) return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addPos(-360 * 5, 0, 0, 350 * 5));
case INSPECT:
case JAMMED: return new BusAnimation()
.addBus("RELAOD_TILT", new BusAnimationSequence().addPos(-15, 0, 0, 100).addPos(65, 0, 0, 100).addPos(45, 0, 0, 50).addPos(0, 0, 0, 200).addPos(0, 0, 0, 200).addPos(-80, 0, 0, 100).addPos(-80, 0, 0, 100).addPos(0, 0, 0, 200))
.addBus("RELOAD_CYLINDER", new BusAnimationSequence().addPos(0, 0, 0, 200).addPos(90, 0, 0, 100).addPos(90, 0, 0, 450).addPos(0, 0, 0, 70));
@ -227,4 +249,12 @@ public class Lego {
return null;
};
/*
* Be honest. Do you genuinely think posting a random screenshot of your game with absolutely ZERO context of what modpack, what
* Shaders if any or literally any context at all would come to a magic solution?
* For all we know you accidentally rubbed Vaseline all over your monitor and jizzed in the hdmi socket of your pc
*
* ~ u/Wolfyy47_, 2024
*/
}

View File

@ -151,13 +151,28 @@ public class LegoClient {
};
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_GRENADE = (bullet, interp) -> {
GL11.glScalef(0.25F, 0.25F, 0.25F);
GL11.glRotated(90, 0, 0, 1);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.grenade_tex);
ResourceManager.projectiles.renderPart("Grenade");
GL11.glShadeModel(GL11.GL_FLAT);
};
public static BiConsumer<EntityBulletBaseMK4, Float> RENDER_RPZB = (bullet, interp) -> {
GL11.glPushMatrix();
GL11.glScalef(0.125F, 0.125F, 0.125F);
GL11.glRotated(90, 0, -1, 0);
GL11.glTranslatef(0, 0, 3.5F);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.panzerschreck_tex);
ResourceManager.panzerschreck.renderPart("Rocket");
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPopMatrix();
GL11.glTranslatef(0.375F, 0, 0);
double length = bullet.prevVelocity + (bullet.velocity - bullet.prevVelocity) * interp;
if(length > 0) renderBulletStandard(Tessellator.instance, 0x808080, 0xFFF2A7, length * 2, true);
};
}

View File

@ -37,7 +37,7 @@ public class Orchestras {
Receiver rec = ctx.config.getReceivers(stack)[0];
IMagazine mag = rec.getMagazine(stack);
SpentCasing casing = mag.getCasing(stack);
for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(player.worldObj, player, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName());
if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(player.worldObj, player, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE) {
@ -162,7 +162,7 @@ public class Orchestras {
if(type == AnimType.CYCLE) {
if(timer == 14) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20);
}
if(timer == 12) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.leverCock", 1F, 1F);
}
@ -185,7 +185,7 @@ public class Orchestras {
if(type == AnimType.CYCLE) {
if(timer == 2) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName());
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE_DRY) {
@ -233,7 +233,43 @@ public class Orchestras {
if(type == AnimType.CYCLE) {
if(timer == 14) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20);
}
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.leverCock", 1F, 0.8F);
}
if(type == AnimType.CYCLE_DRY) {
if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F);
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.leverCock", 1F, 0.8F);
}
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_MARESLEG_AKIMBO = (stack, ctx) -> {
EntityPlayer player = ctx.player;
if(player.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
if(type == AnimType.RELOAD) {
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 0.8F);
if(timer == 16) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.shotgunReload", 1F, 1F);
}
if(type == AnimType.RELOAD_CYCLE) {
if(timer == 0) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.shotgunReload", 1F, 1F);
}
if(type == AnimType.RELOAD_END) {
if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 0.7F);
}
if(type == AnimType.JAMMED) {
if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 0.7F);
if(timer == 17) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.leverCock", 1F, 0.8F);
if(timer == 29) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.leverCock", 1F, 0.8F);
}
if(type == AnimType.CYCLE) {
if(timer == 14) {
int offset = ctx.configIndex == 0 ? -1 : 1;
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
}
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.leverCock", 1F, 0.8F);
}
@ -256,7 +292,7 @@ public class Orchestras {
IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack);
if(mag.getAmountAfterReload(stack) > 0) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
mag.setAmountBeforeReload(stack, 0);
}
}
@ -292,7 +328,7 @@ public class Orchestras {
Receiver rec = ctx.config.getReceivers(stack)[0];
IMagazine mag = rec.getMagazine(stack);
SpentCasing casing = mag.getCasing(stack);
for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(player.worldObj, player, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName());
if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(player.worldObj, player, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE) {
@ -318,7 +354,7 @@ public class Orchestras {
if(type == AnimType.CYCLE) {
if(timer == 2) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, casing.getName(), true, 60, 0.5D, 20);
}
}
if(type == AnimType.CYCLE_DRY) {
@ -353,7 +389,7 @@ public class Orchestras {
if(type == AnimType.CYCLE) {
if(timer == 0) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName());
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE_DRY) {
@ -377,7 +413,7 @@ public class Orchestras {
if(type == AnimType.CYCLE) {
if(timer == 0) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName());
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE_DRY) {
@ -413,7 +449,7 @@ public class Orchestras {
IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack);
int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack);
SpentCasing casing = mag.getCasing(stack);
for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(player.worldObj, player, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(player.worldObj, player, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
}
if(timer == 15) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magSmallInsert", 1F, 1F);
}
@ -437,7 +473,7 @@ public class Orchestras {
int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack);
if(timer == 4 && toEject > 0) {
SpentCasing casing = mag.getCasing(stack);
for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(player.worldObj, player, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(player.worldObj, player, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20);
mag.setAmountAfterReload(stack, 0);
}
if(timer == 20) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 0.9F);
@ -455,7 +491,7 @@ public class Orchestras {
if(timer == 15) {
IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack);
SpentCasing casing = mag.getCasing(stack);
CasingCreator.composeEffect(player.worldObj, player, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, casing.getName(), true, 60, 0.5D, 20);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, casing.getName(), true, 60, 0.5D, 20);
}
}
if(type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE) {
@ -515,4 +551,111 @@ public class Orchestras {
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_UZI = (stack, ctx) -> {
EntityPlayer player = ctx.player;
if(player.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
if(type == AnimType.EQUIP) {
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.openLatch", 1F, 1.25F);
}
if(type == AnimType.CYCLE) {
if(timer == 1) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE_DRY) {
if(timer == 0) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 1F);
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.pistolCock", 1F, 1F);
}
if(type == AnimType.RELOAD) {
if(timer == 4) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magRemove", 1F, 1F);
if(timer == 26) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magInsert", 1F, 1F);
if(timer == 36) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.pistolCock", 1F, 1F);
}
if(type == AnimType.JAMMED) {
if(timer == 17) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.pistolCock", 1F, 1F);
if(timer == 31) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.pistolCock", 1F, 1F);
}
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_SPAS = (stack, ctx) -> {
EntityPlayer player = ctx.player;
if(player.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
if(type == AnimType.CYCLE || type == AnimType.ALT_CYCLE) {
if(timer == 8) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.shotgunCock", 1F, 1F);
if(timer == 10) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName());
}
}
if(type == AnimType.RELOAD) {
IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack);
if(mag.getAmount(stack) == 0) {
if(timer == 0) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverCock", 1F, 1F);
if(timer == 7) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
}
if(timer == 5) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.shotgunReload", 1F, 1F);
}
if(type == AnimType.RELOAD_CYCLE) {
if(timer == 5) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.shotgunReload", 1F, 1F);
}
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_PANERSCHRECK = (stack, ctx) -> {
EntityPlayer player = ctx.player;
if(player.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
if(type == AnimType.RELOAD) {
if(timer == 30) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.insertCanister", 1F, 1F);
}
};
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_G3 = (stack, ctx) -> {
EntityPlayer player = ctx.player;
if(player.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
if(type == AnimType.CYCLE) {
if(timer == 0) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
if(casing != null) CasingCreator.composeEffect(player.worldObj, player, 0.5, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName());
}
}
if(type == AnimType.CYCLE_DRY) {
if(timer == 0) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.dryFireClick", 1F, 0.8F);
if(timer == 5) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 0.9F);
if(timer == 9) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
}
if(type == AnimType.RELOAD) {
if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magRemove", 1F, 1F);
if(timer == 4) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 0.9F);
if(timer == 32) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magInsert", 1F, 1F);
if(timer == 36) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
}
if(type == AnimType.INSPECT) {
if(timer == 2) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magRemove", 1F, 1F);
if(timer == 28) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.magInsert", 1F, 1F);
}
if(type == AnimType.JAMMED) {
if(timer == 16) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 0.9F);
if(timer == 20) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
if(timer == 24) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 0.9F);
if(timer == 28) player.worldObj.playSoundAtEntity(player, "hbm:weapon.reload.revolverClose", 1F, 1F);
}
};
}

View File

@ -1,5 +1,6 @@
package com.hbm.items.weapon.sedna.factory;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import com.hbm.items.ModItems;
@ -8,9 +9,12 @@ import com.hbm.items.weapon.sedna.Crosshair;
import com.hbm.items.weapon.sedna.GunConfig;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.lib.RefStrings;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.BusAnimation;
@ -18,6 +22,7 @@ import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public class XFactory12ga {
@ -40,10 +45,30 @@ public class XFactory12ga {
.dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 6).addConfigs(g12_bp, g12_bp_magnum, g12_bp_slug, g12))
.offset(0.75, -0.0625, -0.1875D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_MARESLEG_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG)
).setUnlocalizedName("gun_maresleg").setTextureName(RefStrings.MODID + ":gun_darter");
ModItems.gun_maresleg_akimbo = new ItemGunBaseNT(
new GunConfig().dura(600).draw(20).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
.rec(new Receiver(0)
.dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 6).addConfigs(g12_bp, g12_bp_magnum, g12_bp_slug, g12))
.offset(0.75, -0.0625, 0.1875D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO),
new GunConfig().dura(600).draw(20).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
.rec(new Receiver(0)
.dmg(12F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineSingleReload(1, 6).addConfigs(g12_bp, g12_bp_magnum, g12_bp_slug, g12))
.offset(0.75, -0.0625, -0.1875D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_MARESLEG_SHORT_ANIMS).orchestra(Orchestras.ORCHESTRA_MARESLEG_AKIMBO)
).setUnlocalizedName("gun_maresleg_akimbo").setTextureName(RefStrings.MODID + ":gun_darter");
ModItems.gun_liberator = new ItemGunBaseNT(new GunConfig()
.dura(200).draw(20).inspect(21).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
@ -51,11 +76,51 @@ public class XFactory12ga {
.dmg(12F).delay(20).rounds(4).reload(25, 15, 7, 0).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 4).addConfigs(g12_bp, g12_bp_magnum, g12_bp_slug, g12))
.offset(0.75, -0.0625, -0.1875D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_LIBERATOR_ANIMS).orchestra(Orchestras.ORCHESTRA_LIBERATOR)
).setUnlocalizedName("gun_liberator").setTextureName(RefStrings.MODID + ":gun_darter");
ModItems.gun_spas12 = new ItemGunBaseNT(new GunConfig()
.dura(600).draw(20).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE)
.rec(new Receiver(0)
.dmg(12F).delay(20).reload(5, 10, 10, 10, 0).jam(24).sound("hbm:weapon.shotgunShoot", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 8).addConfigs(g12_bp, g12_bp_magnum, g12_bp_slug, g12))
.offset(0.75, -0.0625, -0.1875D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration().ps(LAMBDA_SPAS_SECONDARY).pt(null)
.anim(LAMBDA_SPAS_ANIMS).orchestra(Orchestras.ORCHESTRA_SPAS)
).setUnlocalizedName("gun_spas12").setTextureName(RefStrings.MODID + ":gun_darter");
}
//TODO: make generic code for this crap
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SPAS_SECONDARY = (stack, ctx) -> {
EntityPlayer player = ctx.player;
Receiver rec = ctx.config.getReceivers(stack)[0];
int index = ctx.configIndex;
GunState state = ItemGunBaseNT.getState(stack, index);
if(state == GunState.IDLE) {
if(rec.getCanFire(stack).apply(stack, ctx)) {
rec.getOnFire(stack).accept(stack, ctx);
int remaining = rec.getRoundsPerCycle(stack);
int timeFired = 1;
for(int i = 0; i < remaining; i++) {
if(rec.getCanFire(stack).apply(stack, ctx)) {
rec.getOnFire(stack).accept(stack, ctx);
timeFired++;
}
}
if(rec.getFireSound(stack) != null) player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, rec.getFireSound(stack), rec.getFireVolume(stack), rec.getFirePitch(stack) * (timeFired > 1 ? 0.9F : 1F));
ItemGunBaseNT.setState(stack, index, GunState.COOLDOWN);
ItemGunBaseNT.setTimer(stack, index, 10);
} else {
if(rec.getDoesDryFire(stack)) {
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, index);
ItemGunBaseNT.setState(stack, index, GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterDryFire(stack));
}
}
}
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MARESLEG_ANIMS = (stack, type) -> {
switch(type) {
@ -100,6 +165,29 @@ public class XFactory12ga {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MARESLEG_SHORT_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(0, 0, -3, 250, IType.SIN_DOWN));
case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -1, 50).addPos(0, 0, 0, 250))
.addBus("SIGHT", new BusAnimationSequence().addPos(35, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL))
.addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-85, 0, 0, 200).addPos(0, 0, 0, 200))
.addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200))
.addBus("FLIP", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(360, 0, 0, 400));
case CYCLE_DRY: return new BusAnimation()
.addBus("LEVER", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(-90, 0, 0, 200).addPos(0, 0, 0, 200))
.addBus("HAMMER", new BusAnimationSequence().addPos(30, 0, 0, 50).addPos(30, 0, 0, 550).addPos(0, 0, 0, 200))
.addBus("FLIP", new BusAnimationSequence().addPos(0, 0, 0, 600).addPos(360, 0, 0, 400));
case JAMMED: return new BusAnimation()
.addBus("LIFT", new BusAnimationSequence().addPos(30, 0, 0, 0).addPos(30, 0, 0, 250).addPos(0, 0, 0, 400, IType.SIN_FULL))
.addBus("LEVER", new BusAnimationSequence().addPos(-85, 0, 0, 0).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 650).addPos(-85, 0, 0, 200).addPos(-15, 0, 0, 200).addPos(-15, 0, 0, 200).addPos(-85, 0, 0, 200).addPos(0, 0, 0, 200))
.addBus("FLAG", new BusAnimationSequence().addPos(1, 1, 1, 0));
}
return LAMBDA_MARESLEG_ANIMS.apply(stack, type);
};
/** This fucking sucks */
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LIBERATOR_ANIMS = (stack, type) -> {
int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack);
@ -197,4 +285,22 @@ public class XFactory12ga {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_SPAS_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(0, 0, -3, 500, IType.SIN_DOWN));
case CYCLE: return ResourceManager.spas_12_anim.get("Fire");
case CYCLE_DRY: return new BusAnimation();
case RELOAD:
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack) <= 0;
return ResourceManager.spas_12_anim.get(empty ? "ReloadEmptyStart" : "ReloadStart");
case RELOAD_CYCLE: return ResourceManager.spas_12_anim.get("Reload");
case RELOAD_END: return ResourceManager.spas_12_anim.get("ReloadEnd");
case JAMMED: return new BusAnimation();
case INSPECT: return new BusAnimation();
}
return null;
};
}

View File

@ -48,7 +48,7 @@ public class XFactory22lr {
.dmg(5F).delay(1).dry(10).auto(true).spread(0.02F).reload(66).jam(30).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 177).addConfigs(p22_sp, p22_fmj, p22_jhp, p22_ap))
.offset(1, -0.0625 * 1.5, -0.1875D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_AM180_ANIMS).orchestra(Orchestras.ORCHESTRA_AM180)
).setUnlocalizedName("gun_am180").setTextureName(RefStrings.MODID + ":gun_darter");

View File

@ -39,7 +39,7 @@ public class XFactory357 {
.dmg(10F).delay(16).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 6).addConfigs(m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express))
.offset(0.75, -0.0625, -0.3125D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_ATLAS_ANIMS).orchestra(Orchestras.ORCHESTRA_ATLAS)
).setUnlocalizedName("gun_light_revolver").setTextureName(RefStrings.MODID + ":gun_darter");
@ -50,7 +50,7 @@ public class XFactory357 {
.dmg(10F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 6).addConfigs(m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express))
.offset(0.75, -0.0625, 0.3125D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI),
@ -59,7 +59,7 @@ public class XFactory357 {
.dmg(10F).delay(11).reload(55).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(1, 6).addConfigs(m357_sp, m357_fmj, m357_jhp, m357_ap, m357_express))
.offset(0.75, -0.0625, -0.3125D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.ps(Lego.LAMBDA_STANDARD_CLICK_PRIMARY).pr(Lego.LAMBDA_STANDARD_RELOAD)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_DANI_ANIMS).orchestra(Orchestras.ORCHESTRA_DANI)

View File

@ -45,7 +45,7 @@ public class XFactory40mm {
.dmg(15F).delay(20).reload(28).jam(33).sound("hbm:weapon.hkShoot", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 1).addConfigs(g40_flare))
.offset(0.75, -0.0625, -0.1875D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_FLAREGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAREGUN)
).setUnlocalizedName("gun_flaregun").setTextureName(RefStrings.MODID + ":gun_darter");
@ -56,7 +56,7 @@ public class XFactory40mm {
.dmg(30F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 4).addConfigs(g40, g40_flare))
.offset(0.75, -0.0625, -0.1875D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_CONGOLAKE_ANIMS).orchestra(Orchestras.ORCHESTRA_CONGOLAKE)
).setUnlocalizedName("gun_congolake").setTextureName(RefStrings.MODID + ":gun_darter");

View File

@ -48,7 +48,7 @@ public class XFactory44 {
.dmg(12F).delay(20).reload(25, 11, 14, 8).jam(45).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 14).addConfigs(m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express))
.offset(0.75, -0.0625, -0.1875D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_HENRY_ANIMS).orchestra(Orchestras.ORCHESTRA_HENRY)
).setUnlocalizedName("gun_henry").setTextureName(RefStrings.MODID + ":gun_darter");
@ -59,7 +59,7 @@ public class XFactory44 {
.dmg(10F).delay(14).reload(46).jam(23).sound("hbm:weapon.44Shoot", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 6).addConfigs(m44_sp, m44_fmj, m44_jhp, m44_ap, m44_express))
.offset(0.75, -0.0625, -0.3125D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.pp(Lego.LAMBDA_STANDARD_CLICK_PRIMARY) .pr(Lego.LAMBDA_STANDARD_RELOAD) .pt(Lego.LAMBDA_TOGGLE_AIM)
.decider(GunStateDecider.LAMBDA_STANDARD_DECIDER)
.anim(LAMBDA_NOPIP_ANIMS).orchestra(Orchestras.ORCHESTRA_NOPIP)

View File

@ -0,0 +1,110 @@
package com.hbm.items.weapon.sedna.factory;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.BulletConfig;
import com.hbm.items.weapon.sedna.Crosshair;
import com.hbm.items.weapon.sedna.GunConfig;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.lib.RefStrings;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.item.ItemStack;
public class XFactory556mm {
public static BulletConfig r556_sp;
public static BulletConfig r556_fmj;
public static BulletConfig r556_jhp;
public static BulletConfig r556_ap;
public static void init() {
SpentCasing casing556 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(0.8F);
r556_sp = new BulletConfig().setItem(EnumAmmo.R556_SP)
.setCasing(casing556.clone().register("r556"));
r556_fmj = new BulletConfig().setItem(EnumAmmo.R556_FMJ).setDamage(0.8F).setArmorPiercing(0.1F)
.setCasing(casing556.clone().register("r556fmj"));
r556_jhp = new BulletConfig().setItem(EnumAmmo.R556_JHP).setDamage(1.5F).setArmorPiercing(-0.25F)
.setCasing(casing556.clone().register("r556jhp"));
r556_ap = new BulletConfig().setItem(EnumAmmo.R556_AP).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F)
.setCasing(casing556.clone().setColor(SpentCasing.COLOR_CASE_44).register("r556ap"));
ModItems.gun_g3 = new ItemGunBaseNT(new GunConfig()
.dura(3_000).draw(10).inspect(33).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE)
.rec(new Receiver(0)
.dmg(15F).delay(2).auto(true).dry(15).spread(0.0F).reload(50).jam(47).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 30).addConfigs(r556_sp, r556_fmj, r556_jhp, r556_ap))
.offset(1, -0.0625 * 2.5, -0.25D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration().ps(Lego.LAMBDA_STANDARD_CLICK_SECONDARY)
.anim(LAMBDA_G3_ANIMS).orchestra(Orchestras.ORCHESTRA_G3)
).setUnlocalizedName("gun_g3").setTextureName(RefStrings.MODID + ":gun_darter");
}
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
Lego.handleStandardSmoke(ctx.player, stack, 1500, 0.075D, 1.1D, 0);
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_G3_ANIMS = (stack, type) -> {
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack) <= 0;
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL));
case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.5 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL));
case CYCLE_DRY: return new BusAnimation()
.addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100));
case RELOAD:
return new BusAnimation()
.addBus("MAG", new BusAnimationSequence()
.addPos(0, -8, 0, 250, IType.SIN_UP) //250
.addPos(0, -8, 0, 1000) //1250
.addPos(0, 0, 0, 300)) //1550
.addBus("BOLT", new BusAnimationSequence()
.addPos(0, 0, 0, 250) //250
.addPos(0, 0, -3.25, 150) //400
.addPos(0, 0, -3.25, 1250) //1750
.addPos(0, 0, 0, 100)) //1850
.addBus("HANDLE", new BusAnimationSequence()
.addPos(0, 0, 0, 500) //500
.addPos(0, 0, 45, 50) //550
.addPos(0, 0, 45, 1150) //1700
.addPos(0, 0, 0, 50)) //1750
.addBus("LIFT", new BusAnimationSequence()
.addPos(0, 0, 0, 750) //750
.addPos(-25, 0, 0, 500, IType.SIN_FULL) //1250
.addPos(-25, 0, 0, 750) //2000
.addPos(0, 0, 0, 500, IType.SIN_FULL)) //3500
.addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0).addPos(0, 0, 0, 1000));
case INSPECT: return new BusAnimation()
.addBus("MAG", new BusAnimationSequence()
.addPos(0, -1, 0, 150) //150
.addPos(2, -1, 0, 150) //300
.addPos(2, 8, 0, 350, IType.SIN_DOWN) //650
.addPos(2, -2, 0, 350, IType.SIN_UP) //1000
.addPos(2, -1, 0, 50) //1050
.addPos(2, -1, 0, 100) //1150
.addPos(0, -1, 0, 150, IType.SIN_FULL) //1300
.addPos(0, 0, 0, 150, IType.SIN_UP)) //1450
.addBus("SPEEN", new BusAnimationSequence().addPos(0, 0, 0, 300).addPos(0, 360, 360, 700))
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 1450).addPos(-2, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL))
.addBus("BULLET", new BusAnimationSequence().addPos(empty ? 1 : 0, 0, 0, 0));
case JAMMED: return new BusAnimation()
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1250).addPos(0, 0, 0, 350, IType.SIN_FULL))
.addBus("BOLT", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100).addPos(0, 0, 0, 250).addPos(0, 0, -3.25, 150).addPos(0, 0, 0, 100));
}
return null;
};
}

View File

@ -31,17 +31,17 @@ public class XFactory762mm {
public static BulletConfig r762_du;
public static void init() {
SpentCasing casing9 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS);
SpentCasing casing762 = new SpentCasing(CasingType.BOTTLENECK).setColor(SpentCasing.COLOR_CASE_BRASS);
r762_sp = new BulletConfig().setItem(EnumAmmo.R762_SP)
.setCasing(casing9.clone().register("r762"));
.setCasing(casing762.clone().register("r762"));
r762_fmj = new BulletConfig().setItem(EnumAmmo.R762_FMJ).setDamage(0.8F).setArmorPiercing(0.1F)
.setCasing(casing9.clone().register("r762fmj"));
.setCasing(casing762.clone().register("r762fmj"));
r762_jhp = new BulletConfig().setItem(EnumAmmo.R762_JHP).setDamage(1.5F).setArmorPiercing(-0.25F)
.setCasing(casing9.clone().register("r762jhp"));
.setCasing(casing762.clone().register("r762jhp"));
r762_ap = new BulletConfig().setItem(EnumAmmo.R762_AP).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F)
.setCasing(casing9.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762ap"));
.setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762ap"));
r762_du = new BulletConfig().setItem(EnumAmmo.R762_DU).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(2.5F).setArmorPiercing(0.25F)
.setCasing(casing9.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762du"));
.setCasing(casing762.clone().setColor(SpentCasing.COLOR_CASE_44).register("r762du"));
ModItems.gun_carbine = new ItemGunBaseNT(new GunConfig()
.dura(3_000).draw(10).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE)
@ -49,7 +49,7 @@ public class XFactory762mm {
.dmg(5F).delay(5).dry(15).spread(0.0F).reload(30, 0, 15, 0).jam(60).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 14).addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du))
.offset(1, -0.0625 * 2.5, -0.25D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBIBE)
).setUnlocalizedName("gun_carbine").setTextureName(RefStrings.MODID + ":gun_darter");

View File

@ -30,7 +30,7 @@ public class XFactory9mm {
public static BulletConfig p9_ap;
public static void init() {
SpentCasing casing9 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS);
SpentCasing casing9 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(1F, 1F, 0.75F);
p9_sp = new BulletConfig().setItem(EnumAmmo.P9_SP)
.setCasing(casing9.clone().register("p9"));
p9_fmj = new BulletConfig().setItem(EnumAmmo.P9_FMJ).setDamage(0.8F).setArmorPiercing(0.1F)
@ -46,21 +46,32 @@ public class XFactory9mm {
.dmg(5F).delay(4).dry(40).auto(true).spread(0.015F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap))
.offset(1, -0.0625 * 2.5, -0.25D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_GREASEGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_GREASEGUN)
).setUnlocalizedName("gun_greasegun").setTextureName(RefStrings.MODID + ":gun_darter");
ModItems.gun_lag = new ItemGunBaseNT(new GunConfig()
.dura(1_700).draw(15).inspect(31).crosshair(Crosshair.L_CIRCLE).smoke(LAMBDA_SMOKE)
.dura(1_700).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE)
.rec(new Receiver(0)
.dmg(15F).delay(4).dry(40).spread(0.005F).reload(60).jam(55).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 17).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap))
.offset(1, -0.0625 * 2.5, -0.25D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_LAG_ANIMS).orchestra(Orchestras.ORCHESTRA_LAG)
).setUnlocalizedName("gun_lag").setTextureName(RefStrings.MODID + ":gun_darter");
ModItems.gun_uzi = new ItemGunBaseNT(new GunConfig()
.dura(3_000).draw(15).inspect(31).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE)
.rec(new Receiver(0)
.dmg(7.5F).delay(2).dry(25).auto(true).spread(0.005F).reload(55).jam(50).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 30).addConfigs(p9_sp, p9_fmj, p9_jhp, p9_ap))
.offset(1, -0.0625 * 2.5, -0.25D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_UZI_ANIMS).orchestra(Orchestras.ORCHESTRA_UZI)
).setUnlocalizedName("gun_uzi").setTextureName(RefStrings.MODID + ":gun_darter");
}
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_SMOKE = (stack, ctx) -> {
@ -80,7 +91,7 @@ public class XFactory9mm {
.addBus("TURN", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -45, 250, IType.SIN_FULL).addPos(0, 0, -45, 750).addPos(0, 0, 0, 500, IType.SIN_FULL))
.addBus("HANDLE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, 0, 250).addPos(-90, 0, 0, 250, IType.SIN_FULL).addPos(0, 0, 0, 250, IType.SIN_FULL));
case RELOAD:
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmountBeforeReload(stack) <= 0;
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack) <= 0;
return new BusAnimation()
.addBus("MAG", new BusAnimationSequence().addPos(0, -8, 0, 250, IType.SIN_UP).addPos(0, -8, 0, 750).addPos(0, 0, 0, 500, IType.SIN_DOWN))
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1750).addPos(0, 0, 0, 500, IType.SIN_FULL))
@ -102,4 +113,32 @@ public class XFactory9mm {
public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LAG_ANIMS = (stack, type) -> {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_UZI_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(80, 0, 0, 0).addPos(80, 0, 0, 500).addPos(0, 0, 0, 500, IType.SIN_FULL))
.addBus("STOCKBACK", new BusAnimationSequence().addPos(-200, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL))
.addBus("STOCKFRONT", new BusAnimationSequence().addPos(180, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL));
case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, ItemGunBaseNT.getIsAiming(stack) ? -0.5 : -0.75, 25, IType.SIN_DOWN).addPos(0, 0, 0, 75, IType.SIN_FULL));
case CYCLE_DRY: return new BusAnimation()
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 500).addPos(0, 0, 0, 250, IType.SIN_FULL))
.addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP));
case RELOAD:
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack) <= 0;
return new BusAnimation()
.addBus("MAG", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(0, -10, 0, 250, IType.SIN_UP).addPos(0, -10, 0, 750).addPos(0, 0, 0, 500, IType.SIN_DOWN))
.addBus("LIFT", new BusAnimationSequence().addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 2000).addPos(0, 0, 0, 500, IType.SIN_FULL))
.addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 2000).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP))
.addBus("BULLET", new BusAnimationSequence().addPos(empty ? 0 : 1, 0, 0, 0).addPos(empty ? 0 : 1, 0, 0, 500).addPos(1, 0, 0, 0));
case JAMMED: return new BusAnimation()
.addBus("LIFT", new BusAnimationSequence().addPos(0, 0, 0, 500).addPos(-25, 0, 0, 250, IType.SIN_FULL).addPos(-25, 0, 0, 1250).addPos(0, 0, 0, 500, IType.SIN_FULL))
.addBus("SLIDE", new BusAnimationSequence().addPos(0, 0, 0, 1000).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP).addPos(0, 0, 0, 500).addPos(0, 0, -2, 150, IType.SIN_FULL).addPos(0, 0, 0, 50, IType.SIN_UP));
case INSPECT: return new BusAnimation()
.addBus("YEET", new BusAnimationSequence().addPos(0, -1, 0, 100).addPos(0, 0, 0, 100, IType.SIN_UP).addPos(0, 12, 0, 350, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_UP).addPos(0, -1, 0, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL))
.addBus("SPEEN", new BusAnimationSequence().addPos(0, 0, 0, 250).addPos(-360, 0, 0, 600));
}
return null;
};
}

View File

@ -32,7 +32,7 @@ public class XFactoryBlackPowder {
.rec(new Receiver(0)
.dmg(5F).delay(27).reload(67).jam(58).sound("hbm:weapon.fire.blackPowder", 1.0F, 1.0F)
.mag(new MagazineFullReload(0, 6).addConfigs(stone, flint, iron, shot))
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_PEPPERBOX_ANIMS).orchestra(Orchestras.ORCHESTRA_PEPPERBOX)
).setUnlocalizedName("gun_pepperbox").setTextureName(RefStrings.MODID + ":gun_darter");

View File

@ -44,7 +44,7 @@ public class XFactoryFlamer {
.dmg(10F).delay(1).auto(true).reload(90).jam(0)
.mag(new MagazineFullReload(0, 300).addConfigs(flame_diesel))
.offset(0.75, -0.0625, -0.25D)
.canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_STANDARD_FIRE).recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_FLAMER_ANIMS).orchestra(Orchestras.ORCHESTRA_FLAMER)
).setUnlocalizedName("gun_flamer").setTextureName(RefStrings.MODID + ":gun_darter");

View File

@ -0,0 +1,77 @@
package com.hbm.items.weapon.sedna.factory;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import com.hbm.entity.projectile.EntityBulletBaseMK4;
import com.hbm.items.ModItems;
import com.hbm.items.weapon.sedna.BulletConfig;
import com.hbm.items.weapon.sedna.Crosshair;
import com.hbm.items.weapon.sedna.GunConfig;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.lib.RefStrings;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
public class XFactoryRocket {
public static BulletConfig rocket_rpzb_he;
public static BulletConfig rocket_rpzb_heat;
public static Consumer<EntityBulletBaseMK4> LAMBDA_STANDARD_ACCELERATE = (bullet) -> {
if(bullet.accel < 7) bullet.accel += 0.4D;
};
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> {
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
Lego.standardExplode(bullet, mop, 5F); bullet.setDead();
};
public static BiConsumer<EntityBulletBaseMK4, MovingObjectPosition> LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> {
if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return;
Lego.standardExplode(bullet, mop, 3F, 0.25F); bullet.setDead();
};
public static void init() {
rocket_rpzb_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
.setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
rocket_rpzb_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D)
.setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE);
ModItems.gun_panzerschreck = new ItemGunBaseNT(new GunConfig()
.dura(300).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX)
.rec(new Receiver(0)
.dmg(25F).delay(5).reload(50).jam(40).sound("hbm:weapon.rpgShoot", 1.0F, 1.0F)
.mag(new MagazineSingleReload(0, 1).addConfigs(rocket_rpzb_he, rocket_rpzb_heat))
.offset(1, -0.0625 * 1.5, -0.1875D)
.setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL))
.setupStandardConfiguration()
.anim(LAMBDA_PANZERSCHRECK_ANIMS).orchestra(Orchestras.ORCHESTRA_PANERSCHRECK)
).setUnlocalizedName("gun_panzerschreck").setTextureName(RefStrings.MODID + ":gun_darter");
}
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_PANZERSCHRECK_ANIMS = (stack, type) -> {
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack) <= 0;
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));
case RELOAD: return new BusAnimation()
.addBus("RELOAD", new BusAnimationSequence().addPos(90, 0, 0, 750, IType.SIN_FULL).addPos(90, 0, 0, 1000).addPos(0, 0, 0, 750, IType.SIN_FULL))
.addBus("ROCKET", new BusAnimationSequence().addPos(0, -3, -6, 0).addPos(0, -3, -6, 750).addPos(0, 0, -6.5, 500, IType.SIN_DOWN).addPos(0, 0, 0, 350, IType.SIN_UP));
case JAMMED: empty = false;
case INSPECT:
return new BusAnimation()
.addBus("RELOAD", new BusAnimationSequence().addPos(90, 0, 0, 750, IType.SIN_FULL).addPos(90, 0, 0, 500).addPos(0, 0, 0, 750, IType.SIN_FULL))
.addBus("ROCKET", new BusAnimationSequence().addPos(0, empty ? -3 : 0, 0, 0));
}
return null;
};
}

View File

@ -529,7 +529,6 @@ public class ClientProxy extends ServerProxy {
//guns
MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg, new ItemRenderRpg());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_karl, new ItemRenderRpg());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_panzerschreck, new ItemRenderRpg());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_stinger, new ItemRenderStinger());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_skystinger, new ItemRenderStinger());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver, new ItemRenderWeaponFFColt(ResourceManager.ff_gun_bright, ResourceManager.ff_iron, ResourceManager.ff_wood));
@ -567,7 +566,6 @@ public class ClientProxy extends ServerProxy {
MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_saturnite, new ItemRenderWeaponFFBolt(ResourceManager.rem700sat, ResourceManager.rem700sat_tex));
MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_b93, new ItemRenderGunAnim());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi, new ItemRenderUZI());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_silencer, new ItemRenderUZI());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite, new ItemRenderUZI());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uzi_saturnite_silencer, new ItemRenderUZI());
@ -591,7 +589,6 @@ public class ClientProxy extends ServerProxy {
MinecraftForgeClient.registerItemRenderer(ModItems.gun_ar15, new ItemRenderWeaponAR15());
MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_remington, new ItemRenderWeaponRemington());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderWeaponSpas12());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_glass_cannon, new ItemRenderWeaponGlass());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderWeaponChemthrower());
MinecraftForgeClient.registerItemRenderer(ModItems.gun_m2, new ItemRenderM2());

View File

@ -292,7 +292,7 @@ public class CraftingManager {
addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) });
GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }));
GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) }));
GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }));
addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() });
addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table });
addRecipeAuto(new ItemStack(ModBlocks.machine_funnel, 1), new Object[] { "S S", "SRS", " S ", 'S', STEEL.ingot(), 'R', REDSTONE.dust() });

View File

@ -294,13 +294,6 @@ public class MainRegistry {
if(WorldConfig.enableCraterBiomes) BiomeGenCraterBase.initDictionary();
/*Library.superuser.add("192af5d7-ed0f-48d8-bd89-9d41af8524f8");
Library.superuser.add("5aee1e3d-3767-4987-a222-e7ce1fbdf88e");
Library.superuser.add("937c9804-e11f-4ad2-a5b1-42e62ac73077");
Library.superuser.add("3af1c262-61c0-4b12-a4cb-424cc3a9c8c0");
Library.superuser.add("4729b498-a81c-42fd-8acd-20d6d9f759e0");
Library.superuser.add("c3f5e449-6d8c-4fe3-acc9-47ef50e7e7ae");*/
aMatSchrab.customCraftingMaterial = ModItems.ingot_schrabidium;
aMatHaz.customCraftingMaterial = ModItems.hazmat_cloth;
aMatHaz2.customCraftingMaterial = ModItems.hazmat_cloth_red;
@ -1437,6 +1430,8 @@ public class MainRegistry {
ignoreMappings.add("hbm:item.flame_8");
ignoreMappings.add("hbm:item.flame_9");
ignoreMappings.add("hbm:item.flame_10");
ignoreMappings.add("hbm:tile.dummy_block_uf6");
ignoreMappings.add("hbm:tile.dummy_block_puf6");
/// REMAP ///
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);

View File

@ -134,7 +134,8 @@ public class ModEventHandlerRenderer {
if(akimbo) {
ModelBiped biped = renderer.modelBipedMain;
biped.bipedLeftArm.rotateAngleY = 0.1F + biped.bipedHead.rotateAngleY;
renderer.modelArmorChestplate.bipedLeftArm.rotateAngleY = renderer.modelArmor.bipedLeftArm.rotateAngleY = biped.bipedLeftArm.rotateAngleY =
0.1F + biped.bipedHead.rotateAngleY;
if(!isManly) {
AbstractClientPlayer acp = (AbstractClientPlayer) player;
Minecraft.getMinecraft().getTextureManager().bindTexture(acp.getLocationSkin());
@ -180,11 +181,22 @@ public class ModEventHandlerRenderer {
EntityPlayer player = event.entityPlayer;
RenderPlayer renderer = event.renderer;
ItemStack held = player.getHeldItem();
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) {
if(held != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) {
renderer.modelBipedMain.aimedBow = true;
renderer.modelArmor.aimedBow = true;
renderer.modelArmorChestplate.aimedBow = true;
//technically not necessary but it probably fixes some issues with mods that implement their armor weirdly
IItemRenderer customRenderer = MinecraftForgeClient.getItemRenderer(held, IItemRenderer.ItemRenderType.EQUIPPED);
if(customRenderer instanceof ItemRenderWeaponBase) {
ItemRenderWeaponBase renderGun = (ItemRenderWeaponBase) customRenderer;
if(renderGun.isAkimbo()) {
ModelBiped biped = renderer.modelBipedMain;
renderer.modelArmorChestplate.bipedLeftArm.rotateAngleY = renderer.modelArmor.bipedLeftArm.rotateAngleY = biped.bipedLeftArm.rotateAngleY = 0.1F + biped.bipedHead.rotateAngleY;
}
}
}
}

View File

@ -62,8 +62,6 @@ public class NEIConfig implements IConfigureNEI {
}
API.hideItem(new ItemStack(ModBlocks.dummy_block_vault));
API.hideItem(new ItemStack(ModBlocks.dummy_block_blast));
API.hideItem(new ItemStack(ModBlocks.dummy_block_uf6));
API.hideItem(new ItemStack(ModBlocks.dummy_block_puf6));
API.hideItem(new ItemStack(ModBlocks.dummy_port_compact_launcher));
API.hideItem(new ItemStack(ModBlocks.dummy_port_launch_table));
API.hideItem(new ItemStack(ModBlocks.dummy_plate_compact_launcher));

View File

@ -860,6 +860,9 @@ public class ResourceManager {
public static final IModelCustom liberator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/liberator.obj")).asVBO();
public static final IModelCustom flamethrower = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/flamethrower.obj")).asVBO();
public static final IModelCustom mike_hawk = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mike_hawk.obj")).asVBO();
public static final IModelCustom uzi = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/uzi.obj")).asVBO();
public static final IModelCustom panzerschreck = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/panzerschreck.obj")).asVBO();
public static final IModelCustom g3 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/g3.obj")).asVBO();
public static final HashMap<String, BusAnimation> python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json"));
public static final HashMap<String, BusAnimation> cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json"));
@ -985,6 +988,9 @@ public class ResourceManager {
public static final ResourceLocation liberator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/liberator.png");
public static final ResourceLocation flamethrower_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/flamethrower.png");
public static final ResourceLocation mike_hawk_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lag.png");
public static final ResourceLocation uzi_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/uzi.png");
public static final ResourceLocation panzerschreck_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/panzerschreck.png");
public static final ResourceLocation g3_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/g3.png");
public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png");

View File

@ -5,6 +5,7 @@ import java.util.Iterator;
import java.util.List;
import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard;
import com.hbm.interfaces.NotableComments;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
@ -20,6 +21,7 @@ import net.minecraft.world.ChunkPosition;
* @author hbm
*
*/
@NotableComments
public class ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket implements IMessage {
private double posX;

View File

@ -7,17 +7,21 @@ import com.hbm.particle.ParticleExplosionSmall;
import cpw.mods.fml.relauncher.ReflectionHelper;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.particle.EntityBlockDustFX;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class ExplosionSmallCreator implements IParticleCreator {
public static final double speedOfSound = (17.15D) * 0.5;
public static void composeEffect(World world, double x, double y, double z, int cloudCount, float cloudScale, float cloudSpeedMult) {
NBTTagCompound data = new NBTTagCompound();
@ -26,7 +30,7 @@ public class ExplosionSmallCreator implements IParticleCreator {
data.setFloat("cloudScale", cloudScale);
data.setFloat("cloudSpeedMult", cloudSpeedMult);
data.setInteger("debris", 15);
IParticleCreator.sendPacket(world, x, y, z, 150, data);
IParticleCreator.sendPacket(world, x, y, z, 200, data);
}
@Override
@ -37,6 +41,15 @@ public class ExplosionSmallCreator implements IParticleCreator {
float cloudSpeedMult = data.getFloat("cloudSpeedMult");
int debris = data.getInteger("debris");
float dist = (float) player.getDistance(x, y, z);
float soundRange = 200F;
if(dist <= soundRange) {
String sound = dist <= soundRange * 0.4 ? "hbm:weapon.explosionSmallNear" : "hbm:weapon.explosionSmallFar";
PositionedSoundRecord positionedsoundrecord = new PositionedSoundRecord(new ResourceLocation(sound), 100F, 0.9F + rand.nextFloat() * 0.2F, (float) x, (float) y, (float) z);
Minecraft.getMinecraft().getSoundHandler().playDelayedSound(positionedsoundrecord, (int) (dist / speedOfSound));
}
for(int i = 0; i < cloudCount; i++) {
ParticleExplosionSmall particle = new ParticleExplosionSmall(world, x, y, z, cloudScale, cloudSpeedMult);
Minecraft.getMinecraft().effectRenderer.addEffect(particle);

View File

@ -5,7 +5,6 @@ import org.lwjgl.opengl.GL11;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import com.hbm.render.model.ModelGustav;
import com.hbm.render.model.ModelPanzerschreck;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
@ -15,11 +14,9 @@ import net.minecraftforge.client.IItemRenderer;
public class ItemRenderRpg implements IItemRenderer {
protected ModelGustav swordModel;
protected ModelPanzerschreck panz;
public ItemRenderRpg() {
swordModel = new ModelGustav();
panz = new ModelPanzerschreck();
}
@Override
@ -47,8 +44,6 @@ public class ItemRenderRpg implements IItemRenderer {
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustav.png"));
if(item.getItem() == ModItems.gun_karl)
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustavYellow.png"));
if(item.getItem() == ModItems.gun_panzerschreck)
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPanzerschreck.png"));
GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F);
GL11.glScalef(0.5F, 0.5F, 0.5F);
@ -73,8 +68,6 @@ public class ItemRenderRpg implements IItemRenderer {
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
if(item.getItem() == ModItems.gun_karl)
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
if(item.getItem() == ModItems.gun_panzerschreck)
panz.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
break;
case EQUIPPED:
@ -84,8 +77,6 @@ public class ItemRenderRpg implements IItemRenderer {
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustav.png"));
if(item.getItem() == ModItems.gun_karl)
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelGustavYellow.png"));
if(item.getItem() == ModItems.gun_panzerschreck)
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPanzerschreck.png"));
GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F);
GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F);
@ -103,8 +94,6 @@ public class ItemRenderRpg implements IItemRenderer {
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
if(item.getItem() == ModItems.gun_karl)
swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
if(item.getItem() == ModItems.gun_panzerschreck)
panz.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
GL11.glPopMatrix();
default: break;
}

View File

@ -0,0 +1,146 @@
package com.hbm.render.item.weapon.sedna;
import org.lwjgl.opengl.GL11;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
public class ItemRenderG3 extends ItemRenderWeaponBase {
@Override
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; }
@Override
public void setupFirstPerson(ItemStack stack) {
GL11.glTranslated(0, 0, 0.875);
float offset = 0.8F;
standardAimingTransform(stack,
-1.25F * offset, -1F * offset, 2.75F * offset,
0, -3.625 / 8D, 1.75);
}
@Override
public void renderFirstPerson(ItemStack stack) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.g3_tex);
double scale = 0.375D;
GL11.glScaled(scale, scale, scale);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
double[] lift = HbmAnimations.getRelevantTransformation("LIFT");
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
double[] mag = HbmAnimations.getRelevantTransformation("MAG");
double[] speen = HbmAnimations.getRelevantTransformation("SPEEN");
double[] bolt = HbmAnimations.getRelevantTransformation("BOLT");
double[] handle = HbmAnimations.getRelevantTransformation("HANDLE");
double[] bullet = HbmAnimations.getRelevantTransformation("BULLET");
GL11.glTranslated(0, -2, -6);
GL11.glRotated(equip[0], 1, 0, 0);
GL11.glTranslated(0, 2, 6);
GL11.glTranslated(0, 0, -4);
GL11.glRotated(lift[0], 1, 0, 0);
GL11.glTranslated(0, 0, 4);
GL11.glTranslated(0, 0, recoil[2]);
GL11.glShadeModel(GL11.GL_SMOOTH);
ResourceManager.g3.renderPart("Rifle");
ResourceManager.g3.renderPart("Stock");
ResourceManager.g3.renderPart("FlashHider");
GL11.glPushMatrix();
GL11.glTranslated(mag[0], mag[1], mag[2]);
GL11.glTranslated(0, -1.75, -0.5);
GL11.glRotated(speen[2], 0, 0, 1);
GL11.glRotated(speen[1], 0, 1, 0);
GL11.glTranslated(0, 1.75, 0.5);
ResourceManager.g3.renderPart("Magazine");
if(bullet[0] != 1) ResourceManager.g3.renderPart("Bullet");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0, 0, bolt[2]);
ResourceManager.g3.renderPart("Bolt");
GL11.glTranslated(0, 0.625, 0);
GL11.glRotated(handle[2], 0, 0, 1);
GL11.glTranslated(0, -0.625, 0);
ResourceManager.g3.renderPart("Handle");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0, -0.875, -3.5);
GL11.glRotated(-30 * (1 - ItemGunBaseNT.getMode(stack, 0)), 1, 0, 0);
GL11.glTranslated(0, 0.875, 3.5);
ResourceManager.g3.renderPart("Selector");
GL11.glPopMatrix();
double smokeScale = 0.75;
GL11.glPushMatrix();
GL11.glTranslated(0, 0, 13);
GL11.glRotated(90, 0, 1, 0);
GL11.glScaled(smokeScale, smokeScale, smokeScale);
this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.5D);
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix();
GL11.glTranslated(0, 0, 12);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(-25 + gun.shotRand * 10, 1, 0, 0);
GL11.glScaled(0.75, 0.75, 0.75);
this.renderMuzzleFlash(gun.lastShot[0], 75, 10);
GL11.glPopMatrix();
}
@Override
public void setupThirdPerson(ItemStack stack) {
super.setupThirdPerson(stack);
double scale = 1D;
GL11.glScaled(scale, scale, scale);
GL11.glTranslated(0, 2, 4);
}
@Override
public void setupInv(ItemStack stack) {
super.setupInv(stack);
double scale = 0.875D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glTranslated(-0.5, 0.5, 0);
}
@Override
public void renderOther(ItemStack stack, ItemRenderType type) {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.g3_tex);
ResourceManager.g3.renderPart("Rifle");
ResourceManager.g3.renderPart("Stock");
ResourceManager.g3.renderPart("Magazine");
ResourceManager.g3.renderPart("FlashHider");
ResourceManager.g3.renderPart("Bolt");
ResourceManager.g3.renderPart("Handle");
GL11.glPushMatrix();
GL11.glTranslated(0, -0.875, -3.5);
GL11.glRotated(-30, 1, 0, 0);
GL11.glTranslated(0, 0.875, 3.5);
ResourceManager.g3.renderPart("Selector");
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
}
}

View File

@ -0,0 +1,178 @@
package com.hbm.render.item.weapon.sedna;
import org.lwjgl.opengl.GL11;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
public class ItemRenderMareslegAkimbo extends ItemRenderWeaponBase {
@Override public boolean isAkimbo() { return true; }
@Override
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; }
@Override
public void setupFirstPerson(ItemStack stack) {
GL11.glTranslated(0, 0, 0.875);
}
@Override
public void renderFirstPerson(ItemStack stack) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
float offset = 0.8F;
for(int i = -1; i <= 1; i += 2) {
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.maresleg_tex);
GL11.glPushMatrix();
int index = i == -1 ? 0 : 1;
standardAimingTransform(stack, -1.5F * offset * i, -1F * offset, 2F * offset, 0, -3.875 / 8D, 1);
double scale = 0.375D;
GL11.glScaled(scale, scale, scale);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP", index);
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL", index);
double[] lever = HbmAnimations.getRelevantTransformation("LEVER", index);
double[] turn = HbmAnimations.getRelevantTransformation("TURN", index);
double[] flip = HbmAnimations.getRelevantTransformation("FLIP", index);
double[] lift = HbmAnimations.getRelevantTransformation("LIFT", index);
double[] shell = HbmAnimations.getRelevantTransformation("SHELL", index);
double[] flag = HbmAnimations.getRelevantTransformation("FLAG", index);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glTranslated(recoil[0] * 2, recoil[1], recoil[2]);
GL11.glRotated(recoil[2] * 5, 1, 0, 0);
GL11.glRotated(turn[2], 0, 0, 1);
GL11.glTranslated(0, 0, -4);
GL11.glRotated(lift[0], 1, 0, 0);
GL11.glTranslated(0, 0, 4);
GL11.glTranslated(0, 0, -4);
GL11.glRotated(equip[0], -1, 0, 0);
GL11.glTranslated(0, 0, 4);
GL11.glTranslated(0, 0, -2);
GL11.glRotated(flip[0], -1, 0, 0);
GL11.glTranslated(0, 0, 2);
GL11.glPushMatrix();
GL11.glTranslated(0, 1, 3.75);
GL11.glRotated(turn[2], 0, 0, -1);
GL11.glRotated(flip[0], 1, 0, 0);
GL11.glRotated(90, 0, 1, 0);
this.renderSmokeNodes(gun.getConfig(stack, index).smokeNodes, 0.25D);
GL11.glPopMatrix();
ResourceManager.maresleg.renderPart("Gun");
GL11.glPushMatrix();
GL11.glTranslated(0, 0.125, -2.875);
GL11.glRotated(lever[0], 1, 0, 0);
GL11.glTranslated(0, -0.125, 2.875);
ResourceManager.maresleg.renderPart("Lever");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(shell[0], shell[1] - 0.75, shell[2]);
ResourceManager.maresleg.renderPart("Shell");
GL11.glPopMatrix();
if(flag[0] != 0) {
GL11.glPushMatrix();
GL11.glTranslated(0, -0.5, 0);
ResourceManager.maresleg.renderPart("Shell");
GL11.glPopMatrix();
}
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix();
GL11.glTranslated(0, 1, 3.75);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
this.renderMuzzleFlash(gun.lastShot[index], 75, 5);
GL11.glPopMatrix();
GL11.glPopMatrix();
}
}
@Override
public void setupThirdPerson(ItemStack stack) {
super.setupThirdPerson(stack);
double scale = 1.75D;
GL11.glScaled(scale, scale, scale);
GL11.glTranslated(0, 0.25, 3);
}
@Override
public void setupThirdPersonAkimbo(ItemStack stack) {
super.setupThirdPersonAkimbo(stack);
double scale = 1.75D;
GL11.glScaled(scale, scale, scale);
GL11.glTranslated(0, 0.25, 3);
}
@Override
public void setupInv(ItemStack stack) {
GL11.glScaled(1, 1, -1);
GL11.glTranslated(8, 8, 0);
double scale = 2.5D;
GL11.glScaled(scale, scale, scale);
}
@Override
public void renderInv(ItemStack stack) {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.maresleg_tex);
GL11.glPushMatrix();
GL11.glRotated(225, 0, 0, 1);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glTranslated(-1, 0, 0);
ResourceManager.maresleg.renderPart("Gun");
ResourceManager.maresleg.renderPart("Lever");
GL11.glPopMatrix();
GL11.glTranslated(0, 0, 5);
GL11.glPushMatrix();
GL11.glRotated(225, 0, 0, 1);
GL11.glRotated(-90, 0, 1, 0);
GL11.glRotated(-90, 1, 0, 0);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(-45, 0, 1, 0);
GL11.glTranslated(1, 0, 0);
ResourceManager.maresleg.renderPart("Gun");
ResourceManager.maresleg.renderPart("Lever");
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
}
@Override
public void renderOther(ItemStack stack, ItemRenderType type) {
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.maresleg_tex);
ResourceManager.maresleg.renderPart("Gun");
ResourceManager.maresleg.renderPart("Lever");
GL11.glShadeModel(GL11.GL_FLAT);
}
}

View File

@ -0,0 +1,97 @@
package com.hbm.render.item.weapon.sedna;
import org.lwjgl.opengl.GL11;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
public class ItemRenderPanzerschreck extends ItemRenderWeaponBase {
@Override
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; }
@Override
public void setupFirstPerson(ItemStack stack) {
GL11.glTranslated(0, 0, 0.875);
float offset = 0.8F;
standardAimingTransform(stack,
-2.75F * offset, -2F * offset, 2.5F * offset,
-0.9375, -9.25 / 8D, 0.25);
}
@Override
public void renderFirstPerson(ItemStack stack) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.panzerschreck_tex);
double scale = 1.25D;
GL11.glScaled(scale, scale, scale);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
double[] reload = HbmAnimations.getRelevantTransformation("RELOAD");
double[] rocket = HbmAnimations.getRelevantTransformation("ROCKET");
GL11.glTranslated(0, -1, -1);
GL11.glRotated(equip[0], 1, 0, 0);
GL11.glTranslated(0, 1, 1);
GL11.glTranslated(0, -4, -3);
GL11.glRotated(reload[0], 1, 0, 0);
GL11.glTranslated(0, 4, 3);
GL11.glShadeModel(GL11.GL_SMOOTH);
ResourceManager.panzerschreck.renderPart("Tube");
ResourceManager.panzerschreck.renderPart("Shield");
GL11.glPushMatrix();
GL11.glTranslated(rocket[0], rocket[1], rocket[2]);
ResourceManager.panzerschreck.renderPart("Rocket");
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix();
GL11.glTranslated(0, 0, 6.5);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
GL11.glScaled(0.75, 0.75, 0.75);
this.renderMuzzleFlash(gun.lastShot[0], 150, 7.5);
GL11.glPopMatrix();
}
@Override
public void setupThirdPerson(ItemStack stack) {
super.setupThirdPerson(stack);
double scale = 3D;
GL11.glScaled(scale, scale, scale);
GL11.glTranslated(0, 0.5, 1);
}
@Override
public void setupInv(ItemStack stack) {
super.setupInv(stack);
double scale = 1.5D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glTranslated(-0.5, 0.5, 0);
}
@Override
public void renderOther(ItemStack stack, ItemRenderType type) {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.panzerschreck_tex);
ResourceManager.panzerschreck.renderPart("Tube");
ResourceManager.panzerschreck.renderPart("Shield");
GL11.glShadeModel(GL11.GL_FLAT);
}
}

View File

@ -0,0 +1,129 @@
package com.hbm.render.item.weapon.sedna;
import java.awt.Color;
import org.lwjgl.opengl.GL11;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
public class ItemRenderSPAS12 extends ItemRenderWeaponBase {
@Override
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; }
@Override
public void setupFirstPerson(ItemStack stack) {
GL11.glTranslated(0, 0, 0.875);
float offset = 0.8F;
standardAimingTransform(stack,
-1.25F * offset, -1.75F * offset, -0.5F * offset,
0, 0, 0);
}
@Override
public void renderFirstPerson(ItemStack stack) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.spas_12_tex);
double scale = 0.5D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(180, 0, 1, 0);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
GL11.glRotated(equip[0], 1, 0, 0);
GL11.glShadeModel(GL11.GL_SMOOTH);
HbmAnimations.applyRelevantTransformation("MainBody");
ResourceManager.spas_12.renderPart("MainBody");
GL11.glPushMatrix();
HbmAnimations.applyRelevantTransformation("PumpGrip");
ResourceManager.spas_12.renderPart("PumpGrip");
GL11.glPopMatrix();
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex);
HbmAnimations.applyRelevantTransformation("Shell");
SpentCasing casing = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getCasing(stack);
int color0 = SpentCasing.COLOR_CASE_BRASS;
int color1 = SpentCasing.COLOR_CASE_BRASS;
if(casing != null) {
int[] colors = casing.getColors();
color0 = colors[0];
color1 = colors[colors.length > 1 ? 1 : 0];
}
Color shellColor = new Color(color1);
GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F);
ResourceManager.spas_12.renderPart("Shell");
Color shellForeColor = new Color(color0);
GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F);
ResourceManager.spas_12.renderPart("ShellFore");
GL11.glColor3f(1F, 1F, 1F);
double smokeScale = 0.25;
GL11.glPushMatrix();
GL11.glTranslated(0, 1.5, -11);
GL11.glRotated(-90, 0, 1, 0);
GL11.glScaled(smokeScale, smokeScale, smokeScale);
this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.75D);
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix();
GL11.glTranslated(0, 1.5, -11);
GL11.glRotated(-90, 0, 1, 0);
GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5);
GL11.glPopMatrix();
GL11.glPopMatrix();
}
@Override
public void setupThirdPerson(ItemStack stack) {
super.setupThirdPerson(stack);
double scale = 1.75D;
GL11.glScaled(scale, scale, scale);
GL11.glTranslated(0, -0.75, 0);
}
@Override
public void setupInv(ItemStack stack) {
super.setupInv(stack);
double scale = 2D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glTranslated(4.25, -0.5, 0);
}
@Override
public void renderOther(ItemStack stack, ItemRenderType type) {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glRotated(180, 0, 1, 0);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.spas_12_tex);
ResourceManager.spas_12.renderPart("MainBody");
ResourceManager.spas_12.renderPart("PumpGrip");
GL11.glShadeModel(GL11.GL_FLAT);
}
}

View File

@ -0,0 +1,134 @@
package com.hbm.render.item.weapon.sedna;
import org.lwjgl.opengl.GL11;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.main.ResourceManager;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
public class ItemRenderUzi extends ItemRenderWeaponBase {
@Override
protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; }
@Override
public void setupFirstPerson(ItemStack stack) {
GL11.glTranslated(0, 0, 0.875);
float offset = 0.8F;
standardAimingTransform(stack,
-1.75F * offset, -1.5F * offset, 2.5F * offset,
0, -4.375 / 8D, 1);
}
@Override
public void renderFirstPerson(ItemStack stack) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex);
double scale = 0.25D;
GL11.glScaled(scale, scale, scale);
double[] equip = HbmAnimations.getRelevantTransformation("EQUIP");
double[] stockFront = HbmAnimations.getRelevantTransformation("STOCKFRONT");
double[] stockBack = HbmAnimations.getRelevantTransformation("STOCKBACK");
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
double[] lift = HbmAnimations.getRelevantTransformation("LIFT");
double[] mag = HbmAnimations.getRelevantTransformation("MAG");
double[] bullet = HbmAnimations.getRelevantTransformation("BULLET");
double[] slide = HbmAnimations.getRelevantTransformation("SLIDE");
double[] yeet = HbmAnimations.getRelevantTransformation("YEET");
double[] speen = HbmAnimations.getRelevantTransformation("SPEEN");
GL11.glTranslated(yeet[0], yeet[1], yeet[2]);
GL11.glRotated(speen[0], 0, 0, 1);
GL11.glTranslated(0, -2, -4);
GL11.glRotated(equip[0], 1, 0, 0);
GL11.glTranslated(0, 2, 4);
GL11.glTranslated(0, 0, -6);
GL11.glRotated(lift[0], 1, 0, 0);
GL11.glTranslated(0, 0, 6);
GL11.glTranslated(0, 0, recoil[2]);
GL11.glShadeModel(GL11.GL_SMOOTH);
ResourceManager.uzi.renderPart("Gun");
GL11.glPushMatrix();
GL11.glTranslated(0, 0.3125D, -5.75);
GL11.glRotated(180 - stockFront[0], 1, 0, 0);
GL11.glTranslated(0, -0.3125D, 5.75);
ResourceManager.uzi.renderPart("StockFront");
GL11.glTranslated(0, -0.3125D, -3);
GL11.glRotated(-200 - stockBack[0], 1, 0, 0);
GL11.glTranslated(0, 0.3125D, 3);
ResourceManager.uzi.renderPart("StockBack");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(0, 0, slide[2]);
ResourceManager.uzi.renderPart("Slide");
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(mag[0], mag[1], mag[2]);
ResourceManager.uzi.renderPart("Magazine");
if(bullet[0] == 1) ResourceManager.uzi.renderPart("Bullet");
GL11.glPopMatrix();
double smokeScale = 0.5;
GL11.glPushMatrix();
GL11.glTranslated(0, 0.75, 8.5);
GL11.glRotated(90, 0, 1, 0);
GL11.glScaled(smokeScale, smokeScale, smokeScale);
this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 0.75D);
GL11.glPopMatrix();
GL11.glShadeModel(GL11.GL_FLAT);
GL11.glPushMatrix();
GL11.glTranslated(0, 0.75, 8.5);
GL11.glRotated(90, 0, 1, 0);
GL11.glRotated(90 * gun.shotRand, 1, 0, 0);
this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5);
GL11.glPopMatrix();
}
@Override
public void setupThirdPerson(ItemStack stack) {
super.setupThirdPerson(stack);
GL11.glTranslated(0, 1, 1);
}
@Override
public void setupInv(ItemStack stack) {
super.setupInv(stack);
double scale = 1.5D;
GL11.glScaled(scale, scale, scale);
GL11.glRotated(25, 1, 0, 0);
GL11.glRotated(45, 0, 1, 0);
GL11.glTranslated(0, 1, 0);
}
@Override
public void renderOther(ItemStack stack, ItemRenderType type) {
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glShadeModel(GL11.GL_SMOOTH);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.uzi_tex);
ResourceManager.uzi.renderPart("Gun");
ResourceManager.uzi.renderPart("StockBack");
ResourceManager.uzi.renderPart("StockFront");
ResourceManager.uzi.renderPart("Slide");
ResourceManager.uzi.renderPart("Magazine");
GL11.glShadeModel(GL11.GL_FLAT);
}
}

View File

@ -113,7 +113,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer {
return fov;
}
protected float getSwayMagnitude(ItemStack stack) { return 0.5F; }
protected float getSwayMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 0.1F : 0.5F; }
protected float getSwayPeriod(ItemStack stack) { return 0.75F; }
protected float getTurnMagnitude(ItemStack stack) { return 2.75F; }

View File

@ -5,6 +5,8 @@ import com.hbm.render.loader.ModelRendererObj;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
@ -164,6 +166,15 @@ public class ModelArmorBase extends ModelBiped {
rightArm.rotateAngleX += MathHelper.sin(idleCycle * 0.067F) * 0.05F;
leftArm.rotateAngleX -= MathHelper.sin(idleCycle * 0.067F) * 0.05F;
}
if(entity instanceof EntityPlayer) {
Object o = RenderManager.instance.entityRenderMap.get(EntityPlayer.class);
if(o instanceof RenderPlayer) {
RenderPlayer render = (RenderPlayer) o;
leftArm.copyRotationFrom(render.modelBipedMain.bipedLeftArm);
rightArm.copyRotationFrom(render.modelBipedMain.bipedRightArm);
}
}
}
protected void bindTexture(ResourceLocation loc) {

View File

@ -1,187 +0,0 @@
// Date: 20.02.2019 22:40:59
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
package com.hbm.render.model;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelPanzerschreck extends ModelBase {
// fields
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Shape5;
ModelRenderer Shape6;
ModelRenderer Shape7;
ModelRenderer Shape8;
ModelRenderer Shape9;
ModelRenderer Shape10;
ModelRenderer Shape11;
ModelRenderer Shape12;
ModelRenderer Shape13;
ModelRenderer Shape14;
ModelRenderer Shape15;
ModelRenderer Shape16;
ModelRenderer Shape17;
ModelRenderer Shape18;
public ModelPanzerschreck() {
textureWidth = 128;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 0);
Shape1.addBox(0F, 0F, 0F, 40, 2, 3);
Shape1.setRotationPoint(-20F, 0F, -1.5F);
Shape1.setTextureSize(128, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 0, 5);
Shape2.addBox(0F, 0F, 0F, 40, 3, 2);
Shape2.setRotationPoint(-20F, -0.5F, -1F);
Shape2.setTextureSize(128, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
Shape3 = new ModelRenderer(this, 0, 10);
Shape3.addBox(0F, 0F, 0F, 2, 3, 1);
Shape3.setRotationPoint(-7.5F, 2.5F, -0.5F);
Shape3.setTextureSize(128, 32);
Shape3.mirror = true;
setRotation(Shape3, 0F, 0F, 0F);
Shape4 = new ModelRenderer(this, 6, 10);
Shape4.addBox(0F, 0F, 0F, 6, 1, 1);
Shape4.setRotationPoint(-7.5F, 5.5F, -0.5F);
Shape4.setTextureSize(128, 32);
Shape4.mirror = true;
setRotation(Shape4, 0F, 0F, 0F);
Shape5 = new ModelRenderer(this, 0, 14);
Shape5.addBox(0F, 0F, 0F, 2, 3, 1);
Shape5.setRotationPoint(-1.5F, 2.5F, -0.5F);
Shape5.setTextureSize(128, 32);
Shape5.mirror = true;
setRotation(Shape5, 0F, 0F, 0F);
Shape6 = new ModelRenderer(this, 6, 12);
Shape6.addBox(0F, 0F, 0F, 1, 3, 1);
Shape6.setRotationPoint(0.5F, 2.5F, -0.5F);
Shape6.setTextureSize(128, 32);
Shape6.mirror = true;
setRotation(Shape6, 0F, 0F, 0F);
Shape7 = new ModelRenderer(this, 10, 12);
Shape7.addBox(-1F, 0F, 0F, 1, 2, 1);
Shape7.setRotationPoint(-2F, 2.5F, -0.5F);
Shape7.setTextureSize(128, 32);
Shape7.mirror = true;
setRotation(Shape7, 0F, 0F, 0.3490659F);
Shape8 = new ModelRenderer(this, 0, 18);
Shape8.addBox(0F, 0F, 0F, 1, 4, 4);
Shape8.setRotationPoint(22F, -1F, -2F);
Shape8.setTextureSize(128, 32);
Shape8.mirror = true;
setRotation(Shape8, 0F, 0F, 0F);
Shape9 = new ModelRenderer(this, 20, 10);
Shape9.addBox(-3F, 0F, 0F, 3, 1, 1);
Shape9.setRotationPoint(22F, -1F, -0.5F);
Shape9.setTextureSize(128, 32);
Shape9.mirror = true;
setRotation(Shape9, 0F, 0F, -0.2617994F);
Shape10 = new ModelRenderer(this, 14, 12);
Shape10.addBox(-3F, 0F, 0F, 3, 1, 1);
Shape10.setRotationPoint(22F, 0.5F, -2F);
Shape10.setTextureSize(128, 32);
Shape10.mirror = true;
setRotation(Shape10, 0F, 0.2617994F, 0F);
Shape11 = new ModelRenderer(this, 14, 14);
Shape11.addBox(-3F, 0F, -1F, 3, 1, 1);
Shape11.setRotationPoint(22F, 0.5F, 2F);
Shape11.setTextureSize(128, 32);
Shape11.mirror = true;
setRotation(Shape11, 0F, -0.2617994F, 0F);
Shape12 = new ModelRenderer(this, 28, 10);
Shape12.addBox(-3F, -1F, 0F, 3, 1, 1);
Shape12.setRotationPoint(22F, 3F, -0.5F);
Shape12.setTextureSize(128, 32);
Shape12.mirror = true;
setRotation(Shape12, 0F, 0F, 0.2617994F);
Shape13 = new ModelRenderer(this, 22, 12);
Shape13.addBox(0F, 0F, 0F, 1, 1, 3);
Shape13.setRotationPoint(-20F, -1.5F, -1.5F);
Shape13.setTextureSize(128, 32);
Shape13.mirror = true;
setRotation(Shape13, 0F, 0F, 0F);
Shape14 = new ModelRenderer(this, 30, 12);
Shape14.addBox(0F, 0F, 0F, 1, 1, 3);
Shape14.setRotationPoint(-20F, -2.5F, -1.5F);
Shape14.setTextureSize(128, 32);
Shape14.mirror = true;
setRotation(Shape14, 0F, 0F, 0F);
Shape15 = new ModelRenderer(this, 36, 10);
Shape15.addBox(0F, 0F, 0F, 3, 1, 1);
Shape15.setRotationPoint(15F, -1F, -2F);
Shape15.setTextureSize(128, 32);
Shape15.mirror = true;
setRotation(Shape15, 0F, 0F, 0F);
Shape16 = new ModelRenderer(this, 108, 10);
Shape16.addBox(0F, 0F, 0F, 0, 12, 10);
Shape16.setRotationPoint(-10F, -5F, -8.5F);
Shape16.setTextureSize(128, 32);
Shape16.mirror = true;
setRotation(Shape16, 0F, 0F, 0F);
Shape17 = new ModelRenderer(this, 38, 12);
Shape17.addBox(0F, 0F, 0F, 1, 3, 1);
Shape17.setRotationPoint(3.5F, 2.5F, -0.5F);
Shape17.setTextureSize(128, 32);
Shape17.mirror = true;
setRotation(Shape17, 0F, 0F, -0.4363323F);
Shape18 = new ModelRenderer(this, 10, 15);
Shape18.addBox(0F, 0F, 0F, 1, 3, 1);
Shape18.setRotationPoint(5F, 2.5F, -0.5F);
Shape18.setTextureSize(128, 32);
Shape18.mirror = true;
setRotation(Shape18, 0F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) {
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
GL11.glDisable(GL11.GL_CULL_FACE);
Shape1.render(f5);
Shape2.render(f5);
Shape3.render(f5);
Shape4.render(f5);
Shape5.render(f5);
Shape6.render(f5);
Shape7.render(f5);
Shape8.render(f5);
Shape9.render(f5);
Shape10.render(f5);
Shape11.render(f5);
Shape12.render(f5);
Shape13.render(f5);
Shape14.render(f5);
Shape15.render(f5);
GL11.glEnable(GL11.GL_CULL_FACE);
Shape16.render(f5);
GL11.glDisable(GL11.GL_CULL_FACE);
Shape17.render(f5);
Shape18.render(f5);
GL11.glEnable(GL11.GL_CULL_FACE);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}

View File

@ -1,133 +0,0 @@
// Date: 20.07.2015 22:06:51
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
package com.hbm.render.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelRPG extends ModelBase
{
//fields
ModelRenderer Shape1;
ModelRenderer Shape2;
ModelRenderer Shape3;
ModelRenderer Shape4;
ModelRenderer Shape5;
ModelRenderer Shape6;
ModelRenderer Shape7;
ModelRenderer Shape8;
ModelRenderer Shape9;
public ModelRPG()
{
textureWidth = 64;
textureHeight = 32;
Shape1 = new ModelRenderer(this, 0, 27);
Shape1.addBox(0F, 0F, 0F, 1, 4, 1);
Shape1.setRotationPoint(0F, -1F, 0F);
Shape1.setTextureSize(64, 32);
Shape1.mirror = true;
setRotation(Shape1, 0F, 0F, 0F);
Shape2 = new ModelRenderer(this, 0, 24);
Shape2.addBox(0F, 0F, 0F, 1, 2, 1);
Shape2.setRotationPoint(3F, 0F, 0F);
Shape2.setTextureSize(64, 32);
Shape2.mirror = true;
setRotation(Shape2, 0F, 0F, 0F);
Shape3 = new ModelRenderer(this, 0, 18);
Shape3.addBox(0F, 0F, 0F, 8, 2, 2);
Shape3.setRotationPoint(2F, -2F, -0.5F);
Shape3.setTextureSize(64, 32);
Shape3.mirror = true;
setRotation(Shape3, 0F, 0F, 0F);
Shape4 = new ModelRenderer(this, 0, 16);
Shape4.addBox(0F, 0F, 0F, 4, 1, 1);
Shape4.setRotationPoint(10F, -1.5F, 0F);
Shape4.setTextureSize(64, 32);
Shape4.mirror = true;
setRotation(Shape4, 0F, 0F, 0F);
Shape5 = new ModelRenderer(this, 0, 12);
Shape5.addBox(0F, 0F, 0F, 3, 2, 2);
Shape5.setRotationPoint(14F, -2F, -0.5F);
Shape5.setTextureSize(64, 32);
Shape5.mirror = true;
setRotation(Shape5, 0F, 0F, 0F);
Shape6 = new ModelRenderer(this, 4, 30);
Shape6.addBox(0F, 0F, 0F, 4, 1, 1);
Shape6.setRotationPoint(-2F, -1.5F, 0F);
Shape6.setTextureSize(64, 32);
Shape6.mirror = true;
setRotation(Shape6, 0F, 0F, 0F);
Shape7 = new ModelRenderer(this, 30, 0);
Shape7.addBox(0F, 0F, 0F, 1, 2, 2);
Shape7.setRotationPoint(-3F, -2F, -0.5F);
Shape7.setTextureSize(64, 32);
Shape7.mirror = true;
setRotation(Shape7, 0F, 0F, 0F);
Shape8 = new ModelRenderer(this, 13, 0);
Shape8.addBox(0F, 0F, 0F, 5, 1, 1);
Shape8.setRotationPoint(-8F, -1.5F, 0F);
Shape8.setTextureSize(64, 32);
Shape8.mirror = true;
setRotation(Shape8, 0F, 0F, 0F);
Shape9 = new ModelRenderer(this, 0, 0);
Shape9.addBox(0F, 0F, 0F, 3, 2, 2);
Shape9.setRotationPoint(-6.5F, -2F, -0.5F);
Shape9.setTextureSize(64, 32);
Shape9.mirror = true;
setRotation(Shape9, 0F, 0F, 0F);
}
@Override
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
{
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
Shape1.render(f5);
Shape2.render(f5);
Shape3.render(f5);
Shape4.render(f5);
Shape5.render(f5);
Shape6.render(f5);
Shape7.render(f5);
Shape8.render(f5);
Shape9.render(f5);
}
public void renderModel(float f) {
Shape1.render(f);
Shape2.render(f);
Shape3.render(f);
Shape4.render(f);
Shape5.render(f);
Shape6.render(f);
Shape7.render(f);
Shape8.render(f);
Shape9.render(f);
}
private void setRotation(ModelRenderer model, float x, float y, float z)
{
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity)
{
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}

View File

@ -1,293 +0,0 @@
// Date: 12.07.2016 17:01:02
// Template version 1.1
// Java generated by Techne
// Keep in mind that you still need to fill in some blanks
// - ZeuX
package com.hbm.render.model;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.entity.Entity;
public class ModelXVL1456 extends ModelBase {
// fields
ModelRenderer CoilFront;
ModelRenderer Panel1;
ModelRenderer Panel2;
ModelRenderer Panel3;
ModelRenderer CoilBack;
ModelRenderer SpinPivot;
ModelRenderer Barrel;
ModelRenderer CoilBarrel;
ModelRenderer PipeBarrel;
ModelRenderer PipeHolder;
ModelRenderer Rail1;
ModelRenderer Rail2;
ModelRenderer Rail3;
ModelRenderer Rail4;
ModelRenderer Rail5;
ModelRenderer Rail6;
ModelRenderer TankHolder;
ModelRenderer HandleBase;
ModelRenderer HandleShaft;
ModelRenderer HanldeGrip;
ModelRenderer SpinC1;
ModelRenderer SpinC2;
ModelRenderer SpinC3;
ModelRenderer SpinP1;
ModelRenderer SpinP2;
ModelRenderer SpinP3;
ModelRenderer Battery1;
ModelRenderer Battery2;
ModelRenderer StockBase;
ModelRenderer StockTrigger;
ModelRenderer Shape1;
int i = 0;
public ModelXVL1456() {
textureWidth = 128;
textureHeight = 64;
CoilFront = new ModelRenderer(this, 0, 0);
CoilFront.addBox(0F, 0F, 0F, 4, 10, 10);
CoilFront.setRotationPoint(0F, 0F, 0F);
CoilFront.setTextureSize(128, 64);
CoilFront.mirror = true;
setRotation(CoilFront, 0F, 0F, 0F);
Panel1 = new ModelRenderer(this, 0, 40);
Panel1.addBox(0F, 0F, 0F, 5, 11, 3);
Panel1.setRotationPoint(4F, -1F, 3.5F);
Panel1.setTextureSize(128, 64);
Panel1.mirror = true;
setRotation(Panel1, 0F, 0F, 0F);
Panel2 = new ModelRenderer(this, 0, 54);
Panel2.addBox(0F, 0F, 0F, 5, 3, 3);
Panel2.setRotationPoint(9F, -1F, 3.5F);
Panel2.setTextureSize(128, 64);
Panel2.mirror = true;
setRotation(Panel2, 0F, 0F, 0F);
Panel3 = new ModelRenderer(this, 16, 40);
Panel3.addBox(0F, 0F, 0F, 3, 11, 3);
Panel3.setRotationPoint(14F, -1F, 3.5F);
Panel3.setTextureSize(128, 64);
Panel3.mirror = true;
setRotation(Panel3, 0F, 0F, 0F);
CoilBack = new ModelRenderer(this, 0, 20);
CoilBack.addBox(0F, 0F, 0F, 4, 10, 10);
CoilBack.setRotationPoint(17F, 0F, 0F);
CoilBack.setTextureSize(128, 64);
CoilBack.mirror = true;
setRotation(CoilBack, 0F, 0F, 0F);
SpinPivot = new ModelRenderer(this, 66, 42);
SpinPivot.addBox(0F, 0F, 0F, 5, 1, 1);
SpinPivot.setRotationPoint(9F, 5.5F, 4.5F);
SpinPivot.setTextureSize(128, 64);
SpinPivot.mirror = true;
setRotation(SpinPivot, 0F, 0F, 0F);
Barrel = new ModelRenderer(this, 64, 0);
Barrel.addBox(0F, 0F, 0F, 28, 1, 1);
Barrel.setRotationPoint(-28F, 4.5F, 4.5F);
Barrel.setTextureSize(128, 64);
Barrel.mirror = true;
setRotation(Barrel, 0F, 0F, 0F);
CoilBarrel = new ModelRenderer(this, 28, 4);
CoilBarrel.addBox(0F, 0F, 0F, 9, 7, 7);
CoilBarrel.setRotationPoint(-19F, 1.5F, 1.5F);
CoilBarrel.setTextureSize(128, 64);
CoilBarrel.mirror = true;
setRotation(CoilBarrel, 0F, 0F, 0F);
PipeBarrel = new ModelRenderer(this, 28, 0);
PipeBarrel.addBox(0F, 0F, 0F, 16, 2, 2);
PipeBarrel.setRotationPoint(-13F, 6F, -0.4666667F);
PipeBarrel.setTextureSize(128, 64);
PipeBarrel.mirror = true;
setRotation(PipeBarrel, 0F, 0F, 0F);
PipeHolder = new ModelRenderer(this, 42, 37);
PipeHolder.addBox(0F, 0F, 0F, 3, 4, 1);
PipeHolder.setRotationPoint(0.5F, 5F, -1F);
PipeHolder.setTextureSize(128, 64);
PipeHolder.mirror = true;
setRotation(PipeHolder, 0F, 0F, 0F);
Rail1 = new ModelRenderer(this, 28, 27);
Rail1.addBox(0F, 0F, 0F, 1, 5, 1);
Rail1.setRotationPoint(5F, -2F, 2.5F);
Rail1.setTextureSize(128, 64);
Rail1.mirror = true;
setRotation(Rail1, 0F, 0F, 0F);
Rail2 = new ModelRenderer(this, 32, 27);
Rail2.addBox(0F, 0F, 0F, 1, 5, 1);
Rail2.setRotationPoint(5F, -2F, 6.5F);
Rail2.setTextureSize(128, 64);
Rail2.mirror = true;
setRotation(Rail2, 0F, 0F, 0F);
Rail3 = new ModelRenderer(this, 28, 23);
Rail3.addBox(0F, 0F, 0F, 18, 1, 1);
Rail3.setRotationPoint(-12F, -3F, 2.5F);
Rail3.setTextureSize(128, 64);
Rail3.mirror = true;
setRotation(Rail3, 0F, 0F, 0F);
Rail4 = new ModelRenderer(this, 28, 25);
Rail4.addBox(0F, 0F, 0F, 18, 1, 1);
Rail4.setRotationPoint(-12F, -3F, 6.5F);
Rail4.setTextureSize(128, 64);
Rail4.mirror = true;
setRotation(Rail4, 0F, 0F, 0F);
Rail5 = new ModelRenderer(this, 28, 18);
Rail5.addBox(0F, 0F, 0F, 1, 4, 1);
Rail5.setRotationPoint(-12F, -2F, 2.5F);
Rail5.setTextureSize(128, 64);
Rail5.mirror = true;
setRotation(Rail5, 0F, 0F, 0F);
Rail6 = new ModelRenderer(this, 32, 18);
Rail6.addBox(0F, 0F, 0F, 1, 4, 1);
Rail6.setRotationPoint(-12F, -2F, 6.5F);
Rail6.setTextureSize(128, 64);
Rail6.mirror = true;
setRotation(Rail6, 0F, 0F, 0F);
TankHolder = new ModelRenderer(this, 42, 27);
TankHolder.addBox(0F, 0F, 0F, 4, 2, 1);
TankHolder.setRotationPoint(4.5F, 4F, 2.5F);
TankHolder.setTextureSize(128, 64);
TankHolder.mirror = true;
setRotation(TankHolder, 0F, 0F, 0F);
HandleBase = new ModelRenderer(this, 28, 33);
HandleBase.addBox(0F, 0F, 0F, 6, 1, 1);
HandleBase.setRotationPoint(9F, -2F, 4.5F);
HandleBase.setTextureSize(128, 64);
HandleBase.mirror = true;
setRotation(HandleBase, 0F, 0F, 0F);
HandleShaft = new ModelRenderer(this, 28, 35);
HandleShaft.addBox(0F, 0F, 0F, 1, 3, 1);
HandleShaft.setRotationPoint(8F, -4F, 4.5F);
HandleShaft.setTextureSize(128, 64);
HandleShaft.mirror = true;
setRotation(HandleShaft, 0F, 0F, 0F);
HanldeGrip = new ModelRenderer(this, 28, 39);
HanldeGrip.addBox(0F, 0F, 0F, 5, 2, 2);
HanldeGrip.setRotationPoint(9F, -5F, 4F);
HanldeGrip.setTextureSize(128, 64);
HanldeGrip.mirror = true;
setRotation(HanldeGrip, 0F, 0F, 0F);
SpinC1 = new ModelRenderer(this, 66, 21);
SpinC1.addBox(0F, -3.5F, -2F, 4, 3, 4);
SpinC1.setRotationPoint(9.5F, 6F, 5F);
SpinC1.setTextureSize(128, 64);
SpinC1.mirror = true;
setRotation(SpinC1, 0F, 0F, 0F);
SpinC2 = new ModelRenderer(this, 66, 28);
SpinC2.addBox(0F, -3.5F, -2F, 4, 3, 4);
SpinC2.setRotationPoint(9.5F, 6F, 5F);
SpinC2.setTextureSize(128, 64);
SpinC2.mirror = true;
setRotation(SpinC2, 2.094395F, 0F, 0F);
SpinC3 = new ModelRenderer(this, 66, 35);
SpinC3.addBox(0F, -3.5F, -2F, 4, 3, 4);
SpinC3.setRotationPoint(9.5F, 6F, 5F);
SpinC3.setTextureSize(128, 64);
SpinC3.mirror = true;
setRotation(SpinC3, -2.094395F, 0F, 0F);
SpinP1 = new ModelRenderer(this, 82, 21);
SpinP1.addBox(0F, -3F, -1.5F, 3, 2, 3);
SpinP1.setRotationPoint(10F, 6F, 5F);
SpinP1.setTextureSize(128, 64);
SpinP1.mirror = true;
setRotation(SpinP1, 1.047198F, 0F, 0F);
SpinP2 = new ModelRenderer(this, 82, 26);
SpinP2.addBox(0F, -3F, -1.5F, 3, 2, 3);
SpinP2.setRotationPoint(10F, 6F, 5F);
SpinP2.setTextureSize(128, 64);
SpinP2.mirror = true;
setRotation(SpinP2, 3.141593F, 0F, 0F);
SpinP3 = new ModelRenderer(this, 82, 31);
SpinP3.addBox(0F, -3F, -1.5F, 3, 2, 3);
SpinP3.setRotationPoint(10F, 6F, 5F);
SpinP3.setTextureSize(128, 64);
SpinP3.mirror = true;
setRotation(SpinP3, -1.047198F, 0F, 0F);
Battery1 = new ModelRenderer(this, 64, 2);
Battery1.addBox(0F, 0F, 0F, 1, 1, 3);
Battery1.setRotationPoint(17.8F, -1F, 3.5F);
Battery1.setTextureSize(128, 64);
Battery1.mirror = true;
setRotation(Battery1, 0F, 0F, 0F);
Battery2 = new ModelRenderer(this, 72, 2);
Battery2.addBox(0F, 0F, 0F, 1, 1, 3);
Battery2.setRotationPoint(19.3F, -1F, 3.5F);
Battery2.setTextureSize(128, 64);
Battery2.mirror = true;
setRotation(Battery2, 0F, 0F, 0F);
StockBase = new ModelRenderer(this, 60, 12);
StockBase.addBox(0F, 0F, 0F, 12, 6, 3);
StockBase.setRotationPoint(22F, 7F, 3.5F);
StockBase.setTextureSize(128, 64);
StockBase.mirror = true;
setRotation(StockBase, 0F, 0F, 0F);
StockTrigger = new ModelRenderer(this, 60, 6);
StockTrigger.addBox(-3.5F, -1.5F, 0F, 5, 4, 2);
StockTrigger.setRotationPoint(22F, 10F, 4F);
StockTrigger.setTextureSize(128, 64);
StockTrigger.mirror = true;
setRotation(StockTrigger, 0F, 0F, 0.7853982F);
Shape1 = new ModelRenderer(this, 42, 30);
Shape1.addBox(0F, -1F, -1F, 2, 5, 2);
Shape1.setRotationPoint(5.5F, 6F, 2.5F);
Shape1.setTextureSize(128, 64);
Shape1.mirror = true;
setRotation(Shape1, -0.7853982F, 0F, 0F);
}
public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot) {
super.render(entity, f, f1, f2, f3, f4, f5);
setRotationAngles(f, f1, f2, f3, f4, f5, entity);
CoilFront.render(f5);
Panel1.render(f5);
Panel2.render(f5);
Panel3.render(f5);
CoilBack.render(f5);
SpinPivot.render(f5);
Barrel.render(f5);
CoilBarrel.render(f5);
PipeBarrel.render(f5);
PipeHolder.render(f5);
Rail1.render(f5);
Rail2.render(f5);
Rail3.render(f5);
Rail4.render(f5);
Rail5.render(f5);
Rail6.render(f5);
TankHolder.render(f5);
HandleBase.render(f5);
HandleShaft.render(f5);
HanldeGrip.render(f5);
SpinC1.rotateAngleX += rot;
SpinC2.rotateAngleX += rot;
SpinC3.rotateAngleX += rot;
SpinP1.rotateAngleX += rot;
SpinP2.rotateAngleX += rot;
SpinP3.rotateAngleX += rot;
SpinC1.render(f5);
SpinC2.render(f5);
SpinC3.render(f5);
SpinP1.render(f5);
SpinP2.render(f5);
SpinP3.render(f5);
Battery1.render(f5);
Battery2.render(f5);
StockBase.render(f5);
StockTrigger.render(f5);
Shape1.render(f5);
}
private void setRotation(ModelRenderer model, float x, float y, float z) {
model.rotateAngleX = x;
model.rotateAngleY = y;
model.rotateAngleZ = z;
}
@Override
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) {
super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
}
}

View File

@ -28,10 +28,12 @@ import net.minecraftforge.client.IItemRenderer;
import net.minecraftforge.client.model.IModelCustom;
public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRendererProvider {
public static final IModelCustom yomiModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/yomi.obj"), false).asVBO();
public static final IModelCustom poohModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/pooh.obj"), false).asVBO();
public static final ResourceLocation yomiTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/yomi.png");
public static final ResourceLocation numbernineTex = new ResourceLocation(RefStrings.MODID, "textures/models/horse/numbernine.png");
public static final ResourceLocation poohTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/pooh.png");
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
@ -51,6 +53,7 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen
case NONE: break;
case YOMI: GL11.glScaled(0.5, 0.5, 0.5); break;
case NUMBERNINE: GL11.glScaled(0.75, 0.75, 0.75); break;
case POOH: GL11.glScaled(0.75, 0.75, 0.75); break;
}
renderPlushie(te.type);
@ -107,6 +110,10 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen
IIcon icon = stack.getIconIndex();
ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
break;
case POOH:
Minecraft.getMinecraft().getTextureManager().bindTexture(poohTex);
poohModel.renderAll();
break;
}
}
@ -131,6 +138,7 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen
case NONE: break;
case YOMI: GL11.glScaled(1.25, 1.25, 1.25); break;
case NUMBERNINE: GL11.glTranslated(0, 0.25, 0.25); GL11.glScaled(1.25, 1.25, 1.25); break;
case POOH: GL11.glTranslated(0, 0.25, 0); GL11.glScaled(1.5, 1.5, 1.5); break;
}
renderPlushie(type);
}};

View File

@ -30,7 +30,7 @@ import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHeatSource, IFluidStandardTransceiver, IGUIProvider, IControlReceiver, IFluidCopiable {
public FluidTank[] tanks;
public int amountToCool = 1;
public int amountToCool = 24_000;
public int tickDelay = 1;
public int heatEnergy;

View File

@ -135,9 +135,9 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider
int coolingCycles = tanks[0].getFill() / step.amountReq;
int heatingCycles = (tanks[1].getMaxFill() - tanks[1].getFill()) / step.amountProduced;
int heatCycles = (int) (this.heat / 4 / step.heatReq * trait.getEfficiency(HeatingType.ICF)); //25% cooling per tick
int heatCycles = (int) Math.min(this.heat / 4D / step.heatReq * trait.getEfficiency(HeatingType.ICF), this.heat / step.heatReq); //25% cooling per tick
int cycles = Math.min(coolingCycles, Math.min(heatingCycles, heatCycles));
tanks[0].setFill(tanks[0].getFill() - step.amountReq * cycles);
tanks[1].setFill(tanks[1].getFill() + step.amountProduced * cycles);
this.heat -= step.heatReq * cycles;

View File

@ -28,12 +28,15 @@ import com.hbm.util.fauxpointtwelve.DirPos;
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 io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
@ -316,6 +319,31 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i
@Override public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { return slot < 3 || slot == 4; }
@Override public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { return false; }
AxisAlignedBB bb = null;
@Override
public AxisAlignedBB getRenderBoundingBox() {
if(bb == null) {
bb = AxisAlignedBB.getBoundingBox(
xCoord - 2,
yCoord,
zCoord - 2,
xCoord + 3,
yCoord + 5,
zCoord + 3
);
}
return bb;
}
@Override
@SideOnly(Side.CLIENT)
public double getMaxRenderDistanceSquared() {
return 65536.0D;
}
@Override
public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side) {

View File

@ -3,6 +3,7 @@ package com.hbm.tileentity.network;
import java.util.HashMap;
import java.util.Iterator;
import com.hbm.interfaces.NotableComments;
import com.hbm.tileentity.network.RequestNetwork.PathNode;
import com.hbm.util.HashedSet;
import com.hbm.util.ParticleUtil;
@ -24,6 +25,7 @@ import net.minecraft.world.World;
* @author hbm
*
*/
@NotableComments
public abstract class TileEntityRequestNetwork extends TileEntity {
public HashedSet<PathNode> reachableNodes = new HashedSet();

View File

@ -3,6 +3,8 @@ package com.hbm.util;
import java.util.Iterator;
import java.util.Map;
import com.hbm.interfaces.NotableComments;
import cpw.mods.fml.relauncher.ReflectionHelper;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
@ -14,6 +16,7 @@ import net.minecraft.stats.StatCrafting;
import net.minecraft.stats.StatList;
import net.minecraft.util.ChatComponentTranslation;
@NotableComments
public class StatHelper {
/*

View File

@ -1,5 +1,7 @@
package com.hbm.util;
import com.hbm.interfaces.NotableComments;
import cpw.mods.fml.relauncher.ReflectionHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityTracker;
@ -15,6 +17,7 @@ import net.minecraft.world.WorldServer;
*
* @author hbm
*/
@NotableComments
public class TrackerUtil {
/** Grabs the tracker entry from the given entity */

View File

@ -5,11 +5,13 @@ import java.util.List;
import java.util.Random;
import com.hbm.blocks.ModBlocks;
import com.hbm.interfaces.NotableComments;
import com.hbm.inventory.RecipesCommon.MetaBlock;
import com.hbm.world.generator.TimedGenerator.ITimedJob;
import net.minecraft.world.World;
@NotableComments
public class JungleDungeon extends CellularDungeon {
public boolean hasHole = false;
@ -70,6 +72,7 @@ public class JungleDungeon extends CellularDungeon {
//since all the building is timed jobs, this has to be as well. timed jobs are ordered so this works!
//is it shitty coding? is it not? who knows?
//future bob here: yes it is, go fuck yourself
}
}

View File

@ -722,6 +722,8 @@ hbmfluid.iongel=Ionengel
hbmfluid.kerosene=Kerosin
hbmfluid.kerosene_reform=Düsentreibstoff
hbmfluid.lava=Lava
hbmfluid.lead=Flüssiges Blei
hbmfluid.lead_hot=Heißes flüssiges Blei
hbmfluid.lightoil=Leichtöl
hbmfluid.lightoil_crack=Crack-Leichtöl
hbmfluid.lightoil_ds=Entschwefeltes Leichtöl
@ -4293,8 +4295,7 @@ tile.machine_boiler.name=Boiler
tile.machine_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$Wärmestransferrate: ΔT*0.01 TU/t
tile.machine_boiler_electric_off.name=Elektrischer Ölwärmer
tile.machine_boiler_electric_on.name=Elektrischer Ölwärmer
tile.machine_boiler_off.name=Ölwärmer
tile.machine_boiler_on.name=Ölwärmer
tile.machine_boiler_off.name=Alter Boiler
tile.machine_catalytic_cracker.name=Katalytischer Cracking-Turm
tile.machine_catalytic_reformer.name=Katalytischer Reformer
tile.machine_centrifuge.name=Zentrifuge

View File

@ -1432,6 +1432,8 @@ hbmfluid.iongel=Ionic Gel
hbmfluid.kerosene=Kerosene
hbmfluid.kerosene_reform=Jet Fuel
hbmfluid.lava=Lava
hbmfluid.lead=Liquid Lead
hbmfluid.lead_hot=Hot Liquid Lead
hbmfluid.lightoil=Light Oil
hbmfluid.lightoil_crack=Cracked Light Oil
hbmfluid.lightoil_ds=Desulfurized Light Oil
@ -5388,8 +5390,7 @@ tile.machine_boiler.name=Boiler
tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t
tile.machine_boiler_electric_off.name=Electric Oil Heater
tile.machine_boiler_electric_on.name=Electric Oil Heater
tile.machine_boiler_off.name=Oil Heater
tile.machine_boiler_on.name=Oil Heater
tile.machine_boiler_off.name=Old Boiler
tile.machine_catalytic_cracker.name=Catalytic Cracking Tower
tile.machine_catalytic_reformer.name=Catalytic Reformer
tile.machine_centrifuge.name=Centrifuge

View File

@ -0,0 +1,334 @@
# Blender v2.79 (sub 0) OBJ File: 'pooh.blend'
# www.blender.org
o Cube_Cube.001
v -0.250000 0.062500 0.250000
v 0.250000 0.062500 0.250000
v -0.250000 0.062500 -0.250000
v 0.250000 0.062500 -0.250000
v -0.250000 0.437500 0.250000
v 0.250000 0.437500 0.250000
v -0.250000 0.437500 -0.250000
v 0.250000 0.437500 -0.250000
v -0.187500 0.437500 0.187500
v 0.187500 0.437500 0.187500
v -0.187500 0.437500 -0.187500
v 0.187500 0.437500 -0.187500
v -0.187500 0.625000 -0.187500
v -0.187500 0.625000 0.187500
v 0.187500 0.625000 0.187500
v 0.187500 0.625000 -0.187500
v -0.250000 0.625000 0.250000
v 0.250000 0.625000 0.250000
v -0.250000 0.625000 -0.250000
v 0.250000 0.625000 -0.250000
v -0.250000 1.125000 -0.250000
v -0.250000 1.125000 0.250000
v 0.250000 1.125000 0.250000
v 0.250000 1.125000 -0.250000
v -0.125000 0.000000 -0.062500
v 0.500000 0.000000 -0.062500
v -0.125000 0.000000 -0.187500
v 0.500000 0.000000 -0.187500
v -0.125000 0.125000 -0.187500
v -0.125000 0.125000 -0.062500
v 0.500000 0.125000 -0.062500
v 0.500000 0.125000 -0.187500
v -0.125000 0.000000 0.187500
v 0.500000 0.000000 0.187500
v -0.125000 0.000000 0.062500
v 0.500000 0.000000 0.062500
v -0.125000 0.125000 0.062500
v -0.125000 0.125000 0.187500
v 0.500000 0.125000 0.187500
v 0.500000 0.125000 0.062500
v -0.062500 0.606694 -0.169194
v 0.062500 0.606694 -0.169194
v -0.062500 0.518306 -0.080806
v 0.062500 0.518306 -0.080806
v -0.062500 0.253141 -0.345971
v -0.062500 0.341529 -0.434359
v 0.062500 0.341529 -0.434359
v 0.062500 0.253141 -0.345971
v -0.062500 0.606694 0.169194
v 0.062500 0.606694 0.169194
v -0.062500 0.518306 0.080806
v 0.062500 0.518306 0.080806
v -0.062500 0.253141 0.345971
v -0.062500 0.341529 0.434359
v 0.062500 0.341529 0.434359
v 0.062500 0.253141 0.345971
v 0.250000 0.781250 0.031250
v 0.250000 0.718750 0.031250
v 0.250000 0.781250 -0.031250
v 0.250000 0.718750 -0.031250
v 0.312500 0.781250 -0.031250
v 0.312500 0.781250 0.031250
v 0.312500 0.718750 0.031250
v 0.312500 0.718750 -0.031250
v -0.093750 1.062500 -0.125000
v 0.093750 1.062500 -0.125000
v -0.093750 1.062500 -0.312500
v 0.093750 1.062500 -0.312500
v -0.093750 1.250000 -0.312500
v -0.093750 1.250000 -0.125000
v 0.093750 1.250000 -0.125000
v 0.093750 1.250000 -0.312500
v -0.093750 1.062500 0.312500
v 0.093750 1.062500 0.312500
v -0.093750 1.062500 0.125000
v 0.093750 1.062500 0.125000
v -0.093750 1.250000 0.125000
v -0.093750 1.250000 0.312500
v 0.093750 1.250000 0.312500
v 0.093750 1.250000 0.125000
vt 0.400000 -0.000000
vt 0.200000 0.173913
vt 0.200000 -0.000000
vt 0.200000 0.304348
vt 0.400000 0.478261
vt 0.200000 0.478261
vt 0.600000 0.173913
vt 0.400000 0.304348
vt 0.400000 0.173913
vt 0.000000 0.304348
vt 0.000000 0.173913
vt 0.800000 0.173913
vt 0.600000 0.304348
vt 0.700000 0.304348
vt 0.550000 0.369565
vt 0.550000 0.304348
vt 1.000000 0.304348
vt 0.850000 0.369565
vt 0.850000 0.304348
vt 0.700000 0.369565
vt 0.400000 0.369565
vt 0.400000 0.304348
vt 0.400000 0.478261
vt 0.200000 0.652174
vt 0.200000 0.478261
vt 0.200000 0.826087
vt 0.400000 1.000000
vt 0.200000 1.000000
vt 0.600000 0.652174
vt 0.400000 0.826087
vt 0.400000 0.652174
vt -0.000000 0.826087
vt -0.000000 0.652174
vt 0.800000 0.652174
vt 0.600000 0.826087
vt 0.900000 0.260870
vt 0.950000 0.043478
vt 0.950000 0.260870
vt 0.800000 0.043478
vt 0.850000 0.260870
vt 0.800000 0.260870
vt 0.850000 -0.000000
vt 0.800000 0.000000
vt 0.800000 0.304348
vt 0.850000 0.304348
vt 0.850000 0.043478
vt 0.900000 0.043478
vt 1.000000 0.260870
vt 0.900000 0.260870
vt 0.950000 0.043478
vt 0.950000 0.260870
vt 0.800000 0.043478
vt 0.850000 0.260870
vt 0.800000 0.260870
vt 0.850000 -0.000000
vt 0.800000 0.000000
vt 0.800000 0.304348
vt 0.850000 0.304348
vt 0.850000 0.043478
vt 0.900000 0.043478
vt 1.000000 0.260870
vt 0.550000 0.369565
vt 0.475000 0.434783
vt 0.475000 0.369565
vt 0.400000 0.043478
vt 0.450000 0.000000
vt 0.450000 0.043478
vt 0.600000 0.173913
vt 0.550000 0.043478
vt 0.600000 0.043478
vt 0.450000 0.173913
vt 0.500000 0.043478
vt 0.500000 0.173913
vt 0.550000 0.173913
vt 0.400000 0.173913
vt 0.400000 0.000000
vt 0.450000 0.043478
vt 0.400000 0.043478
vt 0.500000 0.173913
vt 0.450000 0.173913
vt 0.550000 0.043478
vt 0.600000 0.173913
vt 0.550000 0.173913
vt 0.500000 0.043478
vt 0.400000 0.173913
vt 0.425000 0.521739
vt 0.450000 0.543478
vt 0.425000 0.543478
vt 0.425000 0.565217
vt 0.450000 0.565217
vt 0.475000 0.543478
vt 0.450000 0.521739
vt 0.475000 0.521739
vt 0.400000 0.521739
vt 0.400000 0.543478
vt 0.450000 0.500000
vt 0.425000 0.500000
vt 0.475000 0.500000
vt 0.550000 0.565217
vt 0.475000 0.565217
vt 0.550000 0.434783
vt 0.700000 0.434783
vt 0.625000 0.500000
vt 0.625000 0.434783
vt 0.550000 0.500000
vt 0.400000 0.500000
vt 0.400000 0.434783
vt 0.550000 0.369565
vt 0.475000 0.434783
vt 0.475000 0.369565
vt 0.475000 0.500000
vt 0.550000 0.565217
vt 0.475000 0.565217
vt 0.550000 0.434783
vt 0.700000 0.434783
vt 0.625000 0.500000
vt 0.625000 0.434783
vt 0.550000 0.500000
vt 0.400000 0.500000
vt 0.400000 0.434783
vt 0.800000 0.304348
vt 1.000000 0.369565
vt 0.800000 0.826087
vt 1.000000 0.043478
vt 1.000000 0.043478
vt 0.400000 0.000000
vt 0.450000 0.000000
vt 0.600000 0.043478
vt 0.700000 0.500000
vt 0.700000 0.500000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -0.7071 -0.7071
vn 0.0000 -0.7071 0.7071
vn 0.0000 0.7071 -0.7071
vn 0.0000 0.7071 0.7071
s off
f 3/1/1 2/2/1 1/3/1
f 6/4/2 7/5/2 5/6/2
f 3/7/3 8/8/3 4/9/3
f 2/2/4 5/10/4 1/11/4
f 4/9/5 6/4/5 2/2/5
f 1/12/6 7/13/6 3/7/6
f 12/14/5 15/15/5 10/16/5
f 9/17/6 13/18/6 11/19/6
f 11/19/3 16/20/3 12/14/3
f 10/16/4 14/21/4 9/22/4
f 19/23/1 18/24/1 17/25/1
f 23/26/2 21/27/2 22/28/2
f 19/29/3 24/30/3 20/31/3
f 18/24/4 22/32/4 17/33/4
f 20/31/5 23/26/5 18/24/5
f 17/34/6 21/35/6 19/29/6
f 27/36/1 26/37/1 25/38/1
f 31/39/2 29/40/2 30/41/2
f 28/42/5 31/39/5 26/43/5
f 25/44/6 29/40/6 27/45/6
f 27/36/3 32/46/3 28/47/3
f 26/37/4 30/48/4 25/38/4
f 35/49/1 34/50/1 33/51/1
f 39/52/2 37/53/2 38/54/2
f 36/55/5 39/52/5 34/56/5
f 33/57/6 37/53/6 35/58/6
f 35/49/3 40/59/3 36/60/3
f 34/50/4 38/61/4 33/51/4
f 67/62/1 66/63/1 65/64/1
f 47/65/7 45/66/7 46/67/7
f 42/68/5 48/69/5 47/70/5
f 41/71/6 45/72/6 43/73/6
f 43/73/8 48/69/8 44/74/8
f 42/75/9 46/67/9 41/71/9
f 53/76/8 55/77/8 54/78/8
f 55/77/5 52/79/5 50/80/5
f 53/81/6 49/82/6 51/83/6
f 56/84/7 51/83/7 52/79/7
f 54/78/10 50/80/10 49/85/10
f 63/86/5 61/87/5 62/88/5
f 57/89/2 61/87/2 59/90/2
f 59/91/3 64/92/3 60/93/3
f 58/94/4 62/88/4 57/95/4
f 60/96/1 63/86/1 58/97/1
f 71/98/2 69/99/2 70/100/2
f 68/101/5 71/98/5 66/63/5
f 65/102/6 69/103/6 67/104/6
f 67/104/3 72/105/3 68/101/3
f 66/63/4 70/106/4 65/107/4
f 75/108/1 74/109/1 73/110/1
f 79/111/2 77/112/2 78/113/2
f 76/114/5 79/111/5 74/109/5
f 73/115/6 77/116/6 75/117/6
f 75/117/3 80/118/3 76/114/3
f 74/109/4 78/119/4 73/120/4
f 3/1/1 4/9/1 2/2/1
f 6/4/2 8/8/2 7/5/2
f 3/7/3 7/13/3 8/8/3
f 2/2/4 6/4/4 5/10/4
f 4/9/5 8/8/5 6/4/5
f 1/12/6 5/121/6 7/13/6
f 12/14/5 16/20/5 15/15/5
f 9/17/6 14/122/6 13/18/6
f 11/19/3 13/18/3 16/20/3
f 10/16/4 15/15/4 14/21/4
f 19/23/1 20/31/1 18/24/1
f 23/26/2 24/30/2 21/27/2
f 19/29/3 21/35/3 24/30/3
f 18/24/4 23/26/4 22/32/4
f 20/31/5 24/30/5 23/26/5
f 17/34/6 22/123/6 21/35/6
f 27/36/1 28/47/1 26/37/1
f 31/39/2 32/46/2 29/40/2
f 28/42/5 32/46/5 31/39/5
f 25/44/6 30/41/6 29/40/6
f 27/36/3 29/40/3 32/46/3
f 26/37/4 31/124/4 30/48/4
f 35/49/1 36/60/1 34/50/1
f 39/52/2 40/59/2 37/53/2
f 36/55/5 40/59/5 39/52/5
f 33/57/6 38/54/6 37/53/6
f 35/49/3 37/53/3 40/59/3
f 34/50/4 39/125/4 38/61/4
f 67/62/1 68/101/1 66/63/1
f 47/65/7 48/126/7 45/66/7
f 42/68/5 44/74/5 48/69/5
f 41/71/6 46/67/6 45/72/6
f 43/73/8 45/72/8 48/69/8
f 42/75/9 47/65/9 46/67/9
f 53/76/8 56/127/8 55/77/8
f 55/77/5 56/84/5 52/79/5
f 53/81/6 54/128/6 49/82/6
f 56/84/7 53/81/7 51/83/7
f 54/78/10 55/77/10 50/80/10
f 63/86/5 64/92/5 61/87/5
f 57/89/2 62/88/2 61/87/2
f 59/91/3 61/87/3 64/92/3
f 58/94/4 63/86/4 62/88/4
f 60/96/1 64/92/1 63/86/1
f 71/98/2 72/105/2 69/99/2
f 68/101/5 72/105/5 71/98/5
f 65/102/6 70/129/6 69/103/6
f 67/104/3 69/103/3 72/105/3
f 66/63/4 71/98/4 70/106/4
f 75/108/1 76/114/1 74/109/1
f 79/111/2 80/118/2 77/112/2
f 76/114/5 80/118/5 79/111/5
f 73/115/6 78/130/6 77/116/6
f 75/117/3 77/116/3 80/118/3
f 74/109/4 79/111/4 78/119/4

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -215,6 +215,8 @@
"weapon.nuclearExplosion": {"category": "player", "sounds": [{"name": "weapon/nuclearExplosion", "stream": true}]},
"weapon.explosionLargeNear": {"category": "player", "sounds": [{"name": "weapon/explosionLargeNear", "stream": false}]},
"weapon.explosionLargeFar": {"category": "player", "sounds": [{"name": "weapon/explosionLargeFar", "stream": false}]},
"weapon.explosionSmallNear": {"category": "player", "sounds": ["weapon/explosionSmallNear1", "weapon/explosionSmallNear2", "weapon/explosionSmallNear3"]},
"weapon.explosionSmallFar": {"category": "player", "sounds": ["weapon/explosionSmallFar1", "weapon/explosionSmallFar2"]},
"weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]},

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

After

Width:  |  Height:  |  Size: 499 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 282 B

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