Merge pull request #2440 from MellowArpeggiation/drilldo

This was an animated terra drill PR but the drill is getting axed so this is now just a bugfix and cleanup PR yay
This commit is contained in:
HbmMods 2025-09-19 08:09:56 +02:00 committed by GitHub
commit 94e3df1751
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
58 changed files with 1401 additions and 1197 deletions

View File

@ -256,11 +256,11 @@ public class EntityMappings {
int id = 0;
for(Quartet<Class<? extends Entity>, String, Integer, Boolean> entry : entityMappings) {
EntityRegistry.registerModEntity(entry.getW(), entry.getX(), id++, MainRegistry.instance, entry.getY(), 1, entry.getZ());
ModEntityList.registerEntity(entry.getW(), entry.getX(), id++, MainRegistry.instance, entry.getY(), 1, entry.getZ());
}
for(Quartet<Class<? extends Entity>, String, Integer, Integer> entry : mobMappings) {
EntityRegistry.registerGlobalEntityID(entry.getW(), entry.getX(), EntityRegistry.findGlobalUniqueEntityId(), entry.getY(), entry.getZ());
ModEntityList.registerEntity(entry.getW(), entry.getX(), id++, MainRegistry.instance, entry.getY(), entry.getZ());
}
}

View File

@ -0,0 +1,149 @@
package com.hbm.entity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import com.hbm.lib.RefStrings;
import cpw.mods.fml.common.registry.EntityRegistry;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityList.EntityEggInfo;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
public class ModEntityList {
private static EntityData[] array = new EntityData[0];
private static final Map<Integer, Class<? extends Entity>> map = new HashMap<Integer, Class<? extends Entity>>();
public static List<Integer> eggIdList = new ArrayList<Integer>();
public static Map<Class<? extends Entity>, Integer> eggIdMap = new HashMap<Class<? extends Entity>, Integer>();
public static void registerEntity(Class<? extends Entity> entityClass, String entityName, int id, Object mod) {
registerEntity(entityClass, entityName, id, mod, 80, 3, true, -1, -1, false);
}
public static void registerEntity(Class<? extends Entity> entityClass, String entityName, int id, Object mod, int eggColor1, int eggColor2) {
registerEntity(entityClass, entityName, id, mod, 80, 3, true, eggColor1, eggColor2, true);
}
public static void registerEntity(Class<? extends Entity> entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates) {
registerEntity(entityClass, entityName, id, mod, trackingRange, updateFrequency, sendsVelocityUpdates, -1, -1, false);
}
public static void registerEntity(Class<? extends Entity> entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates, int eggColor1, int eggColor2) {
registerEntity(entityClass, entityName, id, mod, trackingRange, updateFrequency, sendsVelocityUpdates, eggColor1, eggColor2, true);
}
private static void registerEntity(Class<? extends Entity> entityClass, String entityName, int id, Object mod, int trackingRange, int updateFrequency, boolean sendsVelocityUpdates, int eggColor1, int eggColor2, boolean hasEgg) {
EntityRegistry.registerModEntity(entityClass, entityName, id, mod, trackingRange, updateFrequency, sendsVelocityUpdates);
if(id >= array.length) {
EntityData[] newArray = new EntityData[id + 5];
System.arraycopy(array, 0, newArray, 0, array.length);
array = newArray;
}
if(array[id] != null)
throw new IllegalArgumentException("ID " + id + " is already being used! Please report this error!");
array[id] = new EntityData(entityName, id, eggColor1, eggColor2, hasEgg);
map.put(id, entityClass);
if(eggColor1 != -1)
registerEntityEgg(entityClass, eggColor1, eggColor2);
}
public static String getName(int id) {
EntityData data = getData(id);
if(data == null)
return null;
return RefStrings.MODID + "." + data.name;
}
public static EntityData getData(int id) {
if(id >= array.length)
return null;
return array[id];
}
public static boolean hasEntitiesWithEggs() {
for(EntityData data : array) {
if(data != null && data.hasEgg) return true;
}
return false;
}
public static Entity createEntityByID(int id, World world) {
EntityData data = getData(id);
if(data == null || !data.hasEgg)
return null;
try {
Class<? extends Entity> cls = map.get(id);
if(cls != null)
return cls.getConstructor(World.class).newInstance(world);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static EntityData[] getDatasWithEggs() {
List<EntityData> list = new LinkedList<EntityData>();
for(Integer id : map.keySet()) {
EntityData data = getData(id);
if(data != null && data.hasEgg)
list.add(data);
}
return list.toArray(new EntityData[list.size()]);
}
public static int eggIDCounter = 499;
@SuppressWarnings("unchecked")
public static void registerEntityEgg(Class<? extends Entity> entity, int primaryColor, int secondaryColor) {
int id = getUniqueEntityEggId();
EntityList.IDtoClassMapping.put(id, entity);
EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor));
eggIdMap.put(entity, id);
}
public static ItemStack getEggFromEntity(Entity entity) {
return new ItemStack(Items.spawn_egg, 1, eggIdMap.get(entity.getClass()));
}
public static int getUniqueEntityEggId() {
while(EntityList.getClassFromID(++eggIDCounter) != null) {}
eggIdList.add(eggIDCounter);
return eggIDCounter;
}
public static class EntityData {
public final String name;
public final int id, eggColor1, eggColor2;
public final boolean hasEgg;
EntityData(String name, int id, int eggColor1, int eggColor2, boolean hasEgg) {
this.name = name;
this.id = id;
this.eggColor1 = eggColor1;
this.eggColor2 = eggColor2;
this.hasEgg = hasEgg;
}
}
}

View File

@ -7,8 +7,8 @@ import java.util.function.Consumer;
import com.hbm.items.weapon.sedna.Crosshair;
import com.hbm.lib.HbmCollection.EnumGunManufacturer;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.util.ResourceLocation;
@ -37,7 +37,7 @@ public class GunConfiguration implements Cloneable {
public int durability;
//animations!
public HashMap<AnimType, BusAnimation> animations = new HashMap<AnimType, BusAnimation>();
public HashMap<GunAnimation, BusAnimation> animations = new HashMap<GunAnimation, BusAnimation>();
//lazy-ish loading for animations, required for loading animations from ResourceManager, since that occurs after we've initialised the guns
public Consumer<Void> loadAnimations;
public boolean animationsLoaded = false;

View File

@ -3,10 +3,15 @@ package com.hbm.handler.nei;
import com.hbm.blocks.ModBlocks;
import com.hbm.inventory.recipes.CompressorRecipes;
import net.minecraft.item.ItemStack;
public class CompressorHandler extends NEIUniversalHandler {
public CompressorHandler() {
super(ModBlocks.machine_compressor.getLocalizedName(), ModBlocks.machine_compressor, CompressorRecipes.getRecipes());
super(ModBlocks.machine_compressor.getLocalizedName(), new ItemStack[] {
new ItemStack(ModBlocks.machine_compressor),
new ItemStack(ModBlocks.machine_compressor_compact),
}, CompressorRecipes.getRecipes());
}
@Override

View File

@ -1,14 +1,29 @@
package com.hbm.items;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.HbmAnimationPacket;
import com.hbm.render.anim.BusAnimation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public interface IAnimatedItem {
public interface IAnimatedItem<T extends Enum<?>> {
/** Fetch the animation for a given type */
public BusAnimation getAnimation(T type, ItemStack stack);
/** Should a player holding this item aim it like a gun/bow? */
public boolean shouldPlayerModelAim(ItemStack stack);
// Runtime erasure means we have to explicitly give the class a second time :(
public Class<T> getEnum();
// Run a specified animation
public default void playAnimation(EntityPlayer player, T type) {
if(player instanceof EntityPlayerMP) {
PacketDispatcher.wrapper.sendTo(new HbmAnimationPacket(type.ordinal(), 0, 0), (EntityPlayerMP) player);
}
}
@SideOnly(Side.CLIENT)
public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack);
}

View File

@ -7,6 +7,7 @@ import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.render.anim.AnimationEnums.ToolAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.util.EntityDamageUtil;
@ -14,12 +15,9 @@ import com.hbm.util.EntityDamageUtil;
import api.hbm.block.IToolable;
import api.hbm.block.IToolable.ToolType;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -27,7 +25,7 @@ import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class ItemBoltgun extends Item implements IAnimatedItem {
public class ItemBoltgun extends Item implements IAnimatedItem<ToolAnimation> {
public ItemBoltgun() {
this.setMaxStackSize(1);
@ -73,13 +71,10 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
data.setFloat("size", 1F);
data.setByte("count", (byte)1);
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.height / 2 - entity.yOffset, entity.posZ), new TargetPoint(world.provider.dimensionId, entity.posX, entity.posY, entity.posZ, 50));
} else {
// doing this on the client outright removes the packet delay and makes the animation silky-smooth
NBTTagCompound d0 = new NBTTagCompound();
d0.setString("type", "anim");
d0.setString("mode", "generic");
MainRegistry.proxy.effectNT(d0);
playAnimation(player, ToolAnimation.SWING);
}
return true;
}
}
@ -110,10 +105,7 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
data.setByte("count", (byte)1);
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, x + fX + dir.offsetX * off, y + fY + dir.offsetY * off, z + fZ + dir.offsetZ * off), new TargetPoint(world.provider.dimensionId, x, y, z, 50));
NBTTagCompound d0 = new NBTTagCompound();
d0.setString("type", "anim");
d0.setString("mode", "generic");
PacketThreading.createSendToThreadedPacket(new AuxParticlePacketNT(d0, 0, 0, 0), (EntityPlayerMP) player);
playAnimation(player, ToolAnimation.SWING);
}
return false;
@ -123,11 +115,21 @@ public class ItemBoltgun extends Item implements IAnimatedItem {
}
@Override
@SideOnly(Side.CLIENT)
public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack) {
public Class<ToolAnimation> getEnum() {
return ToolAnimation.class;
}
@Override
public BusAnimation getAnimation(ToolAnimation type, ItemStack stack) {
return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence()
.addPos(1, 0, 1, 50)
.addPos(0, 0, 1, 100));
}
@Override
public boolean shouldPlayerModelAim(ItemStack stack) {
return false;
}
}

View File

@ -1,16 +1,19 @@
package com.hbm.items.tool;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.items.IAnimatedItem;
import com.hbm.items.IHeldSoundProvider;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.render.anim.AnimationEnums.ToolAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.HbmAnimations;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public class ItemChainsaw extends ItemToolAbilityFueled implements IHeldSoundProvider {
public class ItemChainsaw extends ItemToolAbilityFueled implements IHeldSoundProvider, IAnimatedItem<ToolAnimation> {
public ItemChainsaw(float damage, double movement, ToolMaterial material, EnumToolType type, int maxFuel, int consumption, int fillRate, FluidType... acceptedFuels) {
super(damage, movement, material, type, maxFuel, consumption, fillRate, acceptedFuels);
@ -25,11 +28,57 @@ public class ItemChainsaw extends ItemToolAbilityFueled implements IHeldSoundPro
if(stack.getItemDamage() >= stack.getMaxDamage())
return false;
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("type", "anim");
nbt.setString("mode", "sSwing");
PacketThreading.createSendToThreadedPacket(new AuxParticlePacketNT(nbt, 0, 0, 0), (EntityPlayerMP)entityLiving);
playAnimation((EntityPlayer) entityLiving, ToolAnimation.SWING);
return false;
}
@Override
public BusAnimation getAnimation(ToolAnimation type, ItemStack stack) {
int forward = 150;
int sideways = 100;
int retire = 200;
if(HbmAnimations.getRelevantAnim() == null) {
return new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence()
.addPos(0, 0, 90, forward)
.addPos(45, 0, 90, sideways)
.addPos(0, 0, 0, retire))
.addBus("SWING_TRANS", new BusAnimationSequence()
.addPos(0, 0, 3, forward)
.addPos(2, 0, 2, sideways)
.addPos(0, 0, 0, retire));
} else {
double[] rot = HbmAnimations.getRelevantTransformation("SWING_ROT");
double[] trans = HbmAnimations.getRelevantTransformation("SWING_TRANS");
if(System.currentTimeMillis() - HbmAnimations.getRelevantAnim().startMillis < 50) return null;
return new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence()
.addPos(rot[0], rot[1], rot[2], 0)
.addPos(0, 0, 90, forward)
.addPos(45, 0, 90, sideways)
.addPos(0, 0, 0, retire))
.addBus("SWING_TRANS", new BusAnimationSequence()
.addPos(trans[0], trans[1], trans[2], 0)
.addPos(0, 0, 3, forward)
.addPos(2, 0, 2, sideways)
.addPos(0, 0, 0, retire));
}
}
@Override
public Class<ToolAnimation> getEnum() {
return ToolAnimation.class;
}
@Override
public boolean shouldPlayerModelAim(ItemStack stack) {
return false;
}
}

