Merge remote-tracking branch 'upstream/master' into Optimization
# Conflicts: # src/main/java/com/hbm/main/ModEventHandlerRenderer.java
11
changelog
@ -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
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)));
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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 });
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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; }
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
7
src/main/java/com/hbm/interfaces/NotableComments.java
Normal 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 { }
|
||||
@ -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 */
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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");
|
||||
}
|
||||
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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());
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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
|
||||
*/
|
||||
}
|
||||
|
||||
@ -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);
|
||||
};
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
@ -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");
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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;
|
||||
};
|
||||
}
|
||||
@ -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());
|
||||
|
||||
@ -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() });
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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");
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
146
src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderG3.java
Normal 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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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; }
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@ -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);
|
||||
}};
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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 {
|
||||
|
||||
/*
|
||||
|
||||
@ -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 */
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
334
src/main/resources/assets/hbm/models/trinkets/pooh.obj
Normal 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
|
||||
6824
src/main/resources/assets/hbm/models/weapons/g3.obj
Normal file
3003
src/main/resources/assets/hbm/models/weapons/uzi.obj
Normal 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}]},
|
||||
|
||||
|
||||
BIN
src/main/resources/assets/hbm/textures/blocks/glyphid.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 599 B |
|
After Width: | Height: | Size: 562 B |
|
After Width: | Height: | Size: 408 B |
|
After Width: | Height: | Size: 765 B |
|
Before Width: | Height: | Size: 511 B After Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 525 B After Width: | Height: | Size: 499 B |
BIN
src/main/resources/assets/hbm/textures/gui/fluids/lead.png
Normal file
|
After Width: | Height: | Size: 790 B |
BIN
src/main/resources/assets/hbm/textures/gui/fluids/lead_hot.png
Normal file
|
After Width: | Height: | Size: 757 B |
|
After Width: | Height: | Size: 281 B |
|
After Width: | Height: | Size: 282 B |