View File

@ -1,19 +1,27 @@
package com.hbm.items.weapon;
import java.util.List;
import java.util.Random;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
import com.hbm.handler.threading.PacketThreading;
import com.hbm.items.IAnimatedItem;
import com.hbm.items.IEquipReceiver;
import com.hbm.items.tool.ItemSwordAbility;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.render.anim.AnimationEnums.ToolAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.HbmAnimations;
import com.hbm.util.ShadyUtil;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.AttributeModifier;
@ -25,9 +33,10 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver {
public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver, IAnimatedItem<ToolAnimation> {
public ItemCrucible(float damage, double movement, ToolMaterial material) {
super(damage, movement, material);
@ -44,10 +53,7 @@ public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver {
World world = player.worldObj;
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.cDeploy", 1.0F, 1.0F);
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("type", "anim");
nbt.setString("mode", "crucible");
PacketThreading.createSendToThreadedPacket(new AuxParticlePacketNT(nbt, 0, 0, 0), (EntityPlayerMP)player);
playAnimation(player, ToolAnimation.EQUIP);
}
}
@ -64,10 +70,7 @@ public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver {
if(stack.getItemDamage() >= stack.getMaxDamage())
return false;
NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("type", "anim");
nbt.setString("mode", "cSwing");
PacketThreading.createSendToThreadedPacket(new AuxParticlePacketNT(nbt, 0, 0, 0), (EntityPlayerMP)entityLiving);
playAnimation((EntityPlayerMP)entityLiving, ToolAnimation.SWING);
return false;
}
@ -132,4 +135,58 @@ public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver {
list.add(charge);
}
@Override
public BusAnimation getAnimation(ToolAnimation type, ItemStack stack) {
/* crucible deploy */
if(type == ToolAnimation.EQUIP) {
return new BusAnimation()
.addBus("GUARD_ROT", new BusAnimationSequence()
.addPos(90, 0, 1, 0)
.addPos(90, 0, 1, 800)
.addPos(0, 0, 1, 50));
}
/* crucible swing */
if(type == ToolAnimation.SWING) {
if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) {
int offset = itemRand.nextInt(80) - 20;
playSwing(0.8F + itemRand.nextFloat() * 0.2F);
return new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence()
.addPos(90 - offset, 90 - offset, 35, 75)
.addPos(90 + offset, 90 - offset, -45, 150)
.addPos(0, 0, 0, 500))
.addBus("SWING_TRANS", new BusAnimationSequence()
.addPos(-3, 0, 0, 75)
.addPos(8, 0, 0, 150)
.addPos(0, 0, 0, 500));
}
}
return null;
}
// could do this better, but this preserves existing behaviour the closest with the least amount
// of effort, without crashing servers (I'm learning my lesson :o_ )
@SideOnly(Side.CLIENT)
private void playSwing(float pitchProbablyIDontFuckingCare) {
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), pitchProbablyIDontFuckingCare));
}
@Override
public Class<ToolAnimation> getEnum() {
return ToolAnimation.class;
}
@Override
public boolean shouldPlayerModelAim(ItemStack stack) {
return false;
}
}

View File

@ -11,8 +11,8 @@ import com.hbm.items.weapon.sedna.factory.GunStateDecider;
import com.hbm.items.weapon.sedna.factory.Lego;
import com.hbm.items.weapon.sedna.hud.IHUDComponent;
import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
@ -25,7 +25,7 @@ import net.minecraft.util.ResourceLocation;
* */
public class GunConfig {
public List<SmokeNode> smokeNodes = new ArrayList();
public List<SmokeNode> smokeNodes = new ArrayList<>();
public static final String O_RECEIVERS = "O_RECEIVERS";
public static final String F_DURABILITY = "F_DURABILITY";
@ -84,7 +84,7 @@ public class GunConfig {
/** The engine for the state machine that determines the gun's overall behavior */
protected BiConsumer<ItemStack, LambdaContext> decider_DNA;
/** Lambda that returns the relevant animation for the given params */
protected BiFunction<ItemStack, AnimType, BusAnimation> animations_DNA;
protected BiFunction<ItemStack, GunAnimation, BusAnimation> animations_DNA;
protected IHUDComponent[] hudComponents_DNA;
/* GETTERS */
@ -115,8 +115,8 @@ public class GunConfig {
public BiConsumer<ItemStack, LambdaContext> getDecider(ItemStack stack) { return WeaponModManager.eval(this.decider_DNA, stack, CON_DECIDER, this, this.index); }
public BiFunction<ItemStack, AnimType, BusAnimation> getAnims(ItemStack stack) { return WeaponModManager.eval(this.animations_DNA, stack, FUN_ANIMNATIONS, this, this.index); }
public IHUDComponent[] getHUDComponents(ItemStack stack) { return WeaponModManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this, this.index); }
public BiFunction<ItemStack, GunAnimation, BusAnimation> getAnims(ItemStack stack) { return WeaponModManager.eval(this.animations_DNA, stack, FUN_ANIMNATIONS, this, this.index); }
public IHUDComponent[] getHUDComponents(ItemStack stack) { return WeaponModManager.eval(this.hudComponents_DNA, stack, O_HUDCOMPONENTS, this, this.index); }
/* SETTERS */
@ -151,8 +151,8 @@ public class GunConfig {
public GunConfig decider(BiConsumer<ItemStack, LambdaContext> lambda) { this.decider_DNA = lambda; return this; }
//client
public GunConfig anim(BiFunction<ItemStack, AnimType, BusAnimation> lambda) { this.animations_DNA = lambda; return this; }
public GunConfig hud(IHUDComponent... components) { this.hudComponents_DNA = components; return this; }
public GunConfig anim(BiFunction<ItemStack, GunAnimation, BusAnimation> lambda) { this.animations_DNA = lambda; return this; }
public GunConfig hud(IHUDComponent... components) { this.hudComponents_DNA = components; return this; }
/** Standard package for keybind handling and decider using LEGO prefabs: Primary fire on LMB,
* reload on R, aiming on MMB and the standard decider which includes jamming and auto fire handling*/

View File

@ -24,8 +24,8 @@ import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.GunAnimationPacket;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.packet.toclient.HbmAnimationPacket;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.util.RenderScreenOverlay;
import com.hbm.sound.AudioWrapper;
import com.hbm.util.BobMathUtil;
@ -247,8 +247,8 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
@Override
public void onEquip(EntityPlayer player, ItemStack stack) {
for(int i = 0; i < this.configs_DNA.length; i++) {
if(this.getLastAnim(stack, i) == AnimType.EQUIP && this.getAnimTimer(stack, i) < 5) continue;
playAnimation(player, stack, AnimType.EQUIP, i);
if(this.getLastAnim(stack, i) == GunAnimation.EQUIP && this.getAnimTimer(stack, i) < 5) continue;
playAnimation(player, stack, GunAnimation.EQUIP, i);
this.setPrimary(stack, i, false);
this.setSecondary(stack, i, false);
this.setTertiary(stack, i, false);
@ -256,9 +256,9 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
}
}
public static void playAnimation(EntityPlayer player, ItemStack stack, AnimType type, int index) {
public static void playAnimation(EntityPlayer player, ItemStack stack, GunAnimation type, int index) {
if(player instanceof EntityPlayerMP) {
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(type.ordinal(), 0, index), (EntityPlayerMP) player);
PacketDispatcher.wrapper.sendTo(new HbmAnimationPacket(type.ordinal(), 0, index), (EntityPlayerMP) player);
setLastAnim(stack, index, type);
setAnimTimer(stack, index, 0);
}
@ -327,7 +327,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
this.setState(stack, i, GunState.DRAWING);
this.setTimer(stack, i, configs[i].getDrawDuration(stack));
}
this.setLastAnim(stack, i, AnimType.CYCLE); //prevents new guns from initializing with DRAWING, 0
this.setLastAnim(stack, i, GunAnimation.CYCLE); //prevents new guns from initializing with DRAWING, 0
}
this.setIsAiming(stack, false);
this.setReloadCancel(stack, false);
@ -371,8 +371,8 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
public static boolean getIsLockedOn(ItemStack stack) { return getValueBool(stack, KEY_LOCKEDON); }
public static void setIsLockedOn(ItemStack stack, boolean value) { setValueBool(stack, KEY_LOCKEDON, value); }
// ANIM TRACKING //
public static AnimType getLastAnim(ItemStack stack, int index) { return EnumUtil.grabEnumSafely(AnimType.class, getValueInt(stack, KEY_LASTANIM + index)); }
public static void setLastAnim(ItemStack stack, int index, AnimType value) { setValueInt(stack, KEY_LASTANIM + index, value.ordinal()); }
public static GunAnimation getLastAnim(ItemStack stack, int index) { return EnumUtil.grabEnumSafely(GunAnimation.class, getValueInt(stack, KEY_LASTANIM + index)); }
public static void setLastAnim(ItemStack stack, int index, GunAnimation value) { setValueInt(stack, KEY_LASTANIM + index, value.ordinal()); }
public static int getAnimTimer(ItemStack stack, int index) { return getValueInt(stack, KEY_ANIMTIMER + index); }
public static void setAnimTimer(ItemStack stack, int index, int value) { setValueInt(stack, KEY_ANIMTIMER + index, value); }

View File

@ -7,9 +7,9 @@ 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.mags.IMagazine;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -69,19 +69,19 @@ public class GunStateDecider {
if(!cancel && mag.canReload(stack, ctx.inventory)) {
ItemGunBaseNT.setState(stack, gunIndex, GunState.RELOADING);
ItemGunBaseNT.setTimer(stack, gunIndex, rec.getReloadCycleDuration(stack));
ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD_CYCLE, gunIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.RELOAD_CYCLE, gunIndex);
//if no more reloading can be done, go idle
} else {
if(getStandardJamChance(stack, cfg, gunIndex) > entity.getRNG().nextFloat()) {
ItemGunBaseNT.setState(stack, gunIndex, GunState.JAMMED);
ItemGunBaseNT.setTimer(stack, gunIndex, rec.getJamDuration(stack));
ItemGunBaseNT.playAnimation(player, stack, AnimType.JAMMED, gunIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.JAMMED, gunIndex);
} else {
ItemGunBaseNT.setState(stack, gunIndex, GunState.DRAWING);
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);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.RELOAD_END, gunIndex);
}
ItemGunBaseNT.setReloadCancel(stack, false);
@ -124,7 +124,7 @@ public class GunStateDecider {
//if refire after dry is allowed, switch to COOLDOWN which will trigger a refire, otherwise switch to DRAWING
ItemGunBaseNT.setState(stack, gunIndex, rec.getRefireAfterDry(stack) ? GunState.COOLDOWN : GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, gunIndex, rec.getDelayAfterDryFire(stack));
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, gunIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.CYCLE_DRY, gunIndex);
//if not, revert to idle
} else {
ItemGunBaseNT.setState(stack, gunIndex, GunState.IDLE);
@ -143,7 +143,7 @@ public class GunStateDecider {
mag.setAmountBeforeReload(stack, loaded);
ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.RELOADING);
ItemGunBaseNT.setTimer(stack, ctx.configIndex, rec.getReloadBeginDuration(stack) + (loaded <= 0 ? rec.getReloadCockOnEmptyPre(stack) : 0));
ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD, ctx.configIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.RELOAD, ctx.configIndex);
} else {
ItemGunBaseNT.setState(stack, gunIndex, GunState.IDLE);
ItemGunBaseNT.setTimer(stack, gunIndex, 0);

View File

@ -25,9 +25,9 @@ import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.main.MainRegistry;
import com.hbm.particle.helper.BlackPowderCreator;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -66,10 +66,10 @@ public class Lego {
mag.setAmountBeforeReload(stack, loaded);
ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.RELOADING);
ItemGunBaseNT.setTimer(stack, ctx.configIndex, rec.getReloadBeginDuration(stack) + (loaded <= 0 ? rec.getReloadCockOnEmptyPre(stack) : 0));
ItemGunBaseNT.playAnimation(player, stack, AnimType.RELOAD, ctx.configIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.RELOAD, ctx.configIndex);
if(ctx.config.getReloadChangesType(stack)) mag.initNewType(stack, ctx.inventory);
} else {
ItemGunBaseNT.playAnimation(player, stack, AnimType.INSPECT, ctx.configIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.INSPECT, ctx.configIndex);
if(!ctx.config.getInspectCancel(stack)) {
ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, ctx.configIndex, ctx.config.getInspectDuration(stack));
@ -105,7 +105,7 @@ public class Lego {
} else {
if(rec.getDoesDryFire(stack)) {
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, index);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.CYCLE_DRY, index);
ItemGunBaseNT.setState(stack, index, rec.getRefireAfterDry(stack) ? GunState.COOLDOWN : GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterDryFire(stack));
}
@ -187,19 +187,19 @@ 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, true);
doStandardFire(stack, ctx, GunAnimation.CYCLE, true);
};
/** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg, ignores wear */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_NOWEAR_FIRE = (stack, ctx) -> {
doStandardFire(stack, ctx, AnimType.CYCLE, false);
doStandardFire(stack, ctx, GunAnimation.CYCLE, false);
};
/** Spawns an EntityBulletBaseMK4 with the loaded bulletcfg, then resets lockon progress */
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_LOCKON_FIRE = (stack, ctx) -> {
doStandardFire(stack, ctx, AnimType.CYCLE, true);
doStandardFire(stack, ctx, GunAnimation.CYCLE, true);
ItemGunBaseNT.setIsLockedOn(stack, false);
};
public static void doStandardFire(ItemStack stack, LambdaContext ctx, AnimType anim, boolean calcWear) {
public static void doStandardFire(ItemStack stack, LambdaContext ctx, GunAnimation anim, boolean calcWear) {
EntityLivingBase entity = ctx.entity;
EntityPlayer player = ctx.getPlayer();
int index = ctx.configIndex;
@ -303,7 +303,7 @@ public class Lego {
}
/** anims for the DEBUG revolver, mostly a copy of the li'lpip but with some fixes regarding the cylinder movement */
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_DEBUG_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_DEBUG_ANIMS = (stack, type) -> {
switch(type) {
case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250))

View File

@ -17,10 +17,10 @@ import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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;
@ -84,7 +84,7 @@ public class XFactory10ga {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_DOUBLE_BARREL_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_DOUBLE_BARREL_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));

View File

@ -32,10 +32,10 @@ import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.BobMathUtil;
import com.hbm.util.TrackerUtil;
import com.hbm.util.Vec3NT;
@ -429,7 +429,7 @@ public class XFactory12ga {
ItemGunBaseNT.setTimer(stack, index, 20);
} else {
if(rec.getDoesDryFire(stack)) {
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE_DRY, index);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.CYCLE_DRY, index);
ItemGunBaseNT.setState(stack, index, GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, index, rec.getDelayAfterDryFire(stack));
}
@ -440,7 +440,7 @@ public class XFactory12ga {
}
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MARESLEG_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_MARESLEG_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));
@ -483,7 +483,7 @@ public class XFactory12ga {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MARESLEG_SHORT_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, 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));
@ -509,7 +509,7 @@ public class XFactory12ga {
};
/** This fucking sucks */
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LIBERATOR_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_LIBERATOR_ANIMS = (stack, type) -> {
int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory);
switch(type) {
case EQUIP: return new BusAnimation()
@ -606,7 +606,7 @@ public class XFactory12ga {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_SPAS_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, 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));
@ -625,7 +625,7 @@ public class XFactory12ga {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_SHREDDER_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_SHREDDER_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));
@ -651,7 +651,7 @@ public class XFactory12ga {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_SEXY_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_SEXY_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN));

View File

@ -20,10 +20,10 @@ import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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;
@ -71,7 +71,7 @@ public class XFactory22lr {
ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.25));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_AM180_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_AM180_ANIMS = (stack, type) -> {
if(ClientConfig.GUN_ANIMS_LEGACY.get()) {
switch(type) {
case EQUIP: return new BusAnimation()

View File

@ -14,10 +14,10 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationKeyframe.IType;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.item.ItemStack;
@ -88,7 +88,7 @@ public class XFactory357 {
ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.75));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_ATLAS_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_ATLAS_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN));
@ -120,7 +120,7 @@ public class XFactory357 {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_DANI_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_DANI_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation().addBus("EQUIP", new BusAnimationSequence().addPos(360 * 3, 0, 0, 1000, IType.SIN_DOWN));
}

View File

@ -18,10 +18,10 @@ import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
@ -93,7 +93,7 @@ public class XFactory35800 {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_ABERRATOR = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_ABERRATOR = (stack, type) -> {
boolean aim = ItemGunBaseNT.getIsAiming(stack);
int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, null);
switch(type) {

View File

@ -30,10 +30,10 @@ import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.EntityDamageUtil;
import com.hbm.util.TrackerUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
@ -184,7 +184,7 @@ public class XFactory40mm {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_FLAREGUN_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_FLAREGUN_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN));
@ -207,7 +207,7 @@ public class XFactory40mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CONGOLAKE_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_CONGOLAKE_ANIMS = (stack, type) -> {
int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory);
switch(type) {
case EQUIP: return ResourceManager.congolake_anim.get("Equip");

View File

@ -25,10 +25,10 @@ import com.hbm.items.weapon.sedna.mods.WeaponModManager;
import com.hbm.lib.RefStrings;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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;
@ -156,11 +156,11 @@ public class XFactory44 {
};
public static BiConsumer<ItemStack, LambdaContext> SMACK_A_FUCKER = (stack, ctx) -> {
if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE || ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) == AnimType.CYCLE) {
if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE || ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) == GunAnimation.CYCLE) {
ItemGunBaseNT.setIsAiming(stack, false);
ItemGunBaseNT.setState(stack, ctx.configIndex, GunState.DRAWING);
ItemGunBaseNT.setTimer(stack, ctx.configIndex, ctx.config.getInspectDuration(stack));
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.INSPECT, ctx.configIndex);
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, GunAnimation.INSPECT, ctx.configIndex);
}
};
@ -176,7 +176,7 @@ public class XFactory44 {
ItemGunBaseNT.setupRecoil(5, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_HENRY_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_HENRY_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, -3, 350, IType.SIN_DOWN))
@ -219,7 +219,7 @@ public class XFactory44 {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_NOPIP_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_NOPIP_ANIMS = (stack, type) -> {
switch(type) {
case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, 0, 50).addPos(0, 0, -3, 50).addPos(0, 0, 0, 250))
@ -244,7 +244,7 @@ public class XFactory44 {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LILMAC_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_LILMAC_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation().addBus("SPIN", new BusAnimationSequence().addPos(-360, 0, 0, 350));
}
@ -252,7 +252,7 @@ public class XFactory44 {
return LAMBDA_NOPIP_ANIMS.apply(stack, type);
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_HANGMAN_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_HANGMAN_ANIMS = (stack, type) -> {
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 CYCLE: return new BusAnimation()

View File

@ -21,10 +21,10 @@ 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.AnimationEnums.GunAnimation;
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;
@ -135,7 +135,7 @@ public class XFactory50 {
ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5), (float) (ctx.getPlayer().getRNG().nextGaussian() * 0.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_AMAT_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_AMAT_ANIMS = (stack, type) -> {
double turn = -60;
double pullAmount = -2.5;
double side = 4;
@ -173,7 +173,7 @@ public class XFactory50 {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_M2_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_M2_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(80, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL));

View File

@ -25,10 +25,10 @@ import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
@ -139,7 +139,7 @@ public class XFactory556mm {
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_STG = (stack, ctx) -> { };
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_G3_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_G3_ANIMS = (stack, type) -> {
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0;
switch(type) {
case EQUIP: return new BusAnimation()
@ -210,7 +210,7 @@ public class XFactory556mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_STG77_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_STG77_ANIMS = (stack, type) -> {
if(ClientConfig.GUN_ANIMS_LEGACY.get()) {
switch(type) {
case EQUIP: return new BusAnimation()

View File

@ -17,9 +17,9 @@ import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.BusAnimationSequence;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
@ -75,7 +75,7 @@ public class XFactory75Bolt {
ItemGunBaseNT.setupRecoil((float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5), (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_BOLTER_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_BOLTER_ANIMS = (stack, type) -> {
switch(type) {
case CYCLE: return new BusAnimation()
.addBus("RECOIL", new BusAnimationSequence().addPos(1, 0, 0, 25).addPos(0, 0, 0, 75));

View File

@ -20,10 +20,10 @@ import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.main.MainRegistry;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.item.ItemStack;
@ -155,7 +155,7 @@ public class XFactory762mm {
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_LACUNAE = (stack, ctx) -> { };
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CARBINE_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_CARBINE_ANIMS = (stack, type) -> {
int ammo = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory);
switch(type) {
case EQUIP: return new BusAnimation()
@ -187,7 +187,7 @@ public class XFactory762mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MINIGUN_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_MINIGUN_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_FULL));
@ -207,7 +207,7 @@ public class XFactory762mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MAS36_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_MAS36_ANIMS = (stack, type) -> {
int mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory);
double turn = -90;
double pullAmount = ItemGunBaseNT.getIsAiming(stack) ? -1F : -1.5D;

View File

@ -22,10 +22,10 @@ import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.SpentCasing.CasingType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.EntityDamageUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
@ -138,10 +138,10 @@ public class XFactory9mm {
};
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_FIRE_LAG = (stack, ctx) -> {
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
EntityPlayer player = ctx.getPlayer();
if(player != null && type == AnimType.INSPECT && timer > 20 && timer < 60) {
if(player != null && type == GunAnimation.INSPECT && timer > 20 && timer < 60) {
int index = ctx.configIndex;
Receiver primary = ctx.config.getReceivers(stack)[0];
IMagazine mag = primary.getMagazine(stack);
@ -154,7 +154,7 @@ public class XFactory9mm {
ItemGunBaseNT.setTimer(stack, index, primary.getDelayAfterFire(stack));
EntityDamageUtil.attackEntityFromNT(player, BulletConfig.getDamage(player, player, DamageClass.PHYSICAL), 1_000F, true, false, 1D, 5F, 0F);
} else {
Lego.doStandardFire(stack, ctx, AnimType.CYCLE, true);
Lego.doStandardFire(stack, ctx, GunAnimation.CYCLE, true);
}
};
@ -162,7 +162,7 @@ public class XFactory9mm {
Lego.handleStandardSmoke(ctx.entity, stack, 2000, 0.05D, 1.1D, ctx.configIndex);
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_GREASEGUN_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_GREASEGUN_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))
@ -194,7 +194,7 @@ public class XFactory9mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LAG_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_LAG_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-90, 0, 0, 0).addPos(0, 0, 0, 350, IType.SIN_DOWN));
@ -211,7 +211,7 @@ public class XFactory9mm {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_UZI_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, 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))

View File

@ -20,10 +20,10 @@ import com.hbm.items.weapon.sedna.mags.MagazineBelt;
import com.hbm.items.weapon.sedna.mags.MagazineInfinite;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.main.MainRegistry;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.DamageResistanceHandler.DamageClass;
import com.hbm.util.Vec3NT;
@ -143,14 +143,14 @@ public class XFactoryAccelerator {
}
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_TAU_PRIMARY_RELEASE = (stack, ctx) -> {
if(ctx.getPlayer() == null || ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.CYCLE) return;
if(ctx.getPlayer() == null || ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != GunAnimation.CYCLE) return;
ctx.getPlayer().worldObj.playSoundEffect(ctx.getPlayer().posX, ctx.getPlayer().posY, ctx.getPlayer().posZ, "hbm:weapon.fire.tauRelease", 1F, 1F);
};
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_TAU_SECONDARY_PRESS = (stack, ctx) -> {
if(ctx.getPlayer() == null) return;
if(ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) <= 0) return;
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex);
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, GunAnimation.SPINUP, ctx.configIndex);
tauChargeMag.getMagType(stack); //caches the last loaded ammo
};
@ -158,8 +158,8 @@ public class XFactoryAccelerator {
if(ctx.getPlayer() == null) return;
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
if(timer >= 10 && ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) == AnimType.SPINUP) {
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.ALT_CYCLE, ctx.configIndex);
if(timer >= 10 && ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) == GunAnimation.SPINUP) {
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, GunAnimation.ALT_CYCLE, ctx.configIndex);
int unitsUsed = 1 + Math.min(12, timer / 10);
EntityLivingBase entity = ctx.entity;
@ -181,7 +181,7 @@ public class XFactoryAccelerator {
ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear * unitsUsed, ctx.config.getDurability(stack)));
} else {
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.CYCLE_DRY, ctx.configIndex);
ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, GunAnimation.CYCLE_DRY, ctx.configIndex);
}
};
@ -212,7 +212,7 @@ public class XFactoryAccelerator {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_TAU_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_TAU_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL));
@ -233,14 +233,14 @@ public class XFactoryAccelerator {
return null;
};
public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_COILGUN_ANIMS = (stack, type) -> {
if(type == AnimType.EQUIP) return new BusAnimation().addBus("RELOAD", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(0, 0, 0, 250));
if(type == AnimType.CYCLE) return new BusAnimation().addBus("RECOIL", new BusAnimationSequence().addPos(ItemGunBaseNT.getIsAiming(stack) ? 0.5 : 1, 0, 0, 100).addPos(0, 0, 0, 200));
if(type == AnimType.RELOAD) return new BusAnimation().addBus("RELOAD", new BusAnimationSequence().addPos(1, 0, 0, 250).addPos(1, 0, 0, 500).addPos(0, 0, 0, 250));
public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_COILGUN_ANIMS = (stack, type) -> {
if(type == GunAnimation.EQUIP) return new BusAnimation().addBus("RELOAD", new BusAnimationSequence().addPos(1, 0, 0, 0).addPos(0, 0, 0, 250));
if(type == GunAnimation.CYCLE) return new BusAnimation().addBus("RECOIL", new BusAnimationSequence().addPos(ItemGunBaseNT.getIsAiming(stack) ? 0.5 : 1, 0, 0, 100).addPos(0, 0, 0, 200));
if(type == GunAnimation.RELOAD) return new BusAnimation().addBus("RELOAD", new BusAnimationSequence().addPos(1, 0, 0, 250).addPos(1, 0, 0, 500).addPos(0, 0, 0, 250));
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_NI4NI_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_NI4NI_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-360 * 2, 0, 0, 500));

View File

@ -13,10 +13,10 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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;
@ -45,7 +45,7 @@ public class XFactoryBlackPowder {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_PEPPERBOX_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_PEPPERBOX_ANIMS = (stack, type) -> {
switch(type) {
case CYCLE: return new BusAnimation()
.addBus("ROTATE", new BusAnimationSequence().addPos(0, 0, 0, 1025).addPos(60, 0, 0, 250))

View File

@ -28,10 +28,10 @@ import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.main.MainRegistry;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.item.ItemStack;
@ -176,7 +176,7 @@ public class XFactoryCatapult {
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_FATMAN = (stack, ctx) -> { };
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_FATMAN_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_FATMAN_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN));

View File

@ -26,10 +26,10 @@ import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.DamageResistanceHandler.DamageClass;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -226,7 +226,7 @@ public class XFactoryEnergy {
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_ENERGY = (stack, ctx) -> { };
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_TESLA_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_TESLA_ANIMS = (stack, type) -> {
int amount = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory);
switch(type) {
case EQUIP: return new BusAnimation()
@ -245,7 +245,7 @@ public class XFactoryEnergy {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LASER_PISTOL = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_LASER_PISTOL = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));
@ -266,7 +266,7 @@ public class XFactoryEnergy {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LASRIFLE = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_LASRIFLE = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));

View File

@ -22,10 +22,10 @@ import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.particle.helper.FlameCreator;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.DamageResistanceHandler.DamageClass;
import net.minecraft.block.Block;
@ -180,7 +180,7 @@ public class XFactoryFlamer {
).setUnlocalizedName("gun_chemthrower");
}
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_FLAMER_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_FLAMER_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));
@ -193,7 +193,7 @@ public class XFactoryFlamer {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CHEMTHROWER_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_CHEMTHROWER_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));

View File

@ -22,10 +22,10 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.WeaponQuality;
import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmoSecret;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.packet.toclient.AuxParticlePacketNT;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.ContaminationUtil;
import com.hbm.util.EntityDamageUtil;
import com.hbm.util.Vec3NT;
@ -119,17 +119,17 @@ public class XFactoryFolly {
if(ItemGunBaseNT.getState(stack, ctx.configIndex) == GunState.IDLE) {
boolean wasAiming = ItemGunBaseNT.getIsAiming(stack);
ItemGunBaseNT.setIsAiming(stack, !wasAiming);
if(!wasAiming) ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, AnimType.SPINUP, ctx.configIndex);
if(!wasAiming) ItemGunBaseNT.playAnimation(ctx.getPlayer(), stack, GunAnimation.SPINUP, ctx.configIndex);
}
};
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_FIRE = (stack, ctx) -> {
Lego.doStandardFire(stack, ctx, AnimType.CYCLE, false);
Lego.doStandardFire(stack, ctx, GunAnimation.CYCLE, false);
};
public static BiFunction<ItemStack, LambdaContext, Boolean> LAMBDA_CAN_FIRE = (stack, ctx) -> {
if(!ItemGunBaseNT.getIsAiming(stack)) return false;
if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != AnimType.SPINUP) return false;
if(ItemGunBaseNT.getLastAnim(stack, ctx.configIndex) != GunAnimation.SPINUP) return false;
if(ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex) < 100) return false;
return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack, ctx.inventory) > 0;
};
@ -138,7 +138,7 @@ public class XFactoryFolly {
ItemGunBaseNT.setupRecoil(25, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_FOLLY_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_FOLLY_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-60, 0, 0, 0).addPos(5, 0, 0, 1500, IType.SIN_DOWN).addPos(0, 0, 0, 500, IType.SIN_FULL));

View File

@ -26,10 +26,10 @@ import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.EntityDamageUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
@ -225,7 +225,7 @@ public class XFactoryRocket {
public static BiConsumer<ItemStack, LambdaContext> LAMBDA_RECOIL_ROCKET = (stack, ctx) -> { };
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_PANZERSCHRECK_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_PANZERSCHRECK_ANIMS = (stack, type) -> {
boolean empty = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory) <= 0;
switch(type) {
case EQUIP: return new BusAnimation()
@ -242,7 +242,7 @@ public class XFactoryRocket {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_QUADRO_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_QUADRO_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));
@ -258,7 +258,7 @@ public class XFactoryRocket {
return null;
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MISSILE_LAUNCHER_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_MISSILE_LAUNCHER_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 1000, IType.SIN_DOWN));

View File

@ -28,10 +28,10 @@ import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.particle.helper.ExplosionCreator;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.tileentity.IRepairable;
import com.hbm.tileentity.IRepairable.EnumExtinguishType;
import com.hbm.util.CompatExternal;
@ -281,7 +281,7 @@ public class XFactoryTool {
ItemGunBaseNT.setupRecoil(10, (float) (ctx.getPlayer().getRNG().nextGaussian() * 1.5));
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CT_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_CT_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation()
.addBus("EQUIP", new BusAnimationSequence().addPos(-45, 0, 0, 0).addPos(0, 0, 0, 500, IType.SIN_DOWN));

View File

@ -11,7 +11,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT;
import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.items.weapon.sedna.mags.MagazineFluid;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import api.hbm.fluidmk2.IFillableItem;
import net.minecraft.entity.EntityLivingBase;
@ -81,7 +81,7 @@ public class ItemGunChemthrower extends ItemGunBaseNT implements IFillableItem {
EntityLivingBase entity = ctx.entity;
EntityPlayer player = ctx.getPlayer();
int index = ctx.configIndex;
ItemGunBaseNT.playAnimation(player, stack, AnimType.CYCLE, ctx.configIndex);
ItemGunBaseNT.playAnimation(player, stack, GunAnimation.CYCLE, ctx.configIndex);
Receiver primary = ctx.config.getReceivers(stack)[0];
IMagazine mag = primary.getMagazine(stack);

View File

@ -4,10 +4,10 @@ import java.util.function.BiFunction;
import com.hbm.items.weapon.sedna.GunConfig;
import com.hbm.items.weapon.sedna.factory.XFactory556mm;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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;
@ -24,7 +24,7 @@ public class WeapnModG3SawedOff extends WeaponModBase {
return base;
}
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_G3_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_G3_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation().addBus("EQUIP", new BusAnimationSequence().addPos(45, 0, 0, 0).addPos(0, 0, 0, 250, IType.SIN_FULL));
}

View File

@ -9,10 +9,10 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.Orchestras;
import com.hbm.items.weapon.sedna.factory.XFactory44;
import com.hbm.items.weapon.sedna.factory.XFactory762mm;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.EntityDamageUtil;
import net.minecraft.block.Block;
@ -40,10 +40,10 @@ public class WeaponModCarbineBayonet extends WeaponModBase {
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_CARBINE = (stack, ctx) -> {
EntityLivingBase entity = ctx.entity;
if(entity.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
if(type == AnimType.INSPECT) {
if(type == GunAnimation.INSPECT) {
if(timer == 15 && ctx.getPlayer() != null) {
MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D);
@ -67,7 +67,7 @@ public class WeaponModCarbineBayonet extends WeaponModBase {
Orchestras.ORCHESTRA_CARBINE.accept(stack, ctx);
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_CARBINE_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_CARBINE_ANIMS = (stack, type) -> {
switch(type) {
case INSPECT: return new BusAnimation()
.addBus("STAB", new BusAnimationSequence().addPos(0, 1, -2, 250, IType.SIN_DOWN).hold(250).addPos(0, 1, 5, 250, IType.SIN_UP).hold(250).addPos(0, 0, 0, 500, IType.SIN_FULL));

View File

@ -9,7 +9,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.Orchestras;
import com.hbm.particle.SpentCasing;
import com.hbm.particle.helper.CasingCreator;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
@ -34,11 +34,11 @@ public class WeaponModGreasegun extends WeaponModBase {
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_GREASEGUN = (stack, ctx) -> {
EntityLivingBase entity = ctx.entity;
if(entity.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
boolean aiming = ItemGunBaseNT.getIsAiming(stack);
if(type == AnimType.CYCLE) {
if(type == GunAnimation.CYCLE) {
if(timer == 1) {
SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory);
if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -7.5F + (float)entity.getRNG().nextGaussian() * 5F, 12F + (float)entity.getRNG().nextGaussian() * 5F, casing.getName());

View File

@ -8,10 +8,10 @@ import com.hbm.items.weapon.sedna.factory.XFactory12ga;
import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.items.weapon.sedna.mags.MagazineFullReload;
import com.hbm.items.weapon.sedna.mags.MagazineSingleReload;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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;
@ -35,7 +35,7 @@ public class WeaponModLiberatorSpeedloader extends WeaponModBase {
return base;
}
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_LIBERATOR_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_LIBERATOR_ANIMS = (stack, type) -> {
switch(type) {
case RELOAD: return new BusAnimation()
.addBus("LATCH", new BusAnimationSequence().addPos(15, 0, 0, 100))

View File

@ -9,10 +9,10 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.Orchestras;
import com.hbm.items.weapon.sedna.factory.XFactory44;
import com.hbm.items.weapon.sedna.factory.XFactory762mm;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.EntityDamageUtil;
import net.minecraft.block.Block;
@ -40,10 +40,10 @@ public class WeaponModMASBayonet extends WeaponModBase {
public static BiConsumer<ItemStack, LambdaContext> ORCHESTRA_MAS36 = (stack, ctx) -> {
EntityLivingBase entity = ctx.entity;
if(entity.worldObj.isRemote) return;
AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
GunAnimation type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex);
int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex);
if(type == AnimType.INSPECT) {
if(type == GunAnimation.INSPECT) {
if(timer == 15 && ctx.getPlayer() != null) {
MovingObjectPosition mop = EntityDamageUtil.getMouseOver(ctx.getPlayer(), 3.0D);
@ -67,7 +67,7 @@ public class WeaponModMASBayonet extends WeaponModBase {
Orchestras.ORCHESTRA_MAS36.accept(stack, ctx);
};
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_MAS36_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_MAS36_ANIMS = (stack, type) -> {
switch(type) {
case INSPECT: return new BusAnimation()
.addBus("STAB", new BusAnimationSequence().addPos(0, 1, -2, 250, IType.SIN_DOWN).hold(250).addPos(0, 1, 5, 250, IType.SIN_UP).hold(250).addPos(0, 0, 0, 500, IType.SIN_FULL));

View File

@ -10,10 +10,10 @@ import com.hbm.items.weapon.sedna.Receiver;
import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext;
import com.hbm.items.weapon.sedna.factory.Lego;
import com.hbm.items.weapon.sedna.factory.XFactoryRocket;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
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 com.hbm.util.EntityDamageUtil;
import com.hbm.util.DamageResistanceHandler.DamageClass;
@ -32,7 +32,7 @@ public class WeaponModPanzerschreckSawedOff extends WeaponModBase {
return base;
}
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, AnimType, BusAnimation> LAMBDA_PANZERSCHRECK_ANIMS = (stack, type) -> {
@SuppressWarnings("incomplete-switch") public static BiFunction<ItemStack, GunAnimation, BusAnimation> LAMBDA_PANZERSCHRECK_ANIMS = (stack, type) -> {
switch(type) {
case EQUIP: return new BusAnimation().addBus("EQUIP", new BusAnimationSequence().addPos(60, 0, 0, 0).addPos(0, 0, 0, 250, IType.SIN_DOWN));
}

View File

@ -1788,105 +1788,6 @@ public class ClientProxy extends ServerProxy {
Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z));
}
if("anim".equals(type)) {
String mode = data.getString("mode");
/* crucible deploy */
if("crucible".equals(mode) && player.getHeldItem() != null) {
BusAnimation animation = new BusAnimation()
.addBus("GUARD_ROT", new BusAnimationSequence()
.addPos(90, 0, 1, 0)
.addPos(90, 0, 1, 800)
.addPos(0, 0, 1, 50));
String id = ModItems.crucible.getUnlocalizedName();
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(id, System.currentTimeMillis(), animation, null);
}
/* crucible swing */
if("cSwing".equals(mode)) {
if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) {
int offset = rand.nextInt(80) - 20;
BusAnimation animation = new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence()
.addPos(90 - offset, 90 - offset, 35, 75)
.addPos(90 + offset, 90 - offset, -45, 150)
.addPos(0, 0, 0, 500))
.addBus("SWING_TRANS", new BusAnimationSequence()
.addPos(-3, 0, 0, 75)
.addPos(8, 0, 0, 150)
.addPos(0, 0, 0, 500));
Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:weapon.cSwing"), 0.8F + player.getRNG().nextFloat() * 0.2F));
String id = ModItems.crucible.getUnlocalizedName();
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(id, System.currentTimeMillis(), animation, null);
}
}
/* chainsaw swing */
if("sSwing".equals(mode) || "lSwing".equals(mode)) { //temp for lance
int forward = 150;
int sideways = 100;
int retire = 200;
if(HbmAnimations.getRelevantAnim() == null) {
BusAnimation animation = new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence()
.addPos(0, 0, 90, forward)
.addPos(45, 0, 90, sideways)
.addPos(0, 0, 0, retire))
.addBus("SWING_TRANS", new BusAnimationSequence()
.addPos(0, 0, 3, forward)
.addPos(2, 0, 2, sideways)
.addPos(0, 0, 0, retire));
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
} else {
double[] rot = HbmAnimations.getRelevantTransformation("SWING_ROT");
double[] trans = HbmAnimations.getRelevantTransformation("SWING_TRANS");
if(System.currentTimeMillis() - HbmAnimations.getRelevantAnim().startMillis < 50) return;
BusAnimation animation = new BusAnimation()
.addBus("SWING_ROT", new BusAnimationSequence()
.addPos(rot[0], rot[1], rot[2], 0)
.addPos(0, 0, 90, forward)
.addPos(45, 0, 90, sideways)
.addPos(0, 0, 0, retire))
.addBus("SWING_TRANS", new BusAnimationSequence()
.addPos(trans[0], trans[1], trans[2], 0)
.addPos(0, 0, 3, forward)
.addPos(2, 0, 2, sideways)
.addPos(0, 0, 0, retire));
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, null);
}
}
if("generic".equals(mode)) {
ItemStack stack = player.getHeldItem();
if(stack != null && stack.getItem() instanceof IAnimatedItem) {
IAnimatedItem item = (IAnimatedItem) stack.getItem();
BusAnimation anim = item.getAnimation(data, stack);
if(anim != null) {
HbmAnimations.hotbar[player.inventory.currentItem][0] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim, null);
}
}
}
}
if("tau".equals(type)) {
for(int i = 0; i < data.getByte("count"); i++)

View File

@ -4,6 +4,7 @@ import com.hbm.blocks.ICustomBlockHighlight;
import com.hbm.config.ClientConfig;
import com.hbm.config.RadiationConfig;
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
import com.hbm.items.IAnimatedItem;
import com.hbm.items.armor.IArmorDisableModel;
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
import com.hbm.items.weapon.sedna.ItemGunBaseNT;
@ -210,7 +211,17 @@ public class ModEventHandlerRenderer {
RenderPlayer renderer = event.renderer;
ItemStack held = player.getHeldItem();
if(held != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) {
if(held == null) return;
if(held.getItem() instanceof IAnimatedItem) {
if(((IAnimatedItem<?>) held.getItem()).shouldPlayerModelAim(held)) {
renderer.modelBipedMain.aimedBow = true;
renderer.modelArmor.aimedBow = true;
renderer.modelArmorChestplate.aimedBow = true;
}
}
if(held.getItem() instanceof ItemGunBaseNT) {
renderer.modelBipedMain.aimedBow = true;
renderer.modelArmor.aimedBow = true;
renderer.modelArmorChestplate.aimedBow = true;

View File

@ -44,7 +44,7 @@ public class PacketDispatcher {
//Signals server to do coord based satellite stuff
wrapper.registerMessage(SatCoordPacket.Handler.class, SatCoordPacket.class, i++, Side.SERVER);
//Triggers gun animations of the client
wrapper.registerMessage(GunAnimationPacket.Handler.class, GunAnimationPacket.class, i++, Side.CLIENT);
wrapper.registerMessage(HbmAnimationPacket.Handler.class, HbmAnimationPacket.class, i++, Side.CLIENT);
//Sends a funi text to display like a music disc announcement
wrapper.registerMessage(PlayerInformPacket.Handler.class, PlayerInformPacket.class, i++, Side.CLIENT);
//Universal keybind packet

View File

@ -3,15 +3,17 @@ package com.hbm.packet.toclient;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import com.hbm.items.IAnimatedItem;
import com.hbm.items.armor.ArmorTrenchmaster;
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.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.BusAnimation;
import com.hbm.render.anim.HbmAnimations;
import com.hbm.render.anim.HbmAnimations.AnimType;
import com.hbm.render.anim.HbmAnimations.Animation;
import com.hbm.util.EnumUtil;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
@ -23,51 +25,51 @@ import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
public class GunAnimationPacket implements IMessage {
public class HbmAnimationPacket implements IMessage {
public short type;
public int receiverIndex;
public int gunIndex;
public int itemIndex;
public GunAnimationPacket() { }
public HbmAnimationPacket() { }
public GunAnimationPacket(int type) {
public HbmAnimationPacket(int type) {
this.type = (short) type;
this.receiverIndex = 0;
this.gunIndex = 0;
this.itemIndex = 0;
}
public GunAnimationPacket(int type, int rec) {
public HbmAnimationPacket(int type, int rec) {
this.type = (short) type;
this.receiverIndex = rec;
this.gunIndex = 0;
this.itemIndex = 0;
}
public GunAnimationPacket(int type, int rec, int gun) {
public HbmAnimationPacket(int type, int rec, int gun) {
this.type = (short) type;
this.receiverIndex = rec;
this.gunIndex = gun;
this.itemIndex = gun;
}
@Override
public void fromBytes(ByteBuf buf) {
type = buf.readShort();
receiverIndex = buf.readInt();
gunIndex = buf.readInt();
itemIndex = buf.readInt();
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeShort(type);
buf.writeInt(receiverIndex);
buf.writeInt(gunIndex);
buf.writeInt(itemIndex);
}
public static class Handler implements IMessageHandler<GunAnimationPacket, IMessage> {
public static class Handler implements IMessageHandler<HbmAnimationPacket, IMessage> {
@Override
@SideOnly(Side.CLIENT)
public IMessage onMessage(GunAnimationPacket m, MessageContext ctx) {
public IMessage onMessage(HbmAnimationPacket m, MessageContext ctx) {
try {
@ -78,7 +80,9 @@ public class GunAnimationPacket implements IMessage {
if(stack == null) return null;
if(stack.getItem() instanceof ItemGunBaseNT) {
handleSedna(player, stack, slot, AnimType.values()[m.type], m.receiverIndex, m.gunIndex);
handleSedna(player, stack, slot, GunAnimation.values()[m.type], m.receiverIndex, m.itemIndex);
} else if(stack.getItem() instanceof IAnimatedItem) {
handleItem(player, stack, slot, m.type, m.receiverIndex, m.itemIndex);
}
} catch(Exception x) { }
@ -86,11 +90,11 @@ public class GunAnimationPacket implements IMessage {
return null;
}
public static void handleSedna(EntityPlayer player, ItemStack stack, int slot, AnimType type, int receiverIndex, int gunIndex) {
public static void handleSedna(EntityPlayer player, ItemStack stack, int slot, GunAnimation type, int receiverIndex, int gunIndex) {
ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem();
GunConfig config = gun.getConfig(stack, gunIndex);
if(type == AnimType.CYCLE) {
if(type == GunAnimation.CYCLE) {
if(gunIndex < gun.lastShot.length) gun.lastShot[gunIndex] = System.currentTimeMillis();
gun.shotRand = player.worldObj.rand.nextDouble();
@ -102,23 +106,32 @@ public class GunAnimationPacket implements IMessage {
}
}
BiFunction<ItemStack, AnimType, BusAnimation> anims = config.getAnims(stack);
BiFunction<ItemStack, GunAnimation, BusAnimation> anims = config.getAnims(stack);
BusAnimation animation = anims.apply(stack, type);
if(animation == null && type == AnimType.RELOAD_EMPTY) {
animation = anims.apply(stack, AnimType.RELOAD);
}
if(animation == null && (type == AnimType.ALT_CYCLE || type == AnimType.CYCLE_EMPTY)) {
animation = anims.apply(stack, AnimType.CYCLE);
if(animation == null && (type == GunAnimation.ALT_CYCLE || type == GunAnimation.CYCLE_EMPTY)) {
animation = anims.apply(stack, GunAnimation.CYCLE);
}
if(animation != null) {
Minecraft.getMinecraft().entityRenderer.itemRenderer.resetEquippedProgress();
Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender = stack;
boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY;
boolean isReloadAnimation = type == GunAnimation.RELOAD || type == GunAnimation.RELOAD_CYCLE;
if(isReloadAnimation && ArmorTrenchmaster.isTrenchMaster(player)) animation.setTimeMult(0.5D);
HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, type, isReloadAnimation && config.getReloadAnimSequential(stack));
HbmAnimations.hotbar[slot][gunIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && config.getReloadAnimSequential(stack));
}
}
public static void handleItem(EntityPlayer player, ItemStack stack, int slot, short type, int receiverIndex, int itemIndex) {
IAnimatedItem<?> item = (IAnimatedItem<?>) stack.getItem();
Class<? extends Enum<?>> animClass = item.getEnum();
BusAnimation animation = item.getAnimation(EnumUtil.grabEnumSafely(animClass, type), stack);
if(animation != null) {
HbmAnimations.hotbar[slot][itemIndex] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
}
}
}
}

View File

@ -0,0 +1,27 @@
package com.hbm.render.anim;
public class AnimationEnums {
// A NOTE ON SHOTGUN STYLE RELOADS
// Make sure the RELOAD adds shells, not just RELOAD_CYCLE, they all proc once for each loaded shell
public static enum GunAnimation {
RELOAD, //either a full reload or start of a reload
RELOAD_CYCLE, //animation that plays for every individual round (for shotguns and similar single round loading weapons)
RELOAD_END, //animation for transitioning from our RELOAD_CYCLE to idle
CYCLE, //animation for every firing cycle
CYCLE_EMPTY, //animation for the final shot in the magazine
CYCLE_DRY, //animation for trying to fire, but no round is available
ALT_CYCLE, //animation for alt fire cycles
SPINUP, //animation for actionstart
SPINDOWN, //animation for actionend
EQUIP, //animation for drawing the weapon
INSPECT, //animation for inspecting the weapon
JAMMED, //animation for jammed weapons
}
public static enum ToolAnimation {
SWING,
EQUIP,
}
}

View File

@ -18,25 +18,6 @@ public class HbmAnimations {
//animation is playing, though this will cancel the animation entirely.
public static final Animation[][] hotbar = new Animation[9][8]; //now with 8 parallel rails per slot! time to get railed!
public static enum AnimType {
RELOAD, //either a full reload or start of a reload
@Deprecated RELOAD_EMPTY, //same as reload, but the mag is completely empty
RELOAD_CYCLE, //animation that plays for every individual round (for shotguns and similar single round loading weapons)
RELOAD_END, //animation for transitioning from our RELOAD_CYCLE to idle
CYCLE, //animation for every firing cycle
CYCLE_EMPTY, //animation for the final shot in the magazine
CYCLE_DRY, //animation for trying to fire, but no round is available
ALT_CYCLE, //animation for alt fire cycles
SPINUP, //animation for actionstart
SPINDOWN, //animation for actionend
EQUIP, //animation for drawing the weapon
INSPECT, //animation for inspecting the weapon
JAMMED //animation for jammed weapons
}
// A NOTE ON SHOTGUN STYLE RELOADS
// Make sure the RELOAD and RELOAD_EMPTY adds shells, not just RELOAD_CYCLE, they all proc once for each loaded shell
public static class Animation {
//the "name" of the animation slot. if the item has a different key than
@ -48,22 +29,16 @@ public class HbmAnimations {
public BusAnimation animation;
// If set, don't cancel this animation when the timer ends, instead wait for the next to start
public boolean holdLastFrame = false;
// so we know what type of animation we're playing, only used rarely
public AnimType type;
public Animation(String key, long startMillis, BusAnimation animation, AnimType type) {
public Animation(String key, long startMillis, BusAnimation animation) {
this.key = key;
this.startMillis = startMillis;
this.animation = animation;
this.type = type;
}
public Animation(String key, long startMillis, BusAnimation animation, AnimType type, boolean holdLastFrame) {
this.key = key;
this.startMillis = startMillis;
this.animation = animation;
public Animation(String key, long startMillis, BusAnimation animation, boolean holdLastFrame) {
this(key, startMillis, animation);
this.holdLastFrame = holdLastFrame;
this.type = type;
}
}

View File

@ -9,8 +9,8 @@ import com.hbm.items.weapon.sedna.mags.IMagazine;
import com.hbm.main.MainRegistry;
import com.hbm.main.ResourceManager;
import com.hbm.particle.SpentCasing;
import com.hbm.render.anim.AnimationEnums.GunAnimation;
import com.hbm.render.anim.HbmAnimations;
import com.hbm.render.anim.HbmAnimations.AnimType;
import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
@ -94,7 +94,7 @@ public class ItemRenderCongoLake extends ItemRenderWeaponBase {
GL11.glPushMatrix();
{
IMagazine mag = gun.getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack);
if(gun.getLastAnim(stack, 0) != AnimType.INSPECT || mag.getAmount(stack, MainRegistry.proxy.me().inventory) > 0) { //omit when inspecting and no shell is loaded
if(gun.getLastAnim(stack, 0) != GunAnimation.INSPECT || mag.getAmount(stack, MainRegistry.proxy.me().inventory) > 0) { //omit when inspecting and no shell is loaded
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex);

View File

@ -266,12 +266,8 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
for(int i = 0; i < 4; i++) tanks[i].deserialize(buf);
boolean left = buf.readBoolean();
boolean right = buf.readBoolean();
if(left) {
this.leftStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt());
}
if(right) {
this.rightStack = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt());
}
this.leftStack = left ? new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()) : null;
this.rightStack = right ? new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()) : null;
this.lastSelectedGUI = buf.readInt();
}

View File

@ -5,6 +5,7 @@ import java.util.*;
import com.hbm.blocks.BlockDummyable;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockDepth;
import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre;
import com.hbm.blocks.network.CraneInserter;
import com.hbm.entity.item.EntityMovingItem;
@ -270,7 +271,12 @@ public class TileEntityMachineExcavator extends TileEntityMachineBase implements
break;
}
if(shouldIgnoreBlock(b, x, y ,z)) continue;
// if hitting depth rock, turn off the drill
if(b instanceof BlockDepth) {
this.enableDrill = false;
}
if(shouldIgnoreBlock(b, x, y, z)) continue;
ignoreAll = false;

View File

@ -1098,9 +1098,7 @@ public class NBTStructure {
private SpawnCondition nextSpawn;
public void generateStructures(World world, Random rand, IChunkProvider chunkProvider, int chunkX, int chunkZ) {
Block[] ablock = new Block[65536];
func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock);
func_151539_a(chunkProvider, world, chunkX, chunkZ, null);
generateStructuresInChunk(world, rand, chunkX, chunkZ);
}

View File

@ -614,34 +614,34 @@ digamma.playerHealth=Digammaeinfluss:
digamma.playerRes=Digammaresistenz:
digamma.title=DIGAMMA-DIAGNOSEGERÄT
entity.entity_cyber_crab.name=Cyber-Krabbe
entity.entity_elder_one.name=Quackos der Älteste
entity.entity_fucc_a_ducc.name=Ente
entity.entity_glyphid.name=Glyphid
entity.entity_glyphid_behemoth.name=Glyphid-Behemoth
entity.entity_glyphid_blaster.name=Glyphid-Blaster
entity.entity_glyphid_bombardier.name=Glyphid-Bombardierer
entity.entity_glyphid_brawler.name=Glyphid-Schläger
entity.entity_glyphid_brenda.name=Brenda
entity.entity_glyphid_digger.name=Glyphid-Gräber
entity.entity_glyphid_nuclear.name=Der dicke Johnson
entity.entity_glyphid_scout.name=Glyphid-Späher
entity.entity_ntm_fbi.name=FBI Agent
entity.entity_ntm_fbi_drone.name=FBI Drone
entity.entity_ntm_radiation_blaze.name=Kernschmelze-Elementar
entity.hbm.entity_cyber_crab.name=Cyber-Krabbe
entity.hbm.entity_elder_one.name=Quackos der Älteste
entity.hbm.entity_fucc_a_ducc.name=Ente
entity.hbm.entity_glyphid.name=Glyphid
entity.hbm.entity_glyphid_behemoth.name=Glyphid-Behemoth
entity.hbm.entity_glyphid_blaster.name=Glyphid-Blaster
entity.hbm.entity_glyphid_bombardier.name=Glyphid-Bombardierer
entity.hbm.entity_glyphid_brawler.name=Glyphid-Schläger
entity.hbm.entity_glyphid_brenda.name=Brenda
entity.hbm.entity_glyphid_digger.name=Glyphid-Gräber
entity.hbm.entity_glyphid_nuclear.name=Der dicke Johnson
entity.hbm.entity_glyphid_scout.name=Glyphid-Späher
entity.hbm.entity_ntm_fbi.name=FBI Agent
entity.hbm.entity_ntm_fbi_drone.name=FBI Drone
entity.hbm.entity_ntm_radiation_blaze.name=Kernschmelze-Elementar
entity.hbm.entity_ntm_ufo.name=Marsianisches Invasionsschiff
entity.entity_mob_hunter_chopper.name=Jagdschrauber
entity.entity_mob_mask_man.name=Maskenmann
entity.entity_mob_gold_creeper.name=Goldener Creeper
entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper
entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper
entity.entity_mob_tainted_creeper.name=Verseuchter Creeper
entity.entity_mob_volatile_creeper.name=Instabiler Creeper
entity.entity_parasite_maggot.name=Parasitische Made
entity.entity_pigeon.name=Taube
entity.entity_plastic_bag.name=Plastiktüte
entity.entity_taint_crab.name=Verseuchte Krabbe
entity.entity_tesla_crab.name=Tesla-Krabbe
entity.hbm.entity_mob_hunter_chopper.name=Jagdschrauber
entity.hbm.entity_mob_mask_man.name=Maskenmann
entity.hbm.entity_mob_gold_creeper.name=Goldener Creeper
entity.hbm.entity_mob_nuclear_creeper.name=Nuklearer Creeper
entity.hbm.entity_mob_phosgene_creeper.name=Phosgen-Creeper
entity.hbm.entity_mob_tainted_creeper.name=Verseuchter Creeper
entity.hbm.entity_mob_volatile_creeper.name=Instabiler Creeper
entity.hbm.entity_parasite_maggot.name=Parasitische Made
entity.hbm.entity_pigeon.name=Taube
entity.hbm.entity_plastic_bag.name=Plastiktüte
entity.hbm.entity_taint_crab.name=Verseuchte Krabbe
entity.hbm.entity_tesla_crab.name=Tesla-Krabbe
entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime
entity.hbm.entity_balls_o_tron_seg.name=Balls-O-Tron Segment
entity.hbm.entity_bullet.name=Patrone

View File

@ -1197,34 +1197,34 @@ digamma.playerHealth=Digamma influence:
digamma.playerRes=Digamma resistance:
digamma.title=DIGAMMA DIAGNOSTIC
entity.entity_cyber_crab.name=Cyber Crab
entity.entity_elder_one.name=Quackos The Elder One
entity.entity_fucc_a_ducc.name=Duck
entity.entity_glyphid.name=Glyphid
entity.entity_glyphid_behemoth.name=Glyphid Behemoth
entity.entity_glyphid_blaster.name=Glyphid Blaster
entity.entity_glyphid_bombardier.name=Glyphid Bombardier
entity.entity_glyphid_brawler.name=Glyphid Brawler
entity.entity_glyphid_brenda.name=Brenda
entity.entity_glyphid_digger.name=Glyphid Digger
entity.entity_glyphid_nuclear.name=Big Man Johnson
entity.entity_glyphid_scout.name=Glyphid Scout
entity.entity_ntm_fbi.name=FBI Agent
entity.entity_ntm_fbi_drone.name=FBI Drone
entity.entity_ntm_radiation_blaze.name=Meltdown Elemental
entity.hbm.entity_cyber_crab.name=Cyber Crab
entity.hbm.entity_elder_one.name=Quackos The Elder One
entity.hbm.entity_fucc_a_ducc.name=Duck
entity.hbm.entity_glyphid.name=Glyphid
entity.hbm.entity_glyphid_behemoth.name=Glyphid Behemoth
entity.hbm.entity_glyphid_blaster.name=Glyphid Blaster
entity.hbm.entity_glyphid_bombardier.name=Glyphid Bombardier
entity.hbm.entity_glyphid_brawler.name=Glyphid Brawler
entity.hbm.entity_glyphid_brenda.name=Brenda
entity.hbm.entity_glyphid_digger.name=Glyphid Digger
entity.hbm.entity_glyphid_nuclear.name=Big Man Johnson
entity.hbm.entity_glyphid_scout.name=Glyphid Scout
entity.hbm.entity_ntm_fbi.name=FBI Agent
entity.hbm.entity_ntm_fbi_drone.name=FBI Drone
entity.hbm.entity_ntm_radiation_blaze.name=Meltdown Elemental
entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship
entity.entity_mob_hunter_chopper.name=Hunter Chopper
entity.entity_mob_mask_man.name=Mask Man
entity.entity_mob_gold_creeper.name=Golden Creeper
entity.entity_mob_nuclear_creeper.name=Nuclear Creeper
entity.entity_mob_phosgene_creeper.name=Phosgene Creeper
entity.entity_mob_tainted_creeper.name=Tainted Creeper
entity.entity_mob_volatile_creeper.name=Volatile Creeper
entity.entity_parasite_maggot.name=Parasitic Maggot
entity.entity_pigeon.name=Pigeon
entity.entity_plastic_bag.name=Plastic Bag
entity.entity_taint_crab.name=Taint Crab
entity.entity_tesla_crab.name=Tesla Crab
entity.hbm.entity_mob_hunter_chopper.name=Hunter Chopper
entity.hbm.entity_mob_mask_man.name=Mask Man
entity.hbm.entity_mob_gold_creeper.name=Golden Creeper
entity.hbm.entity_mob_nuclear_creeper.name=Nuclear Creeper
entity.hbm.entity_mob_phosgene_creeper.name=Phosgene Creeper
entity.hbm.entity_mob_tainted_creeper.name=Tainted Creeper
entity.hbm.entity_mob_volatile_creeper.name=Volatile Creeper
entity.hbm.entity_parasite_maggot.name=Parasitic Maggot
entity.hbm.entity_pigeon.name=Pigeon
entity.hbm.entity_plastic_bag.name=Plastic Bag
entity.hbm.entity_taint_crab.name=Taint Crab
entity.hbm.entity_tesla_crab.name=Tesla Crab
entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime
entity.hbm.entity_balls_o_tron_seg.name=Balls-O-Tron Segment
entity.hbm.entity_bullet.name=Bullet

View File

@ -1127,9 +1127,9 @@ item.stealth_boy.name=Module de furtiviter
entity.hbm.entity_bullet.name=Balle
entity.hbm.entity_rocket.name=Roquettes
entity.hbm.entity_schrabnel.name=Shrapnel
entity.entity_mob_nuclear_creeper.name=Creeper nucléaire
entity.entity_mob_hunter_chopper.name=Hélicoptère de chasse
entity.entity_cyber_crab.name=Cyber-crabe
entity.hbm.entity_mob_nuclear_creeper.name=Creeper nucléaire
entity.hbm.entity_mob_hunter_chopper.name=Hélicoptère de chasse
entity.hbm.entity_cyber_crab.name=Cyber-crabe
item.cap_aluminium.name=Capuchon en aluminium
item.hull_small_steel.name=Petite coque en acier

View File

@ -1379,34 +1379,34 @@ digamma.playerHealth=Digamma influence:
digamma.playerRes=Digamma resistance:
digamma.title=DIGAMMA DIAGNOSTIC
entity.entity_cyber_crab.name=Cyber Crab
entity.entity_elder_one.name=Quackos The Elder One
entity.entity_fucc_a_ducc.name=Duck
entity.entity_glyphid.name=Glyphid
entity.entity_glyphid_behemoth.name=Glyphid Behemoth
entity.entity_glyphid_blaster.name=Glyphid Blaster
entity.entity_glyphid_bombardier.name=Glyphid Bombardier
entity.entity_glyphid_brawler.name=Glyphid Brawler
entity.entity_glyphid_brenda.name=Brenda
entity.entity_glyphid_digger.name=Glyphid Digger
entity.entity_glyphid_nuclear.name=Big Man Johnson
entity.entity_glyphid_scout.name=Glyphid Scout
entity.entity_ntm_fbi.name=FBI Agent
entity.entity_ntm_fbi_drone.name=FBI Drone
entity.entity_ntm_radiation_blaze.name=Meltdown Elemental
entity.hbm.entity_cyber_crab.name=Cyber Crab
entity.hbm.entity_elder_one.name=Quackos The Elder One
entity.hbm.entity_fucc_a_ducc.name=Duck
entity.hbm.entity_glyphid.name=Glyphid
entity.hbm.entity_glyphid_behemoth.name=Glyphid Behemoth
entity.hbm.entity_glyphid_blaster.name=Glyphid Blaster
entity.hbm.entity_glyphid_bombardier.name=Glyphid Bombardier
entity.hbm.entity_glyphid_brawler.name=Glyphid Brawler
entity.hbm.entity_glyphid_brenda.name=Brenda
entity.hbm.entity_glyphid_digger.name=Glyphid Digger
entity.hbm.entity_glyphid_nuclear.name=Big Man Johnson
entity.hbm.entity_glyphid_scout.name=Glyphid Scout
entity.hbm.entity_ntm_fbi.name=FBI Agent
entity.hbm.entity_ntm_fbi_drone.name=FBI Drone
entity.hbm.entity_ntm_radiation_blaze.name=Meltdown Elemental
entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship
entity.entity_mob_hunter_chopper.name=Hunter Chopper
entity.entity_mob_mask_man.name=Mask Man
entity.entity_mob_gold_creeper.name=Golden Creeper
entity.entity_mob_nuclear_creeper.name=Nuclear Creeper
entity.entity_mob_phosgene_creeper.name=Phosgene Creeper
entity.entity_mob_tainted_creeper.name=Tainted Creeper
entity.entity_mob_volatile_creeper.name=Volatile Creeper
entity.entity_parasite_maggot.name=Parasitic Maggot
entity.entity_pigeon.name=Pigeon
entity.entity_plastic_bag.name=Plastic Bag
entity.entity_taint_crab.name=Taint Crab
entity.entity_tesla_crab.name=Tesla Crab
entity.hbm.entity_mob_hunter_chopper.name=Hunter Chopper
entity.hbm.entity_mob_mask_man.name=Mask Man
entity.hbm.entity_mob_gold_creeper.name=Golden Creeper
entity.hbm.entity_mob_nuclear_creeper.name=Nuclear Creeper
entity.hbm.entity_mob_phosgene_creeper.name=Phosgene Creeper
entity.hbm.entity_mob_tainted_creeper.name=Tainted Creeper
entity.hbm.entity_mob_volatile_creeper.name=Volatile Creeper
entity.hbm.entity_parasite_maggot.name=Parasitic Maggot
entity.hbm.entity_pigeon.name=Pigeon
entity.hbm.entity_plastic_bag.name=Plastic Bag
entity.hbm.entity_taint_crab.name=Taint Crab
entity.hbm.entity_tesla_crab.name=Tesla Crab
entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime
entity.hbm.entity_balls_o_tron_seg.name=Balls-O-Tron Segment
entity.hbm.entity_bullet.name=Bullet

View File

@ -1013,29 +1013,29 @@ digamma.playerHealth=Wpływ Digammy:
digamma.playerRes=Odporność na digamę:
digamma.title=DIAGNOSTYKA DIGAMMY
entity.entity_cyber_crab.name=Cyberkrab
entity.entity_elder_one.name=Quackos Starszy
entity.entity_fucc_a_ducc.name=Kaczka
entity.entity_glyphid.name=Glyfid
entity.entity_glyphid_behemoth.name=Glyfid Behemot
entity.entity_glyphid_blaster.name=Glyfid Blaster
entity.entity_glyphid_bombardier.name=Glyfid Bombardier
entity.entity_glyphid_brawler.name=Glyfid Awanturnik
entity.entity_glyphid_brenda.name=Brenda
entity.entity_glyphid_nuclear.name=Big Men Dżonson
entity.entity_glyphid_scout.name=Glyfid Skaut
entity.entity_ntm_fbi.name=Agent FBI
entity.entity_ntm_radiation_blaze.name=Żywiołak stopienia
entity.hbm.entity_cyber_crab.name=Cyberkrab
entity.hbm.entity_elder_one.name=Quackos Starszy
entity.hbm.entity_fucc_a_ducc.name=Kaczka
entity.hbm.entity_glyphid.name=Glyfid
entity.hbm.entity_glyphid_behemoth.name=Glyfid Behemot
entity.hbm.entity_glyphid_blaster.name=Glyfid Blaster
entity.hbm.entity_glyphid_bombardier.name=Glyfid Bombardier
entity.hbm.entity_glyphid_brawler.name=Glyfid Awanturnik
entity.hbm.entity_glyphid_brenda.name=Brenda
entity.hbm.entity_glyphid_nuclear.name=Big Men Dżonson
entity.hbm.entity_glyphid_scout.name=Glyfid Skaut
entity.hbm.entity_ntm_fbi.name=Agent FBI
entity.hbm.entity_ntm_radiation_blaze.name=Żywiołak stopienia
entity.hbm.entity_ntm_ufo.name=Statek Inwazji Marsjan
entity.entity_mob_hunter_chopper.name=Chopper Myśliwy
entity.entity_mob_mask_man.name=Pan w Masce
entity.entity_mob_gold_creeper.name=Złoty Creeper
entity.entity_mob_nuclear_creeper.name=Jądrowy creeper
entity.entity_mob_phosgene_creeper.name=Fosgenowy Creeper
entity.entity_mob_tainted_creeper.name=Skażony creeper
entity.entity_mob_volatile_creeper.name=Lotny Creeper
entity.entity_taint_crab.name=Skażony krab
entity.entity_tesla_crab.name=Krab Tesli
entity.hbm.entity_mob_hunter_chopper.name=Chopper Myśliwy
entity.hbm.entity_mob_mask_man.name=Pan w Masce
entity.hbm.entity_mob_gold_creeper.name=Złoty Creeper
entity.hbm.entity_mob_nuclear_creeper.name=Jądrowy creeper
entity.hbm.entity_mob_phosgene_creeper.name=Fosgenowy Creeper
entity.hbm.entity_mob_tainted_creeper.name=Skażony creeper
entity.hbm.entity_mob_volatile_creeper.name=Lotny Creeper
entity.hbm.entity_taint_crab.name=Skażony krab
entity.hbm.entity_tesla_crab.name=Krab Tesli
entity.hbm.entity_balls_o_tron.name=Jądro-Tron
entity.hbm.entity_balls_o_tron_seg.name=Segment Jądro-Trona
entity.hbm.entity_bullet.name=Pocisk

View File

@ -1193,34 +1193,34 @@ digamma.playerHealth=Влияние дигаммы:
digamma.playerRes=Сопротивление к дигамме:
digamma.title=ДИАГНОСТИКА ДИГАММЫ
entity.entity_cyber_crab.name=Киберкраб
entity.entity_elder_one.name=Крякос Старший
entity.entity_fucc_a_ducc.name=Утка
entity.entity_glyphid.name=Глифид
entity.entity_glyphid_behemoth.name=Глифид-страж
entity.entity_glyphid_blaster.name=Глифид-стрелок
entity.entity_glyphid_bombardier.name=Глифид-бомбардир
entity.entity_glyphid_brawler.name=Глифид-солдат
entity.entity_glyphid_brenda.name=Бренда
entity.entity_glyphid_digger.name=Глифид-копатель
entity.entity_glyphid_nuclear.name=Чмяк
entity.entity_glyphid_scout.name=Глифид-скаут
entity.entity_ntm_fbi.name=Агент ФБР
entity.entity_ntm_fbi_drone.name=Дрон ФБР
entity.entity_ntm_radiation_blaze.name=Элементаль Расплавления
entity.hbm.entity_cyber_crab.name=Киберкраб
entity.hbm.entity_elder_one.name=Крякос Старший
entity.hbm.entity_fucc_a_ducc.name=Утка
entity.hbm.entity_glyphid.name=Глифид
entity.hbm.entity_glyphid_behemoth.name=Глифид-страж
entity.hbm.entity_glyphid_blaster.name=Глифид-стрелок
entity.hbm.entity_glyphid_bombardier.name=Глифид-бомбардир
entity.hbm.entity_glyphid_brawler.name=Глифид-солдат
entity.hbm.entity_glyphid_brenda.name=Бренда
entity.hbm.entity_glyphid_digger.name=Глифид-копатель
entity.hbm.entity_glyphid_nuclear.name=Чмяк
entity.hbm.entity_glyphid_scout.name=Глифид-скаут
entity.hbm.entity_ntm_fbi.name=Агент ФБР
entity.hbm.entity_ntm_fbi_drone.name=Дрон ФБР
entity.hbm.entity_ntm_radiation_blaze.name=Элементаль Расплавления
entity.hbm.entity_ntm_ufo.name=Марсианский корабль вторжения
entity.entity_mob_hunter_chopper.name=Вертолёт-охотник
entity.entity_mob_mask_man.name=Маскмен
entity.entity_mob_gold_creeper.name=Золотой крипер
entity.entity_mob_nuclear_creeper.name=Ядерный крипер
entity.entity_mob_phosgene_creeper.name=Фосгеновый крипер
entity.entity_mob_tainted_creeper.name=Заражённый порчей крипер
entity.entity_mob_volatile_creeper.name=Возгораемый крипер
entity.entity_parasite_maggot.name=Паразитическая личинка
entity.entity_pigeon.name=Голубь
entity.entity_plastic_bag.name=Пластиковый пакетик
entity.entity_taint_crab.name=Заражённый порчей теслакраб
entity.entity_tesla_crab.name=Теслакраб
entity.hbm.entity_mob_hunter_chopper.name=Вертолёт-охотник
entity.hbm.entity_mob_mask_man.name=Маскмен
entity.hbm.entity_mob_gold_creeper.name=Золотой крипер
entity.hbm.entity_mob_nuclear_creeper.name=Ядерный крипер
entity.hbm.entity_mob_phosgene_creeper.name=Фосгеновый крипер
entity.hbm.entity_mob_tainted_creeper.name=Заражённый порчей крипер
entity.hbm.entity_mob_volatile_creeper.name=Возгораемый крипер
entity.hbm.entity_parasite_maggot.name=Паразитическая личинка
entity.hbm.entity_pigeon.name=Голубь
entity.hbm.entity_plastic_bag.name=Пластиковый пакетик
entity.hbm.entity_taint_crab.name=Заражённый порчей теслакраб
entity.hbm.entity_tesla_crab.name=Теслакраб
entity.hbm.entity_balls_o_tron.name=Баллс-О-Трон Прайм
entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-Трон Сегмент
entity.hbm.entity_bullet.name=Пуля

View File

@ -1196,34 +1196,34 @@ digamma.playerHealth=Digamma influence:
digamma.playerRes=Digamma resistance:
digamma.title=DIGAMMA DIAGNOSTIC
entity.entity_cyber_crab.name=Кіберкраб
entity.entity_elder_one.name=Крякос Старший
entity.entity_fucc_a_ducc.name=Качка
entity.entity_glyphid.name=Гліфід
entity.entity_glyphid_behemoth.name=Гліфід Бегемот
entity.entity_glyphid_blaster.name=Гліфід Бластер
entity.entity_glyphid_bombardier.name=Гліфід Бомбардир
entity.entity_glyphid_brawler.name=Гліфід Боєць
entity.entity_glyphid_brenda.name=Бренда
entity.entity_glyphid_digger.name=Гліфід Копач
entity.entity_glyphid_nuclear.name=Великий Джонсон
entity.entity_glyphid_scout.name=Гліфід Розвідник
entity.entity_ntm_fbi.name=Агент ФБР
entity.entity_ntm_fbi_drone.name=Дрон ФБР
entity.entity_ntm_radiation_blaze.name=Елементаль Розплавлення
entity.hbm.entity_cyber_crab.name=Кіберкраб
entity.hbm.entity_elder_one.name=Крякос Старший
entity.hbm.entity_fucc_a_ducc.name=Качка
entity.hbm.entity_glyphid.name=Гліфід
entity.hbm.entity_glyphid_behemoth.name=Гліфід Бегемот
entity.hbm.entity_glyphid_blaster.name=Гліфід Бластер
entity.hbm.entity_glyphid_bombardier.name=Гліфід Бомбардир
entity.hbm.entity_glyphid_brawler.name=Гліфід Боєць
entity.hbm.entity_glyphid_brenda.name=Бренда
entity.hbm.entity_glyphid_digger.name=Гліфід Копач
entity.hbm.entity_glyphid_nuclear.name=Великий Джонсон
entity.hbm.entity_glyphid_scout.name=Гліфід Розвідник
entity.hbm.entity_ntm_fbi.name=Агент ФБР
entity.hbm.entity_ntm_fbi_drone.name=Дрон ФБР
entity.hbm.entity_ntm_radiation_blaze.name=Елементаль Розплавлення
entity.hbm.entity_ntm_ufo.name=Марсіанький корабель НЛО
entity.entity_mob_hunter_chopper.name=Гвинтокрил Мислиивець
entity.entity_mob_mask_man.name=Маскмен
entity.entity_mob_gold_creeper.name=Золотий Кріпер
entity.entity_mob_nuclear_creeper.name=Ядерний Кріпер
entity.entity_mob_phosgene_creeper.name=Фосгений Кріпер
entity.entity_mob_tainted_creeper.name=Інфікований Кріпер
entity.entity_mob_volatile_creeper.name=Шлаковий Кріпер
entity.entity_parasite_maggot.name=Паразитична личинка
entity.entity_pigeon.name=Голуб
entity.entity_plastic_bag.name=Пластиковий пакет
entity.entity_taint_crab.name=Інфікований Краб
entity.entity_tesla_crab.name=Тесла Краб
entity.hbm.entity_mob_hunter_chopper.name=Гвинтокрил Мислиивець
entity.hbm.entity_mob_mask_man.name=Маскмен
entity.hbm.entity_mob_gold_creeper.name=Золотий Кріпер
entity.hbm.entity_mob_nuclear_creeper.name=Ядерний Кріпер
entity.hbm.entity_mob_phosgene_creeper.name=Фосгений Кріпер
entity.hbm.entity_mob_tainted_creeper.name=Інфікований Кріпер
entity.hbm.entity_mob_volatile_creeper.name=Шлаковий Кріпер
entity.hbm.entity_parasite_maggot.name=Паразитична личинка
entity.hbm.entity_pigeon.name=Голуб
entity.hbm.entity_plastic_bag.name=Пластиковий пакет
entity.hbm.entity_taint_crab.name=Інфікований Краб
entity.hbm.entity_tesla_crab.name=Тесла Краб
entity.hbm.entity_balls_o_tron.name=Баллс-О-Трон Прайм
entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-Трон Сегмент
entity.hbm.entity_bullet.name=Куля

View File

@ -1067,34 +1067,34 @@ digamma.playerDigamma=玩家F-迪伽马辐照水平:
digamma.playerHealth=玩家所受F-迪伽马辐照影响:
digamma.playerRes=玩家F-迪伽马防护水平:
digamma.title=玩家F-迪伽马辐射自检器
entity.entity_cyber_crab.name=赛博螃蟹
entity.entity_elder_one.name=上古鸭神
entity.entity_fucc_a_ducc.name=鸭子
entity.entity_glyphid.name=异虫
entity.entity_glyphid_behemoth.name=巨兽异虫
entity.entity_glyphid_blaster.name=爆破异虫
entity.entity_glyphid_bombardier.name=投弹手异虫
entity.entity_glyphid_brawler.name=狂战士异虫
entity.entity_glyphid_brenda.name=布伦达
entity.entity_glyphid_digger.name=掘地异虫
entity.entity_glyphid_nuclear.name=大个子强森
entity.entity_glyphid_scout.name=侦察异虫
entity.entity_ntm_fbi.name=FBI探员
entity.entity_ntm_fbi_drone.name=FBI无人机
entity.entity_ntm_radiation_blaze.name=核融元素
entity.hbm.entity_cyber_crab.name=赛博螃蟹
entity.hbm.entity_elder_one.name=上古鸭神
entity.hbm.entity_fucc_a_ducc.name=鸭子
entity.hbm.entity_glyphid.name=异虫
entity.hbm.entity_glyphid_behemoth.name=巨兽异虫
entity.hbm.entity_glyphid_blaster.name=爆破异虫
entity.hbm.entity_glyphid_bombardier.name=投弹手异虫
entity.hbm.entity_glyphid_brawler.name=狂战士异虫
entity.hbm.entity_glyphid_brenda.name=布伦达
entity.hbm.entity_glyphid_digger.name=掘地异虫
entity.hbm.entity_glyphid_nuclear.name=大个子强森
entity.hbm.entity_glyphid_scout.name=侦察异虫
entity.hbm.entity_ntm_fbi.name=FBI探员
entity.hbm.entity_ntm_fbi_drone.name=FBI无人机
entity.hbm.entity_ntm_radiation_blaze.name=核融元素
entity.hbm.entity_ntm_ufo.name=火星入侵者飞船
entity.entity_mob_hunter_chopper.name=猎人直升机
entity.entity_mob_mask_man.name=面具人
entity.entity_mob_gold_creeper.name=黄金爬行者
entity.entity_mob_nuclear_creeper.name=核爆爬行者
entity.entity_mob_phosgene_creeper.name=光气爬行者
entity.entity_mob_tainted_creeper.name=污染爬行者
entity.entity_mob_volatile_creeper.name=不稳定爬行者
entity.entity_parasite_maggot.name=寄生虫
entity.entity_pigeon.name=鸽子
entity.entity_plastic_bag.name=塑料袋
entity.entity_taint_crab.name=污染螃蟹
entity.entity_tesla_crab.name=磁暴螃蟹
entity.hbm.entity_mob_hunter_chopper.name=猎人直升机
entity.hbm.entity_mob_mask_man.name=面具人
entity.hbm.entity_mob_gold_creeper.name=黄金爬行者
entity.hbm.entity_mob_nuclear_creeper.name=核爆爬行者
entity.hbm.entity_mob_phosgene_creeper.name=光气爬行者
entity.hbm.entity_mob_tainted_creeper.name=污染爬行者
entity.hbm.entity_mob_volatile_creeper.name=不稳定爬行者
entity.hbm.entity_parasite_maggot.name=寄生虫
entity.hbm.entity_pigeon.name=鸽子
entity.hbm.entity_plastic_bag.name=塑料袋
entity.hbm.entity_taint_crab.name=污染螃蟹
entity.hbm.entity_tesla_crab.name=磁暴螃蟹
entity.hbm.entity_balls_o_tron.name=机械蠕虫
entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫
entity.hbm.entity_bullet.name=子弹