diff --git a/build.gradle b/build.gradle index 5d4f7116f..b8c70f839 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.6-beta2" +version = "1.6" group= "com.kamkeel.customnpc-plus" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "CustomNPC-Plus" diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index c623d9834..9b80672c7 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -16,6 +16,7 @@ import net.minecraft.block.BlockVine; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityList; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.MinecraftForge; @@ -29,9 +30,11 @@ import noppes.npcs.entity.old.*; import noppes.npcs.scripted.NpcAPI; import java.io.File; +import java.util.ArrayList; import java.util.Set; +import java.util.UUID; -@Mod(modid = "customnpcs", name = "CustomNpcs", version = "1.6-beta2") +@Mod(modid = "customnpcs", name = "CustomNpcs", version = "1.6") public class CustomNpcs { @ConfigProp(info = "Disable Chat Bubbles") @@ -51,6 +54,11 @@ public class CustomNpcs { @ConfigProp(info = "Enables global NPC scripts to be used in the scripter. You can still see and write code in the scripter, but these scripts won't run. False by default, use with caution!") public static boolean GlobalNPCScripts = false; + @ConfigProp(info = "If scripts are too long (>65535 characters), they normally won't be saved in NBT data.\n" + + "This config adds additional compound tags to scripts that need it, so you can store much larger scripts!\n" + + "Every additional compound tag adds 65535 more characters to your script length limit. Use incrementally, with caution.") + public static int ExpandedScriptLimit = 2; + @ConfigProp(info = "Navigation search range for NPCs. Not recommended to increase if you have a slow pc or on a server. Minimum of 16, maximum of 96.") public static int NpcNavRange = 32; @@ -91,6 +99,16 @@ public class CustomNpcs { @ConfigProp(info = "Only ops can create and edit npcs") public static boolean OpsOnly = false; + + @ConfigProp(info = "Only ops can see and edit scripts") + public static boolean ScriptOpsOnly = false; + + @ConfigProp(info = "Comma separated list of player UUIDs that can see and edit scripts. If ScriptsOpsOnly is true,\n" + + "ops and players with these IDs can see and edit scripts. Example:\n" + + "b876ec32-e396-476b-a115-8438d83c67d4,069a79f4-44e9-4726-a5be-fca90e38aaf5,be951074-c7ea-4f02-a725-bf017bc88650\n" + + "Get a player's UUID from a site like NameMC or the API IPlayer.getUniqueID() function!\n" + + "If left empty and ScriptsOpsOnly is false, anyone can see and edit scripts with a scripter.") + public static String ScriptDevIDs = ""; @ConfigProp(info = "Default interact line. Leave empty to not have one") public static String DefaultInteractLine = "Hello @p"; @@ -146,6 +164,8 @@ public class CustomNpcs { public static ConfigLoader Config; + public static ArrayList ScriptDevs = new ArrayList<>(); + public static final MarkovGenerator[] MARKOV_GENERATOR = new MarkovGenerator[10]; public CustomNpcs() { @@ -170,6 +190,14 @@ public class CustomNpcs { Config = new ConfigLoader(this.getClass(), new File(dir, "config"), "CustomNpcs"); Config.loadConfig(); + try { + ScriptDevs.clear(); + String[] uuidStrings = ScriptDevIDs.split(";"); + for (String s : uuidStrings) { + ScriptDevs.add(UUID.fromString(s)); + } + } catch (Exception ignored) {} + if (NpcNavRange < 16) { NpcNavRange = 16; } @@ -193,6 +221,9 @@ public class CustomNpcs { if (TrackingInfoAlignment > 8) TrackingInfoAlignment = 8; + if (ExpandedScriptLimit < 0) + ExpandedScriptLimit = 0; + EnchantInterface.load(); CustomItems.load(); @@ -379,4 +410,11 @@ public class CustomNpcs { public static MinecraftServer getServer(){ return MinecraftServer.getServer(); } + + public static boolean isScriptDev(EntityPlayer player) { + if(CustomNpcs.ScriptOpsOnly && !MinecraftServer.getServer().getConfigurationManager().func_152596_g(player.getGameProfile()) || + ScriptDevs.contains(player.getUniqueID())){ + return true; + } else return ScriptDevIDs.isEmpty(); + } } diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index b013578cb..34187cfa5 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -351,6 +351,11 @@ public class EventHooks { NpcAPI.EVENT_BUS.post(event); } + public static boolean onPlayerAttacked(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.AttackedEvent event) { + handler.callScript(EnumScriptType.ATTACKED, event); + return NpcAPI.EVENT_BUS.post(event); + } + public static boolean onPlayerDamaged(PlayerDataScript handler, noppes.npcs.scripted.event.PlayerEvent.DamagedEvent event) { handler.callScript(EnumScriptType.DAMAGED, event); return NpcAPI.EVENT_BUS.post(event); @@ -431,6 +436,11 @@ public class EventHooks { return NpcAPI.EVENT_BUS.post(event); } + public static boolean onPlayerAttack(PlayerDataScript handler, PlayerEvent.AttackEvent event) { + handler.callScript(EnumScriptType.ATTACK, event); + return NpcAPI.EVENT_BUS.post(event); + } + public static boolean onPlayerDamagedEntity(PlayerDataScript handler, DamagedEntityEvent event) { handler.callScript(EnumScriptType.DAMAGED_ENTITY, event); return NpcAPI.EVENT_BUS.post(event); @@ -442,9 +452,9 @@ public class EventHooks { NpcAPI.EVENT_BUS.post(event); } - public static void onPlayerMouseClicked(EntityPlayerMP player, int button, int mouseWheel, boolean buttonDown) { + public static void onPlayerMouseClicked(EntityPlayerMP player, int button, int mouseWheel, boolean buttonDown, boolean isCtrlPressed, boolean isShiftPressed, boolean isAltPressed, boolean isMetaPressed, int[] heldKeys) { PlayerDataScript handler = ScriptController.Instance.playerScripts; - PlayerEvent.MouseClickedEvent event = new PlayerEvent.MouseClickedEvent((IPlayer)NpcAPI.Instance().getIEntity(player), button, mouseWheel, buttonDown); + PlayerEvent.MouseClickedEvent event = new PlayerEvent.MouseClickedEvent((IPlayer)NpcAPI.Instance().getIEntity(player), button, mouseWheel, buttonDown, isCtrlPressed, isAltPressed, isShiftPressed, isMetaPressed, heldKeys); handler.callScript(EnumScriptType.MOUSE_CLICKED, event); NpcAPI.EVENT_BUS.post(event); } diff --git a/src/main/java/noppes/npcs/NoppesUtilPlayer.java b/src/main/java/noppes/npcs/NoppesUtilPlayer.java index 80ae41d38..ed6a8f552 100644 --- a/src/main/java/noppes/npcs/NoppesUtilPlayer.java +++ b/src/main/java/noppes/npcs/NoppesUtilPlayer.java @@ -33,10 +33,12 @@ import noppes.npcs.controllers.data.*; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleFollower; import cpw.mods.fml.common.network.internal.FMLProxyPacket; +import noppes.npcs.scripted.ScriptSound; import noppes.npcs.scripted.event.DialogEvent; import noppes.npcs.scripted.event.QuestEvent; import noppes.npcs.scripted.interfaces.entity.IPlayer; import noppes.npcs.scripted.interfaces.handler.data.IQuestObjective; +import noppes.npcs.scripted.interfaces.handler.data.ISound; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.NpcAPI; @@ -482,4 +484,27 @@ public class NoppesUtilPlayer { return list; } + + public static void playSoundTo(EntityPlayerMP player, int id, ScriptSound sound) { + NBTTagCompound compound = sound.writeToNBT(); + if (sound.sourceEntity == null || player.worldObj.provider.dimensionId == sound.sourceEntity.getDimension()) { + Server.sendData(player, EnumPacketClient.PLAY_SOUND_TO, id, compound); + } + } + + public static void stopSoundFor(EntityPlayerMP player, int id) { + Server.sendData(player, EnumPacketClient.STOP_SOUND_FOR, id); + } + + public static void pauseSoundsFor(EntityPlayerMP player) { + Server.sendData(player, EnumPacketClient.PAUSE_SOUNDS); + } + + public static void continueSoundsFor(EntityPlayerMP player) { + Server.sendData(player, EnumPacketClient.CONTINUE_SOUNDS); + } + + public static void stopSoundsFor(EntityPlayerMP player) { + Server.sendData(player, EnumPacketClient.STOP_SOUNDS); + } } diff --git a/src/main/java/noppes/npcs/NoppesUtilServer.java b/src/main/java/noppes/npcs/NoppesUtilServer.java index 6b4f5ccfb..4d4e1f2c3 100644 --- a/src/main/java/noppes/npcs/NoppesUtilServer.java +++ b/src/main/java/noppes/npcs/NoppesUtilServer.java @@ -71,6 +71,7 @@ import noppes.npcs.entity.EntityDialogNpc; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.RoleTransporter; import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.scripted.ScriptSound; import noppes.npcs.scripted.event.DialogEvent; import noppes.npcs.scripted.interfaces.entity.IPlayer; @@ -324,6 +325,41 @@ public class NoppesUtilServer { } } + public static void playSound(int id, ScriptSound sound) { + List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; + for (EntityPlayer player : list) { + NoppesUtilPlayer.playSoundTo((EntityPlayerMP) player, id, sound); + } + } + + public static void stopSound(int id) { + List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; + for (EntityPlayer player : list) { + NoppesUtilPlayer.stopSoundFor((EntityPlayerMP) player, id); + } + } + + public static void pauseSounds() { + List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; + for (EntityPlayer player : list) { + NoppesUtilPlayer.pauseSoundsFor((EntityPlayerMP) player); + } + } + + public static void continueSounds() { + List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; + for (EntityPlayer player : list) { + NoppesUtilPlayer.continueSoundsFor((EntityPlayerMP) player); + } + } + + public static void stopSounds() { + List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; + for (EntityPlayer player : list) { + NoppesUtilPlayer.stopSoundsFor((EntityPlayerMP) player); + } + } + public static void deleteNpc(EntityNPCInterface npc,EntityPlayer player) { Server.sendAssociatedData(npc, EnumPacketClient.DELETE_NPC, npc.getEntityId()); } @@ -636,9 +672,29 @@ public class NoppesUtilServer { Server.sendData(player, EnumPacketClient.GUI_CLOSE, i, comp); } - public static Entity spawnClone(NBTTagCompound compound, int x, int y, + public static Entity spawnCloneWithProtection(NBTTagCompound compound, int x, int y, int z, World worldObj) { ServerCloneController.Instance.cleanTags(compound); + compound.setTag("Pos", NBTTags.nbtDoubleList(x + 0.5, y, z + 0.5)); + Entity entity = EntityList.createEntityFromNBT(compound, worldObj); + if(entity == null){ + return null; + } + entity.setPosition((double) x + 0.5, (double) y, (double) z + 0.5); + if(entity instanceof EntityNPCInterface){ + EntityNPCInterface npc = (EntityNPCInterface) entity; + npc.ai.startPos = new int[]{MathHelper.floor_double(npc.posX),MathHelper.floor_double(npc.posY),MathHelper.floor_double(npc.posZ)}; + npc.ticksExisted = 0; + npc.totalTicksAlive = 0; + } + worldObj.spawnEntityInWorld(entity); + entity.prevPosY = entity.lastTickPosY = entity.posY = y + 1; + return entity; + } + + public static Entity spawnClone(NBTTagCompound compound, int x, int y, + int z, World worldObj) { + ServerCloneController.Instance.cleanTags(compound); compound.setTag("Pos", NBTTags.nbtDoubleList(x + 0.5, y + 1, z + 0.5)); Entity entity = EntityList.createEntityFromNBT(compound, worldObj); if(entity == null){ @@ -653,6 +709,7 @@ public class NoppesUtilServer { worldObj.spawnEntityInWorld(entity); return entity; } + public static boolean isOp(EntityPlayer player) { return MinecraftServer.getServer().getConfigurationManager().func_152596_g(player.getGameProfile()); } diff --git a/src/main/java/noppes/npcs/PacketHandlerPlayer.java b/src/main/java/noppes/npcs/PacketHandlerPlayer.java index 7e0c8ae45..2b3a34242 100644 --- a/src/main/java/noppes/npcs/PacketHandlerPlayer.java +++ b/src/main/java/noppes/npcs/PacketHandlerPlayer.java @@ -94,7 +94,33 @@ public class PacketHandlerPlayer{ return; } - EventHooks.onPlayerMouseClicked(player, buffer.readInt(), buffer.readInt(), buffer.readBoolean()); + int button = buffer.readInt(); + int mouseWheel = buffer.readInt(); + boolean buttonDown = buffer.readBoolean(); + + boolean isCtrlPressed = buffer.readBoolean(); + boolean isShiftPressed = buffer.readBoolean(); + boolean isAltPressed = buffer.readBoolean(); + boolean isMetaPressed = buffer.readBoolean(); + + String ints = Server.readString(buffer); + String[] split = ints.split(","); + int[] keysDown; + + if(ints.length() > 0) { + keysDown = new int[split.length]; + try { + for (int i = 0; i < split.length; i++) { + keysDown[i] = Integer.parseInt(split[i]); + } + } + catch (NumberFormatException ignored){ + } + } else { + keysDown = new int[0]; + } + + EventHooks.onPlayerMouseClicked(player, button, mouseWheel, buttonDown, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDown); } else if(type == EnumPlayerPacket.FollowerHire){ EntityNPCInterface npc = NoppesUtilServer.getEditingNpc(player); diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index 9e6cd4443..4f4aee740 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -102,7 +102,7 @@ public class PacketHandlerServer{ if(type.needsNpc && npc == null){ } - else if(type.hasPermission() && !CustomNpcsPermissions.Instance.hasPermission(player, type.permission)){ + else if(type.hasPermission() && !CustomNpcsPermissions.hasPermission(player, type.permission)){ //player doesnt have permission to do this } else if(item == null && (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave || type == EnumPacketServer.ScriptNPCGet || type == EnumPacketServer.ScriptNPCSave || type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave)) @@ -119,20 +119,22 @@ public class PacketHandlerServer{ clonePackets(type, buffer, player); else if (item.getItem() == CustomItems.teleporter) featherPackets(type, buffer, player); - else if (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave) - playerScriptPackets(type, buffer, player); - else if (type == EnumPacketServer.ScriptNPCGet || type == EnumPacketServer.ScriptNPCSave) - npcScriptPackets(type, buffer, player); - else if (type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave) - forgeScriptPackets(type, buffer, player); - else if (type == EnumPacketServer.ScriptItemDataGet || type == EnumPacketServer.ScriptItemDataSave) - itemScriptPackets(type, buffer, player); - else if (type == EnumPacketServer.ScriptGlobalGuiDataGet || type == EnumPacketServer.ScriptGlobalGuiDataSave) - getScriptsEnabled(type, buffer, player); - else if (item.getItem() == CustomItems.scripter) - scriptPackets(type, buffer, player, npc); else if (item.getItem() == Item.getItemFromBlock(CustomItems.waypoint) || item.getItem() == Item.getItemFromBlock(CustomItems.border) || item.getItem() == Item.getItemFromBlock(CustomItems.redstoneBlock)) blockPackets(type, buffer, player); + else if (CustomNpcs.isScriptDev(player)) { + if (type == EnumPacketServer.ScriptPlayerGet || type == EnumPacketServer.ScriptPlayerSave) + playerScriptPackets(type, buffer, player); + else if (type == EnumPacketServer.ScriptNPCGet || type == EnumPacketServer.ScriptNPCSave) + npcScriptPackets(type, buffer, player); + else if (type == EnumPacketServer.ScriptForgeGet || type == EnumPacketServer.ScriptForgeSave) + forgeScriptPackets(type, buffer, player); + else if (type == EnumPacketServer.ScriptItemDataGet || type == EnumPacketServer.ScriptItemDataSave) + itemScriptPackets(type, buffer, player); + else if (type == EnumPacketServer.ScriptGlobalGuiDataGet || type == EnumPacketServer.ScriptGlobalGuiDataSave) + getScriptsEnabled(type, buffer, player); + else if (item.getItem() == CustomItems.scripter) + scriptPackets(type, buffer, player, npc); + } } } } catch (Exception e) { diff --git a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java index 21ffe46d0..449e704a1 100644 --- a/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptPlayerEventHandler.java @@ -22,10 +22,7 @@ import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.event.entity.EntityStruckByLightningEvent; import net.minecraftforge.event.entity.PlaySoundAtEntityEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; -import net.minecraftforge.event.entity.living.LivingDeathEvent; -import net.minecraftforge.event.entity.living.LivingEvent; -import net.minecraftforge.event.entity.living.LivingFallEvent; -import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.living.*; import net.minecraftforge.event.entity.player.*; import net.minecraftforge.event.world.*; import noppes.npcs.constants.EnumPacketClient; @@ -394,6 +391,26 @@ public class ScriptPlayerEventHandler { } } + @SubscribeEvent + public void invoke(LivingAttackEvent event) { + if(event.entityLiving == null || event.entityLiving.worldObj == null) + return; + + if(event.entityLiving.worldObj instanceof WorldServer) { + Entity source = NoppesUtilServer.GetDamageSourcee(event.source); + PlayerDataScript handler = ScriptController.Instance.playerScripts; + if(event.entityLiving instanceof EntityPlayer) { + noppes.npcs.scripted.event.PlayerEvent.AttackedEvent pevent = new noppes.npcs.scripted.event.PlayerEvent.AttackedEvent((IPlayer)NpcAPI.Instance().getIEntity((EntityPlayer)event.entityLiving), source, event.ammount, event.source); + event.setCanceled(EventHooks.onPlayerAttacked(handler, pevent)); + } + + if(source instanceof EntityPlayer) { + noppes.npcs.scripted.event.PlayerEvent.AttackEvent pevent1 = new noppes.npcs.scripted.event.PlayerEvent.AttackEvent((IPlayer)NpcAPI.Instance().getIEntity((EntityPlayer)event.source.getEntity()), event.entityLiving, event.ammount, event.source); + event.setCanceled(EventHooks.onPlayerAttack(handler, pevent1)); + } + } + } + @SubscribeEvent public void invoke(LivingHurtEvent event) { if(event.entityLiving == null || event.entityLiving.worldObj == null) diff --git a/src/main/java/noppes/npcs/VersionCompatibility.java b/src/main/java/noppes/npcs/VersionCompatibility.java index d218d0329..39886c4e0 100644 --- a/src/main/java/noppes/npcs/VersionCompatibility.java +++ b/src/main/java/noppes/npcs/VersionCompatibility.java @@ -19,17 +19,11 @@ public class VersionCompatibility { public static void CheckNpcCompatibility(EntityNPCInterface npc, NBTTagCompound compound){ if(npc.npcVersion == ModRev) return; - if(npc.npcVersion < 19){ - // Fix 64-Textures - String texture = compound.getString("Texture"); - texture = texture.replace("64-Textures/", ""); - compound.setString("Texture", texture); - + if(npc.npcVersion < 19) { if (compound.hasKey("CanDrown")) { compound.setInteger("DrowningType", (compound.getBoolean("CanDrown") ? 1 : 0)); compound.removeTag("CanDrown"); } - } if(npc.npcVersion < 18){ // Fix CloakTexture (Reorganization) diff --git a/src/main/java/noppes/npcs/ai/EntityAIReturn.java b/src/main/java/noppes/npcs/ai/EntityAIReturn.java index 9c3988ac3..771f42797 100644 --- a/src/main/java/noppes/npcs/ai/EntityAIReturn.java +++ b/src/main/java/noppes/npcs/ai/EntityAIReturn.java @@ -1,7 +1,6 @@ package noppes.npcs.ai; import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import noppes.npcs.CustomNpcs; import noppes.npcs.constants.EnumMovingType; @@ -34,13 +33,9 @@ public class EntityAIReturn extends EntityAIBase return false; } - if (npc.getNavigator().noPath() || (!npc.isAttacking() && wasAttacked)){ - return true; + if(npc.hasOwner() || npc.isKilled() || npc.isInteracting()){ + return false; } - - if(npc.hasOwner() || npc.isKilled() || npc.isInteracting()){ - return false; - } if (npc.ai.findShelter == 0 && (!npc.worldObj.isDaytime() || npc.worldObj.isRaining()) && !npc.worldObj.provider.hasNoSky){ if (npc.worldObj.canBlockSeeTheSky((int)npc.getStartXPos(), (int)npc.getStartYPos(), (int)npc.getStartZPos()) || npc.worldObj.getFullBlockLightValue((int)npc.getStartXPos(), (int)npc.getStartYPos(), (int)npc.getStartZPos()) <= 8){ @@ -63,7 +58,11 @@ public class EntityAIReturn extends EntityAIBase if(npc.ai.movingType == EnumMovingType.MovingPath && npc.ai.getDistanceSqToPathPoint() < CustomNpcs.NpcNavRange * CustomNpcs.NpcNavRange) return false; - + + if (npc.getNavigator().noPath() || (!npc.isAttacking() && wasAttacked)) { + return true; + } + if(npc.ai.movingType == EnumMovingType.Wandering) return this.npc.getDistanceSq(npc.getStartXPos(), npc.getStartYPos(), npc.getStartZPos()) > npc.ai.walkingRange * npc.ai.walkingRange; diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 22b555211..58fd8ea89 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -131,6 +131,7 @@ import noppes.npcs.client.renderer.blocks.BlockWeaponRackRenderer; import noppes.npcs.config.StringCache; import noppes.npcs.constants.EnumGuiType; import noppes.npcs.containers.*; +import noppes.npcs.client.controllers.ScriptSoundController; import noppes.npcs.controllers.data.PlayerData; import noppes.npcs.entity.*; @@ -158,6 +159,7 @@ public class ClientProxy extends CommonProxy { CustomNpcs.Channel.register(new PacketHandlerClient()); CustomNpcs.ChannelPlayer.register(new PacketHandlerPlayer()); new MusicController(); + new ScriptSoundController(); RenderingRegistry.registerEntityRenderingHandler(EntityNpcPony.class, new RenderNPCPony()); RenderingRegistry.registerEntityRenderingHandler(EntityNpcCrystal.class, new RenderNpcCrystal(new ModelNpcCrystal(0.5F))); diff --git a/src/main/java/noppes/npcs/client/ClientTickHandler.java b/src/main/java/noppes/npcs/client/ClientTickHandler.java index 16c08ad20..adc26b179 100644 --- a/src/main/java/noppes/npcs/client/ClientTickHandler.java +++ b/src/main/java/noppes/npcs/client/ClientTickHandler.java @@ -6,6 +6,7 @@ import net.minecraft.world.World; import noppes.npcs.CustomNpcs; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.client.controllers.MusicController; +import noppes.npcs.client.controllers.ScriptSoundController; import noppes.npcs.client.gui.player.GuiQuestLog; import noppes.npcs.client.renderer.RenderNPCInterface; import noppes.npcs.constants.EnumPlayerPacket; @@ -43,14 +44,30 @@ public class ClientTickHandler{ prevWorld = mc.theWorld; MusicController.Instance.stopMusic(); } + ScriptSoundController.Instance.onUpdate(); } @SubscribeEvent public void onMouse(InputEvent.MouseInputEvent event){ - if(Mouse.getEventButton() == -1 && Mouse.getDWheel() == 0) + if(Mouse.getEventButton() == -1 && Mouse.getEventDWheel() == 0) return; - NoppesUtilPlayer.sendData(EnumPlayerPacket.MouseClicked, new Object[]{Mouse.getEventButton(),Mouse.getEventDWheel(),Mouse.isButtonDown(Mouse.getEventButton())}); + boolean isCtrlPressed = Keyboard.isKeyDown(157) || Keyboard.isKeyDown(29); + boolean isShiftPressed = Keyboard.isKeyDown(54) || Keyboard.isKeyDown(42); + boolean isAltPressed = Keyboard.isKeyDown(184) || Keyboard.isKeyDown(56); + boolean isMetaPressed = Keyboard.isKeyDown(220) || Keyboard.isKeyDown(219); + + StringBuilder keysDownString = new StringBuilder(); + for (int i = 0; i < Keyboard.getKeyCount(); i++) {//Creates a comma separated string of the integer IDs of held keys + if (Keyboard.isKeyDown(i)) { + keysDownString.append(Integer.valueOf(i)).append(","); + } + } + if (keysDownString.length() > 0) {//Removes last comma for later parsing + keysDownString.deleteCharAt(keysDownString.length() - 1); + } + + NoppesUtilPlayer.sendData(EnumPlayerPacket.MouseClicked, Mouse.getEventButton(),Mouse.getEventDWheel(),Mouse.isButtonDown(Mouse.getEventButton()), isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keysDownString.toString()); } @SubscribeEvent @@ -81,7 +98,7 @@ public class ClientTickHandler{ keysDownString.deleteCharAt(keysDownString.length() - 1); } - NoppesUtilPlayer.sendData(EnumPlayerPacket.KeyPressed, new Object[]{Integer.valueOf(key), Boolean.valueOf(isCtrlPressed), Boolean.valueOf(isShiftPressed), Boolean.valueOf(isAltPressed), Boolean.valueOf(isMetaPressed), Boolean.valueOf(keyDown), keysDownString.toString()}); + NoppesUtilPlayer.sendData(EnumPlayerPacket.KeyPressed, key, isCtrlPressed, isShiftPressed, isAltPressed, isMetaPressed, keyDown, keysDownString.toString()); } } diff --git a/src/main/java/noppes/npcs/client/PacketHandlerClient.java b/src/main/java/noppes/npcs/client/PacketHandlerClient.java index fca92c895..006977b35 100644 --- a/src/main/java/noppes/npcs/client/PacketHandlerClient.java +++ b/src/main/java/noppes/npcs/client/PacketHandlerClient.java @@ -25,6 +25,8 @@ import noppes.npcs.Server; import noppes.npcs.ServerEventsHandler; import noppes.npcs.client.ClientProxy.FontContainer; import noppes.npcs.client.controllers.MusicController; +import noppes.npcs.client.controllers.ScriptClientSound; +import noppes.npcs.client.controllers.ScriptSoundController; import noppes.npcs.client.gui.GuiNpcMobSpawnerAdd; import noppes.npcs.client.gui.OverlayQuestTracking; import noppes.npcs.client.gui.customoverlay.OverlayCustom; @@ -305,5 +307,25 @@ public class PacketHandlerClient extends PacketHandlerServer{ } } catch (Exception ignored) {} } + else if(type == EnumPacketClient.PLAY_SOUND_TO) { + int id = buffer.readInt(); + NBTTagCompound compound = Server.readNBT(buffer); + ScriptClientSound sound = ScriptClientSound.fromScriptSound(compound, player.worldObj); + + ScriptSoundController.Instance.playSound(id,sound); + } + else if(type == EnumPacketClient.STOP_SOUND_FOR) { + int id = buffer.readInt(); + ScriptSoundController.Instance.stopSound(id); + } + else if(type == EnumPacketClient.PAUSE_SOUNDS) { + ScriptSoundController.Instance.pauseAllSounds(); + } + else if(type == EnumPacketClient.CONTINUE_SOUNDS) { + ScriptSoundController.Instance.continueAllSounds(); + } + else if(type == EnumPacketClient.STOP_SOUNDS) { + ScriptSoundController.Instance.stopAllSounds(); + } } } diff --git a/src/main/java/noppes/npcs/client/controllers/ScriptClientSound.java b/src/main/java/noppes/npcs/client/controllers/ScriptClientSound.java new file mode 100644 index 000000000..f20738670 --- /dev/null +++ b/src/main/java/noppes/npcs/client/controllers/ScriptClientSound.java @@ -0,0 +1,53 @@ +package noppes.npcs.client.controllers; + +import net.minecraft.client.audio.ITickableSound; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import noppes.npcs.scripted.ScriptSound; + +public class ScriptClientSound extends MovingSound implements ITickableSound { + private Entity entity; + public boolean paused; + + protected ScriptClientSound(ResourceLocation location) { + super(location); + } + + public static ScriptClientSound fromScriptSound(NBTTagCompound compound, World world) { + ScriptSound sound = ScriptSound.fromNBT(compound); + ScriptClientSound clientSound = new ScriptClientSound(new ResourceLocation(sound.directory)); + clientSound.xPosF = sound.xPosF; + clientSound.yPosF = sound.yPosF; + clientSound.zPosF = sound.zPosF; + clientSound.volume = sound.volume; + clientSound.field_147663_c = sound.pitch; + clientSound.repeat = sound.repeat; + clientSound.field_147665_h = sound.repeatDelay; + if (compound.hasKey("EntityID")) { + clientSound.entity = world.getEntityByID(compound.getInteger("EntityID")); + clientSound.field_147666_i = AttenuationType.NONE; + } + return clientSound; + } + + public void stopSound() { + this.repeat = false; + this.volume = 0; + } + + @Override + public void update() { + if (entity != null) { + if (this.entity.isDead) { + this.donePlaying = true; + } else { + this.xPosF = (float) (this.entity.posX); + this.yPosF = (float) (this.entity.posY); + this.zPosF = (float) (this.entity.posZ); + } + } + } +} diff --git a/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java b/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java new file mode 100644 index 000000000..2b8d6324b --- /dev/null +++ b/src/main/java/noppes/npcs/client/controllers/ScriptSoundController.java @@ -0,0 +1,68 @@ +package noppes.npcs.client.controllers; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.SoundHandler; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +public class ScriptSoundController { + public HashMap sounds = new HashMap<>(); + public static ScriptSoundController Instance; + + public ScriptSoundController() { + Instance = this; + } + + public void onUpdate() { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + final Set> entrySet = sounds.entrySet(); + for (Map.Entry entry : entrySet) { + ScriptClientSound sound = entry.getValue(); + if (!soundHandler.isSoundPlaying(sound) && !sound.canRepeat() && !sound.paused) { + sounds.remove(entry.getKey()); + } + } + } + + public void playSound(int id, ScriptClientSound sound) { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + if (sounds.containsKey(id)) { + soundHandler.stopSound(sound); + sounds.get(id).stopSound(); + } + sounds.put(id,sound); + soundHandler.playSound(sound); + } + + public void stopSound(int id) { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + if (sounds.containsKey(id)) { + soundHandler.stopSound(sounds.get(id)); + sounds.get(id).stopSound(); + sounds.remove(id); + } + } + + public void pauseAllSounds() { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + soundHandler.pauseSounds(); + for (ScriptClientSound sound : sounds.values()) { + sound.paused = true; + } + } + + public void continueAllSounds() { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + soundHandler.resumeSounds(); + for (ScriptClientSound sound : sounds.values()) { + sound.paused = false; + } + } + + public void stopAllSounds() { + SoundHandler soundHandler = Minecraft.getMinecraft().getSoundHandler(); + soundHandler.stopSounds(); + sounds.clear(); + } +} diff --git a/src/main/java/noppes/npcs/client/fx/CustomFX.java b/src/main/java/noppes/npcs/client/fx/CustomFX.java index 649ae04d0..2358f7fcc 100644 --- a/src/main/java/noppes/npcs/client/fx/CustomFX.java +++ b/src/main/java/noppes/npcs/client/fx/CustomFX.java @@ -314,12 +314,22 @@ public class CustomFX extends EntityFX { } else { tessellator.setBrightness(240); } + + float textureXScale = 1.0F, textureYScale = 1.0F; + if (totalWidth > totalHeight) { + textureYScale = (float) totalHeight/totalWidth; + GL11.glScalef(1/textureYScale/2,1/textureYScale/2,1/textureYScale/2); + } else if(totalHeight > totalWidth) { + textureXScale = (float) totalWidth/totalHeight; + GL11.glScalef(1/textureXScale/2,1/textureXScale/2,1/textureXScale/2); + } + tessellator.setColorOpaque_F(1, 1, 1); tessellator.setColorRGBA_F(particleRed, particleGreen, particleBlue, particleAlpha); - tessellator.addVertexWithUV( (u2-u1)/2, 0, (v2-v1)/2, u2, v2); - tessellator.addVertexWithUV( (u2-u1)/2, 0, -(v2-v1)/2, u2, v1); - tessellator.addVertexWithUV( -(u2-u1)/2, 0, -(v2-v1)/2, u1, v1); - tessellator.addVertexWithUV( -(u2-u1)/2, 0, (v2-v1)/2, u1, v2); + tessellator.addVertexWithUV( textureXScale * (u2-u1)/2, 0, textureYScale * (v2-v1)/2, u2, v2); + tessellator.addVertexWithUV( textureXScale * (u2-u1)/2, 0, textureYScale * -(v2-v1)/2, u2, v1); + tessellator.addVertexWithUV( textureXScale * -(u2-u1)/2, 0, textureYScale * -(v2-v1)/2, u1, v1); + tessellator.addVertexWithUV( textureXScale * -(u2-u1)/2, 0, textureYScale * (v2-v1)/2, u1, v2); tessellator.draw(); GL11.glPopMatrix(); } diff --git a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiButton.java b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiButton.java index ca93e04d0..1a37435c5 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiButton.java +++ b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiButton.java @@ -90,8 +90,6 @@ public class CustomGuiButton extends GuiButton implements IClickListener { } public void onRender(Minecraft mc, int mouseX, int mouseY, int mouseWheel, float partialTicks) { - //GL11.func_179094_E(); - //GL11.func_179109_b(0.0F, 0.0F, (float)this.id); GL11.glPushMatrix(); float red = (color >> 16 & 255) / 255f; float green = (color >> 8 & 255) / 255f; @@ -131,11 +129,12 @@ public class CustomGuiButton extends GuiButton implements IClickListener { //GL11.func_187401_a(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); this.drawTexturedModalRect(this.xPosition, this.yPosition, this.textureX, this.textureY + i * this.height, this.width, this.height); this.drawCenteredString(fontRenderer, this.label, this.xPosition + this.width / 2, this.yPosition + (this.height - 8) / 2, this.color); - if (this.field_146123_n && this.hoverText != null && this.hoverText.length > 0) { - this.parent.hoverText = this.hoverText; - } } GL11.glPopMatrix(); + + if (this.field_146123_n && this.hoverText != null && this.hoverText.length > 0) { + this.parent.hoverText = this.hoverText; + } } public ICustomGuiComponent toComponent() { diff --git a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLabel.java b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLabel.java index 7d99a4a87..80626d303 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLabel.java +++ b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLabel.java @@ -116,7 +116,10 @@ public class CustomGuiLabel extends Gui implements IGuiComponent { public void onRender(Minecraft mc, int mouseX, int mouseY, int mouseWheel, float partialTicks) { boolean hovered = mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.field_146167_a && mouseY < this.y + this.field_146161_f; + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F,0.0F,(float)this.id); this.drawLabel(); + GL11.glPopMatrix(); if (hovered && this.hoverText != null && this.hoverText.length > 0) { this.parent.hoverText = this.hoverText; } diff --git a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLine.java b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLine.java index a28fe8f4e..fbadc1bed 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLine.java +++ b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiLine.java @@ -50,7 +50,7 @@ public class CustomGuiLine extends Gui implements IGuiComponent { float blue = (color & 255) / 255f; GL11.glColor4f(red,green,blue,this.alpha); - GL11.glTranslatef(GuiCustom.guiLeft+this.x1,GuiCustom.guiTop+this.y1,0.0F); + GL11.glTranslatef(GuiCustom.guiLeft+this.x1,GuiCustom.guiTop+this.y1,(float)this.id); GL11.glRotated(-Math.toDegrees(Math.atan2(x2-x1,y2-y1)),0.0F,0.0F,1.0F); GL11.glRotated(rotation,0.0D,0.0D,1.0D); GL11.glScaled(thickness, distance,0.0D); diff --git a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiScrollComponent.java b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiScrollComponent.java index c809331e8..786c5120f 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiScrollComponent.java +++ b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiScrollComponent.java @@ -23,17 +23,10 @@ import org.lwjgl.opengl.GL11; public class CustomGuiScrollComponent extends GuiCustomScroll implements IDataHolder, IClickListener { GuiCustom parent; String[] hoverText; - public boolean multiSelect = false; - + public boolean multiSelect; int color; float alpha; - public CustomGuiScrollComponent(Minecraft mc, GuiScreen parent, int id) { - super(parent, id); - this.mc = mc; - this.fontRendererObj = mc.fontRenderer; - } - public CustomGuiScrollComponent(Minecraft mc, GuiScreen parent, int id, boolean multiSelect) { super(parent, id, multiSelect); this.mc = mc; diff --git a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTextField.java b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTextField.java index 1d02d405e..ffbc6a66a 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTextField.java +++ b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTextField.java @@ -40,7 +40,10 @@ public class CustomGuiTextField extends GuiTextField implements IKeyListener, ID float green = (color >> 8 & 255) / 255f; float blue = (color & 255) / 255f; GL11.glColor4f(red,green,blue,this.alpha); + GL11.glPushMatrix(); + GL11.glTranslatef(0.0F,0.0F,(float)this.id); this.drawTextBox(); + GL11.glPopMatrix(); GL11.glColor4f(1.0F,1.0F,1.0F,1.0F); if (hovered && this.hoverText != null && this.hoverText.length > 0) { this.parent.hoverText = this.hoverText; diff --git a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTexturedRect.java b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTexturedRect.java index e11759649..0b0899e6b 100644 --- a/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTexturedRect.java +++ b/src/main/java/noppes/npcs/client/gui/custom/components/CustomGuiTexturedRect.java @@ -10,6 +10,7 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.ITextureObject; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.resources.IResource; import net.minecraft.util.ResourceLocation; import noppes.npcs.client.ImageDownloadAlt; import noppes.npcs.client.gui.custom.GuiCustom; @@ -19,9 +20,14 @@ import noppes.npcs.scripted.gui.ScriptGuiTexturedRect; import noppes.npcs.scripted.interfaces.gui.ICustomGuiComponent; import org.lwjgl.opengl.GL11; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; + public class CustomGuiTexturedRect extends Gui implements IGuiComponent { GuiCustom parent; - ResourceLocation texture; + ResourceLocation location; int id; int x; int y; @@ -36,14 +42,19 @@ public class CustomGuiTexturedRect extends Gui implements IGuiComponent { float alpha; float rotation; + private int totalWidth, totalHeight; + private ImageDownloadAlt imageDownloadAlt = null; + private boolean isUrl = false; + private boolean gotWidthHeight = false; + public CustomGuiTexturedRect(int id, String texture, int x, int y, int width, int height) { this(id, texture, x, y, width, height, 0, 0); } - public CustomGuiTexturedRect(int id, String texture, int x, int y, int width, int height, int textureX, int textureY) { + public CustomGuiTexturedRect(int id, String directory, int x, int y, int width, int height, int textureX, int textureY) { this.scale = 1.0F; this.id = id; - this.texture = new ResourceLocation(texture); + this.location = new ResourceLocation(directory); this.x = x; this.y = y; this.width = width; @@ -51,10 +62,17 @@ public class CustomGuiTexturedRect extends Gui implements IGuiComponent { this.textureX = textureX; this.textureY = textureY; - if(texture.startsWith("https://")){ + if(directory.startsWith("https://")){ + this.isUrl = true; TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); - ITextureObject object = new ImageDownloadAlt(null, texture, new ResourceLocation("customnpcs:textures/gui/invisible.png"), new ImageBufferDownloadAlt(true,false)); - texturemanager.loadTexture(this.texture, object); + this.imageDownloadAlt = new ImageDownloadAlt(null, directory, new ResourceLocation("customnpcs:textures/gui/invisible.png"), new ImageBufferDownloadAlt(true,false)); + texturemanager.loadTexture(this.location, this.imageDownloadAlt); + } else { + try { + this.getWidthHeight(); + } catch (IOException e) { + e.printStackTrace(); + } } } @@ -68,7 +86,16 @@ public class CustomGuiTexturedRect extends Gui implements IGuiComponent { public void onRender(Minecraft mc, int mouseX, int mouseY, int mouseWheel, float partialTicks) { boolean hovered = mouseX >= this.x + GuiCustom.guiLeft && mouseY >= this.y + GuiCustom.guiTop && mouseX < this.x + GuiCustom.guiLeft + this.width && mouseY < this.y + GuiCustom.guiTop + this.height; - mc.getTextureManager().bindTexture(this.texture); + mc.getTextureManager().bindTexture(this.location); + + float u1 = (float)textureX/(float)totalWidth; + float u2 = u1 + (float)width/(float)totalWidth; + float v1 = (float)textureY/(float)totalHeight; + float v2 = v1 + (float)height/(float)totalHeight; + + if(imageDownloadAlt != null && isUrl && !gotWidthHeight){ + getURLWidthHeight(); + } GL11.glPushMatrix(); float red = (color >> 16 & 255) / 255f; @@ -76,27 +103,18 @@ public class CustomGuiTexturedRect extends Gui implements IGuiComponent { float blue = (color & 255) / 255f; GL11.glColor4f(red,green,blue,this.alpha); - GL11.glTranslatef(GuiCustom.guiLeft,GuiCustom.guiTop,0.0F); + GL11.glTranslatef(GuiCustom.guiLeft + this.x - u1 * totalWidth, GuiCustom.guiTop + this.y - v1 * totalHeight,(float)this.id); GL11.glRotatef(this.rotation,0.0F,0.0F,1.0F); GL11.glScalef(this.scale, this.scale, this.scale); - int p_73729_1_ = (int) (this.x/this.scale); - int p_73729_2_ = (int) (this.y/this.scale); - int p_73729_3_ = this.textureX; - int p_73729_4_ = this.textureY; - int p_73729_5_ = (int)(this.width); - int p_73729_6_ = (int)(this.height); - - float f = 0.00390625F; - float f1 = 0.00390625F; Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.setColorOpaque_F(1, 1, 1); tessellator.setColorRGBA_F(red, green, blue, alpha); - tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1)); - tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1)); - tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + 0) * f1)); - tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + 0) * f1)); + tessellator.addVertexWithUV( u2 * totalWidth, v2 * totalHeight, 0, u2, v2); + tessellator.addVertexWithUV( u2 * totalWidth, v1 * totalHeight, 0, u2, v1); + tessellator.addVertexWithUV( u1 * totalWidth, v1 * totalHeight, 0, u1, v1); + tessellator.addVertexWithUV( u1 * totalWidth, v2 * totalHeight, 0, u1, v2); tessellator.draw(); GL11.glPopMatrix(); @@ -106,7 +124,7 @@ public class CustomGuiTexturedRect extends Gui implements IGuiComponent { } public ICustomGuiComponent toComponent() { - ScriptGuiTexturedRect component = new ScriptGuiTexturedRect(this.id, this.texture.toString(), this.x, this.y, this.width, this.height, this.textureX, this.textureY); + ScriptGuiTexturedRect component = new ScriptGuiTexturedRect(this.id, this.location.toString(), this.x, this.y, this.width, this.height, this.textureX, this.textureY); component.setHoverText(this.hoverText); component.setScale(this.scale); component.setColor(color); @@ -134,4 +152,40 @@ public class CustomGuiTexturedRect extends Gui implements IGuiComponent { return rect; } + + public void getWidthHeight() throws IOException { + InputStream inputstream = null; + + try { + IResource iresource = Minecraft.getMinecraft().getResourceManager().getResource(this.location); + inputstream = iresource.getInputStream(); + BufferedImage bufferedimage = ImageIO.read(inputstream); + gotWidthHeight = true; + this.totalWidth = bufferedimage.getWidth(); + this.totalHeight = bufferedimage.getHeight(); + correctWidthHeight(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (inputstream != null) { + inputstream.close(); + } + } + } + + public void getURLWidthHeight(){ + if(imageDownloadAlt.getBufferedImage() != null) { + gotWidthHeight = true; + this.totalWidth = imageDownloadAlt.getBufferedImage().getWidth(); + this.totalHeight = imageDownloadAlt.getBufferedImage().getHeight(); + correctWidthHeight(); + } + } + + public void correctWidthHeight(){ + totalWidth = Math.max(totalWidth, 1); + totalHeight = Math.max(totalHeight, 1); + this.width = width < 0 ? totalWidth : width; + this.height = height < 0 ? totalHeight : height; + } } diff --git a/src/main/java/noppes/npcs/client/gui/customoverlay/components/CustomOverlayTexturedRect.java b/src/main/java/noppes/npcs/client/gui/customoverlay/components/CustomOverlayTexturedRect.java index 2525b1d42..929e2d581 100644 --- a/src/main/java/noppes/npcs/client/gui/customoverlay/components/CustomOverlayTexturedRect.java +++ b/src/main/java/noppes/npcs/client/gui/customoverlay/components/CustomOverlayTexturedRect.java @@ -5,6 +5,7 @@ import net.minecraft.client.gui.Gui; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.ITextureObject; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.resources.IResource; import net.minecraft.util.ResourceLocation; import noppes.npcs.client.ImageDownloadAlt; import noppes.npcs.client.gui.customoverlay.OverlayCustom; @@ -14,12 +15,17 @@ import noppes.npcs.scripted.interfaces.overlay.ICustomOverlayComponent; import noppes.npcs.scripted.overlay.ScriptOverlayTexturedRect; import org.lwjgl.opengl.GL11; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.io.InputStream; + public class CustomOverlayTexturedRect extends Gui implements IOverlayComponent { OverlayCustom parent; int alignment; int id; - ResourceLocation texture; + ResourceLocation location; int x; int y; int width; @@ -32,15 +38,20 @@ public class CustomOverlayTexturedRect extends Gui implements IOverlayComponent float alpha; float rotation; + private int totalWidth, totalHeight; + private ImageDownloadAlt imageDownloadAlt = null; + private boolean isUrl = false; + private boolean gotWidthHeight = false; + public CustomOverlayTexturedRect(int id, String texture, int x, int y, int width, int height) { this(id, texture, x, y, width, height, 0, 0); } - public CustomOverlayTexturedRect(int id, String texture, int x, int y, int width, int height, int textureX, int textureY) { + public CustomOverlayTexturedRect(int id, String directory, int x, int y, int width, int height, int textureX, int textureY) { this.scale = 1.0F; this.alignment = 0; this.id = id; - this.texture = new ResourceLocation(texture); + this.location = new ResourceLocation(directory); this.x = x; this.y = y; this.width = width; @@ -48,10 +59,17 @@ public class CustomOverlayTexturedRect extends Gui implements IOverlayComponent this.textureX = textureX; this.textureY = textureY; - if(texture.startsWith("https://")){ + if(directory.startsWith("https://")){ + this.isUrl = true; TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); - ITextureObject object = new ImageDownloadAlt(null, texture, new ResourceLocation("customnpcs:textures/gui/invisible.png"), new ImageBufferDownloadAlt(true,false)); - texturemanager.loadTexture(this.texture, object); + this.imageDownloadAlt = new ImageDownloadAlt(null, directory, new ResourceLocation("customnpcs:textures/gui/invisible.png"), new ImageBufferDownloadAlt(true,false)); + texturemanager.loadTexture(this.location, this.imageDownloadAlt); + } else { + try { + this.getWidthHeight(); + } catch (IOException e) { + e.printStackTrace(); + } } } @@ -64,7 +82,16 @@ public class CustomOverlayTexturedRect extends Gui implements IOverlayComponent } public void onRender(Minecraft mc, float partialTicks) { - mc.getTextureManager().bindTexture(this.texture); + mc.getTextureManager().bindTexture(this.location); + + float u1 = (float)textureX/(float)totalWidth; + float u2 = u1 + (float)width/(float)totalWidth; + float v1 = (float)textureY/(float)totalHeight; + float v2 = v1 + (float)height/(float)totalHeight; + + if(imageDownloadAlt != null && isUrl && !gotWidthHeight){ + getURLWidthHeight(); + } GL11.glPushMatrix(); float red = (color >> 16 & 255) / 255f; @@ -72,34 +99,26 @@ public class CustomOverlayTexturedRect extends Gui implements IOverlayComponent float blue = (color & 255) / 255f; GL11.glTranslatef(this.alignment%3*((float)(OverlayCustom.scaledWidth)/2), (float) (Math.floor((float)(alignment/3))*((float)(OverlayCustom.scaledHeight)/2)),0.0F); + GL11.glTranslatef( this.x - u1 * totalWidth, this.y - v1 * totalHeight,(float)this.id); GL11.glScalef(this.scale, this.scale, this.scale); GL11.glRotatef(this.rotation,0.0F,0.0F,1.0F); - int p_73729_1_ = (int) (this.x/this.scale); - int p_73729_2_ = (int) (this.y/this.scale); - int p_73729_3_ = this.textureX; - int p_73729_4_ = this.textureY; - int p_73729_5_ = (int)(this.width); - int p_73729_6_ = (int)(this.height); - - float f = 0.00390625F; - float f1 = 0.00390625F; Tessellator tessellator = Tessellator.instance; tessellator.startDrawingQuads(); tessellator.setColorOpaque_F(1, 1, 1); tessellator.setColorRGBA_F(red, green, blue, alpha); - tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1)); - tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + p_73729_6_), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + p_73729_6_) * f1)); - tessellator.addVertexWithUV((double)(p_73729_1_ + p_73729_5_), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + p_73729_5_) * f), (double)((float)(p_73729_4_ + 0) * f1)); - tessellator.addVertexWithUV((double)(p_73729_1_ + 0), (double)(p_73729_2_ + 0), (double)this.zLevel, (double)((float)(p_73729_3_ + 0) * f), (double)((float)(p_73729_4_ + 0) * f1)); + tessellator.addVertexWithUV( u2 * totalWidth, v2 * totalHeight, 0, u2, v2); + tessellator.addVertexWithUV( u2 * totalWidth, v1 * totalHeight, 0, u2, v1); + tessellator.addVertexWithUV( u1 * totalWidth, v1 * totalHeight, 0, u1, v1); + tessellator.addVertexWithUV( u1 * totalWidth, v2 * totalHeight, 0, u1, v2); tessellator.draw(); GL11.glPopMatrix(); } public ICustomOverlayComponent toComponent() { - ScriptOverlayTexturedRect component = new ScriptOverlayTexturedRect(this.id, this.texture.toString(), this.x, this.y, this.width, this.height, this.textureX, this.textureY); + ScriptOverlayTexturedRect component = new ScriptOverlayTexturedRect(this.id, this.location.toString(), this.x, this.y, this.width, this.height, this.textureX, this.textureY); component.setScale(scale); component.setAlignment(alignment); component.setAlpha(alpha); @@ -124,4 +143,40 @@ public class CustomOverlayTexturedRect extends Gui implements IOverlayComponent return rect; } + + public void getWidthHeight() throws IOException { + InputStream inputstream = null; + + try { + IResource iresource = Minecraft.getMinecraft().getResourceManager().getResource(this.location); + inputstream = iresource.getInputStream(); + BufferedImage bufferedimage = ImageIO.read(inputstream); + gotWidthHeight = true; + this.totalWidth = bufferedimage.getWidth(); + this.totalHeight = bufferedimage.getHeight(); + correctWidthHeight(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (inputstream != null) { + inputstream.close(); + } + } + } + + public void getURLWidthHeight(){ + if(imageDownloadAlt.getBufferedImage() != null) { + gotWidthHeight = true; + this.totalWidth = imageDownloadAlt.getBufferedImage().getWidth(); + this.totalHeight = imageDownloadAlt.getBufferedImage().getHeight(); + correctWidthHeight(); + } + } + + public void correctWidthHeight(){ + totalWidth = Math.max(totalWidth, 1); + totalHeight = Math.max(totalHeight, 1); + this.width = width < 0 ? totalWidth : width; + this.height = height < 0 ? totalHeight : height; + } } diff --git a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java index 7036b375c..41fb6f643 100644 --- a/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java +++ b/src/main/java/noppes/npcs/client/gui/mainmenu/GuiNpcDisplay.java @@ -153,8 +153,6 @@ public class GuiNpcDisplay extends GuiNPCInterface2 implements ITextfieldListene } if(button.id == 2){ display.skinType = (byte) button.getValue(); - // System.out.println("Skin Type set to:" + display.skinType); - // SKIN CHANGE if (display.skinType != 3){ display.url = ""; } diff --git a/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java b/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java index 69b9a5846..4fce0cb4a 100644 --- a/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java +++ b/src/main/java/noppes/npcs/client/gui/player/GuiQuestLog.java @@ -124,13 +124,13 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I super.drawScreen(i, j, f); if(noQuests){ - mc.fontRenderer.drawString(StatCollector.translateToLocal("quest.noquests"),guiLeft + 84,guiTop + 80, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(StatCollector.translateToLocal("quest.noquests"),guiLeft + 84,guiTop + 80, CustomNpcResourceListener.DefaultTextColor); return; } for(GuiMenuSideButton button: sideButtons.values().toArray(new GuiMenuSideButton[sideButtons.size()])){ button.drawButton(mc, i, j); } - mc.fontRenderer.drawString(data.selectedCategory,guiLeft + 5,guiTop + 5, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(data.selectedCategory,guiLeft + 5,guiTop + 5, CustomNpcResourceListener.DefaultTextColor); if(!data.hasSelectedQuest()) return; @@ -138,11 +138,11 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I if (questDetails) { drawProgress(); String title = StatCollector.translateToLocal("gui.text"); - mc.fontRenderer.drawString(title, guiLeft + 284 - mc.fontRenderer.getStringWidth(title), guiTop + 179, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(title, guiLeft + 284 - fontRendererObj.getStringWidth(title), guiTop + 179, CustomNpcResourceListener.DefaultTextColor); } else { drawQuestText(); String title = StatCollector.translateToLocal("quest.objectives"); - mc.fontRenderer.drawString(title, guiLeft + 168, guiTop + 179, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(title, guiLeft + 168, guiTop + 179, CustomNpcResourceListener.DefaultTextColor); } GL11.glPushMatrix(); @@ -165,7 +165,7 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I private void drawProgress() { String complete = data.getComplete(); if(complete != null && !complete.isEmpty()) - mc.fontRenderer.drawString(StatCollector.translateToLocalFormatted("quest.completewith", complete), guiLeft + 144, guiTop + 105, CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString(StatCollector.translateToLocalFormatted("quest.completewith", complete), guiLeft + 144, guiTop + 105, CustomNpcResourceListener.DefaultTextColor); int yoffset = guiTop + 22; for(String process : data.getQuestStatus()){ @@ -181,7 +181,7 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I } process = name + process.substring(index); } - mc.fontRenderer.drawString("- " + process, guiLeft + 144, yoffset , CustomNpcResourceListener.DefaultTextColor); + fontRendererObj.drawString("- " + process, guiLeft + 144, yoffset , CustomNpcResourceListener.DefaultTextColor); yoffset += 10; } } @@ -250,7 +250,7 @@ public class GuiQuestLog extends GuiNPCInterface implements ITopButtonListener,I @Override public void save() { - if (this.data != null && !this.data.trackedQuestKey.isEmpty()) + if (this.data != null) Client.sendData(EnumPacketServer.UpdateTrackedQuest, this.data.trackedQuestKey); } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index a7e3fb791..258cf8018 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -103,6 +103,8 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb hookList.add("init"); hookList.add("tick"); hookList.add("interact"); + hookList.add("attack"); + hookList.add("attacked"); hookList.add("damagedEntity"); hookList.add("damaged"); hookList.add("kills"); @@ -318,11 +320,11 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb public void confirmClicked(boolean flag, int i) { if(flag) { if(i == 0) { - this.openLink("http://www.kodevelopment.nl/minecraft/customnpcs/scripting"); + this.openLink("https://www.curseforge.com/minecraft/mc-mods/customnpc-plus"); } if(i == 1) { - this.openLink("http://www.kodevelopment.nl/customnpcs/api/"); + this.openLink("https://kamkeel.github.io/CustomNPC-Plus/"); } if(i == 2) { @@ -378,6 +380,7 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb if(guibutton.id == 101) { (this.getTextField(2)).setText(NoppesStringUtils.getClipboardContents()); + this.setScript(); } ScriptContainer container; @@ -425,7 +428,7 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb container = (ScriptContainer)this.handler.getScripts().get(this.activeTab - 1); if(container != null) { this.setScript(); - this.AWTWindow = new GuiJTextArea(container.script).setListener(this); + AWTWindow = new GuiJTextArea(container.script).setListener(this); } } diff --git a/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java b/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java index e7560b25c..7e322740a 100644 --- a/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java +++ b/src/main/java/noppes/npcs/client/gui/util/GuiNpcTextArea.java @@ -27,7 +27,8 @@ public class GuiNpcTextArea extends GuiNpcTextField implements IGui{ private int startClick = -1; private boolean clickVerticalBar = false; private boolean wrapLine = true; - + private List lines = new ArrayList<>(); + public GuiNpcTextArea(int id,GuiScreen guiscreen, int i, int j, int k, int l, String s) { super(id,guiscreen, i, j, k, l, s); posX = i; @@ -39,34 +40,57 @@ public class GuiNpcTextArea extends GuiNpcTextField implements IGui{ this.setText(s); } + @Override + public void setText(String text) { + super.setText(text); + + updateLineList(); + } + + public void updateLineList() { + List list = new ArrayList(); + StringBuilder line = new StringBuilder(); + for(char c : getText().toCharArray()){ + if(c == '\r' || c == '\n'){ + list.add(line.toString()); + line = new StringBuilder(); + } + else + line.append(c); + } + list.add(line.toString()); + lines = list; + } + @Override public void updateCursorCounter(){ cursorCounter++; } - + @Override - public boolean textboxKeyTyped(char c, int i){ - if (isFocused() && canEdit){ - String originalText = getText(); - this.setText(originalText); - if(c == '\r' || c == '\n'){ - this.setText(originalText.substring(0, cursorPosition) + c + originalText.substring(cursorPosition)); - } - this.setCursorPositionZero(); - this.moveCursorBy(cursorPosition); - boolean bo = super.textboxKeyTyped(c, i); - String newText = getText(); - if(i != Keyboard.KEY_DELETE) - cursorPosition += newText.length() - originalText.length(); - if(i == Keyboard.KEY_LEFT && cursorPosition > 0) - cursorPosition--; - if(i == Keyboard.KEY_RIGHT && cursorPosition < newText.length()) - cursorPosition++; - return bo; - - } - return false; - } + public boolean textboxKeyTyped(char c, int i){ + if (isFocused() && canEdit){ + String originalText = getText(); + this.setText(originalText); + if(c == '\r' || c == '\n'){ + this.setText(originalText.substring(0, cursorPosition) + c + originalText.substring(cursorPosition)); + } + this.setCursorPositionZero(); + this.moveCursorBy(cursorPosition); + boolean bo = super.textboxKeyTyped(c, i); + updateLineList(); + String newText = getText(); + if(i != Keyboard.KEY_DELETE) + cursorPosition += newText.length() - originalText.length(); + if(i == Keyboard.KEY_LEFT && cursorPosition > 0) + cursorPosition--; + if(i == Keyboard.KEY_RIGHT && cursorPosition < newText.length()) + cursorPosition++; + return bo; + + } + return false; + } @Override public void mouseClicked(int i, int j, int k){ @@ -84,7 +108,6 @@ public class GuiNpcTextArea extends GuiNpcTextField implements IGui{ int x = i - posX; int y = (j - posY - 4) / font.height() + getStartLineY(); cursorPosition = 0; - List lines = getLines(); int charCount = 0; int lineCount = 0; int maxSize = width - (isScrolling()?14:4); @@ -153,8 +176,7 @@ public class GuiNpcTextArea extends GuiNpcTextField implements IGui{ int startLine = getStartLineY(); int maxLine = height / font.height() + startLine; - - List lines = getLines(); + int charCount = 0; int lineCount = 0; int maxSize = width - (isScrolling()?14:4); diff --git a/src/main/java/noppes/npcs/client/model/ModelMPM.java b/src/main/java/noppes/npcs/client/model/ModelMPM.java index a8ffc4318..a77f4bdca 100644 --- a/src/main/java/noppes/npcs/client/model/ModelMPM.java +++ b/src/main/java/noppes/npcs/client/model/ModelMPM.java @@ -14,19 +14,20 @@ import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.ModelPartConfig; import noppes.npcs.ModelPartData; -import noppes.npcs.client.ClientProxy; import noppes.npcs.client.model.animation.AniCrawling; import noppes.npcs.client.model.animation.AniHug; import noppes.npcs.client.model.part.*; import noppes.npcs.client.model.util.ModelPartInterface; import noppes.npcs.client.model.util.ModelScaleRenderer; +import noppes.npcs.client.renderer.RenderNPCInterface; import noppes.npcs.constants.EnumAnimation; import noppes.npcs.constants.EnumJobType; +import noppes.npcs.controllers.data.SkinOverlay; import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.roles.JobPuppet; +import noppes.npcs.scripted.interfaces.ISkinOverlay; import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL12; import static noppes.npcs.client.ClientProxy.bindTexture; @@ -352,9 +353,77 @@ public class ModelMPM extends ModelNPCMale{ biped.isSneak = isSneak; } entityModel.render(entity, par2, par3, par4, par5, par6, par7); + + if (!npc.display.skinOverlayData.overlayList.isEmpty()) { + for (ISkinOverlay overlayData : npc.display.skinOverlayData.overlayList.values()) { + try { + if (overlayData.getTexture().isEmpty()) + continue; + + if (((SkinOverlay)overlayData).getLocation() == null) { + ((SkinOverlay)overlayData).setLocation(new ResourceLocation(overlayData.getTexture())); + } else { + String str = ((SkinOverlay)npc.display.skinOverlayData.overlayList.get(0)).getLocation().getResourceDomain()+":"+((SkinOverlay)npc.display.skinOverlayData.overlayList.get(0)).getLocation().getResourcePath(); + if (!str.equals(overlayData.getTexture())) { + ((SkinOverlay)overlayData).setLocation(new ResourceLocation(overlayData.getTexture())); + } + } + + if (((SkinOverlay)overlayData).getLocation().getResourcePath().isEmpty()) + continue; + + try { + RenderNPCInterface.staticRenderManager.renderEngine.bindTexture(((SkinOverlay)overlayData).getLocation()); + } catch (Exception e) { continue; } + + // Overlay & Glow + GL11.glEnable(GL11.GL_BLEND); + if (overlayData.getBlend()) { + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + } else { + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + } + GL11.glAlphaFunc(GL11.GL_GREATER, 0.003921569F); + + if (overlayData.getGlow()) { + GL11.glDisable(GL11.GL_LIGHTING); + Minecraft.getMinecraft().entityRenderer.disableLightmap((double) 0); + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, overlayData.getAlpha()); + + GL11.glDepthMask(!npc.isInvisible()); + + GL11.glPushMatrix(); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glTranslatef(npc.display.overlayRenderTicks * 0.001F * overlayData.getSpeedX(), npc.display.overlayRenderTicks * 0.001F * overlayData.getSpeedY(), 0.0F); + GL11.glScalef(overlayData.getTextureScaleX(), overlayData.getTextureScaleY(), 1.0F); + + GL11.glMatrixMode(GL11.GL_MODELVIEW); + float scale = 1.005f * overlayData.getSize(); + GL11.glTranslatef(overlayData.getOffsetX(), overlayData.getOffsetY(), overlayData.getOffsetZ()); + GL11.glScalef(scale, scale, scale); + entityModel.render(entity, par2, par3, par4, par5, par6, par7); + GL11.glPopMatrix(); + + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDepthFunc(GL11.GL_LEQUAL); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); + Minecraft.getMinecraft().entityRenderer.enableLightmap((double) 0); + } catch (Exception ignored) { + } + } + npc.display.overlayRenderTicks++; + } } - } - else{ + } else { alpha = npc.isInvisible() && !npc.isInvisibleToPlayer(player) ? 0.15f : 1; setPlayerData(npc); diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java index 1305e309a..3c13dc709 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCNPCPlayer.java @@ -138,7 +138,7 @@ public class RenderCNPCPlayer extends RenderPlayer { overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY, overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ )) - return; + continue;; this.modelBipedMain.render(p_77036_1_, p_77036_2_, p_77036_3_, p_77036_4_, p_77036_5_, p_77036_6_, p_77036_7_); postRenderOverlay(); } @@ -342,7 +342,7 @@ public class RenderCNPCPlayer extends RenderPlayer { overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY, overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ )) - return; + continue;; if (gender >= 2.0F) { GL11.glRotatef(7F, 0, 0, 1); @@ -366,19 +366,33 @@ public class RenderCNPCPlayer extends RenderPlayer { Class ModelBipedBody = Class.forName("JinRyuu.JRMCore.entity.ModelBipedBody"); Object m = RenderPlayerJBRA.getField("modelMain").get(event.renderer); + ModelBipedBody.getField("onGround").set(m, (int) player.getSwingProgress(event.partialRenderTick)); + ModelBipedBody.getField("isRiding").set(m, player.isRiding()); + ModelBipedBody.getField("isChild").set(m, player.isChild()); + ModelBipedBody.getField("isSneak").set(m, player.isSneaking()); + ModelBipedBody.getField("y").set(null, ModelBipedDBC.getField("y").get(null)); + ModelRenderer bipedHead = (ModelRenderer) ModelBipedBody.getField("bipedHead").get(m); ModelRenderer bipedBody = (ModelRenderer) ModelBipedBody.getField("bipedBody").get(m); ModelRenderer bipedRA = (ModelRenderer) ModelBipedBody.getField("bipedRightArm").get(m); ModelRenderer bipedLA = (ModelRenderer) ModelBipedBody.getField("bipedLeftArm").get(m); ModelRenderer bipedRL = (ModelRenderer) ModelBipedBody.getField("bipedRightLeg").get(m); ModelRenderer bipedLL = (ModelRenderer) ModelBipedBody.getField("bipedLeftLeg").get(m); - float childScl = (float) RenderPlayerJBRA.getMethod("childSclGet").invoke(null); - ModelBipedBody.getField("onGround").set(m, (int) player.getSwingProgress(event.partialRenderTick)); - ModelBipedBody.getField("isRiding").set(m, player.isRiding()); - ModelBipedBody.getField("isChild").set(m, player.isChild()); - ModelBipedBody.getField("isSneak").set(m, player.isSneaking()); - ModelBipedBody.getField("y").set(null, ModelBipedDBC.getField("y").get(null)); + + ModelRenderer Brightarm = (ModelRenderer) ModelBipedBody.getField("Brightarm").get(m); + ModelRenderer Bleftarm = (ModelRenderer) ModelBipedBody.getField("Bleftarm").get(m); + ModelRenderer rightleg = (ModelRenderer) ModelBipedBody.getField("rightleg").get(m); + ModelRenderer leftleg = (ModelRenderer) ModelBipedBody.getField("leftleg").get(m); + ModelRenderer body = (ModelRenderer) ModelBipedBody.getField("body").get(m); + ModelRenderer hip = (ModelRenderer) ModelBipedBody.getField("hip").get(m); + ModelRenderer waist = (ModelRenderer) ModelBipedBody.getField("waist").get(m); + ModelRenderer bottom = (ModelRenderer) ModelBipedBody.getField("bottom").get(m); + ModelRenderer Bbreast = (ModelRenderer) ModelBipedBody.getField("Bbreast").get(m); + ModelRenderer Bbreast2 = (ModelRenderer) ModelBipedBody.getField("Bbreast2").get(m); + ModelRenderer breast = (ModelRenderer) ModelBipedBody.getField("breast").get(m); + ModelRenderer breast2 = (ModelRenderer) ModelBipedBody.getField("breast2").get(m); + float childScl = (float) RenderPlayerJBRA.getMethod("childSclGet").invoke(null); Method renderDBC = ModelBipedBody.getMethod("render",Entity.class,float.class,float.class,float.class,float.class,float.class,float.class); Field rot1 = ModelBipedDBC.getField("rot1"); @@ -388,64 +402,89 @@ public class RenderCNPCPlayer extends RenderPlayer { Field rot5 = ModelBipedDBC.getField("rot5"); Field rot6 = ModelBipedDBC.getField("rot6"); - if (!player.isInvisible()) { - if (Client.skinOverlays.containsKey(player.getUniqueID())) { - for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) { - if (overlayData.texture.isEmpty()) - continue; + if (Client.skinOverlays.containsKey(player.getUniqueID())) { + for (SkinOverlay overlayData : Client.skinOverlays.get(player.getUniqueID()).values()) { + if (overlayData.texture.isEmpty()) + continue; - if (overlayData.location == null) { + if (overlayData.location == null) { + overlayData.location = new ResourceLocation(overlayData.texture); + } else { + String str = overlayData.location.getResourceDomain() + ":" + overlayData.location.getResourcePath(); + if (!str.equals(overlayData.texture)) { overlayData.location = new ResourceLocation(overlayData.texture); - } else { - String str = overlayData.location.getResourceDomain() + ":" + overlayData.location.getResourcePath(); - if (!str.equals(overlayData.texture)) { - overlayData.location = new ResourceLocation(overlayData.texture); - } } + } - if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.blend, overlayData.alpha, overlayData.size, - overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY, - overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ - )) - return; + if (!preRenderOverlay(player, overlayData.location, overlayData.glow, overlayData.blend, overlayData.alpha, overlayData.size, + overlayData.speedX, overlayData.speedY, overlayData.scaleX, overlayData.scaleY, + overlayData.offsetX, overlayData.offsetY, overlayData.offsetZ + )) + continue; + bipedHead.isHidden = true; + renderDBC.invoke(m, player, + (float) rot1.get(m), (float) rot2.get(m), (float) rot3.get(m), + (float) rot4.get(m), (float) rot5.get(m), (float) rot6.get(m) + ); + bipedHead.isHidden = false; - bipedHead.isHidden = true; - renderDBC.invoke(m, player, - (float) rot1.get(m), (float) rot2.get(m), (float) rot3.get(m), - (float) rot4.get(m), (float) rot5.get(m), (float) rot6.get(m) - ); - bipedHead.isHidden = false; - - bipedBody.isHidden = true; - bipedRA.isHidden = true; - bipedLA.isHidden = true; - bipedRL.isHidden = true; - bipedLL.isHidden = true; - - if (childScl > 1.5F) { - GL11.glTranslatef(0, -0.015F, 0); + bipedBody.isHidden = true; + bipedRA.isHidden = true; + bipedLA.isHidden = true; + bipedRL.isHidden = true; + bipedLL.isHidden = true; + //Female render + Brightarm.isHidden = true; + Bleftarm.isHidden = true; + rightleg.isHidden = true; + leftleg.isHidden = true; + body.isHidden = true; + hip.isHidden = true; + waist.isHidden = true; + bottom.isHidden = true; + Bbreast.isHidden = true; + Bbreast2.isHidden = true; + breast.isHidden = true; + breast2.isHidden = true; + if (player.isSneaking()) { + GL11.glTranslatef(0, 0.06F, 0); + } + if (childScl > 1.5F) { + GL11.glTranslatef(0, -0.015F, 0); + GL11.glScalef(1.025F, 1.025F, 1.025F); + } else { + if (childScl > 1) { + GL11.glTranslatef(0, -0.01F, 0); GL11.glScalef(1.025F, 1.025F, 1.025F); } else { - if (childScl > 1) { - GL11.glTranslatef(0, -0.01F, 0); - GL11.glScalef(1.025F, 1.025F, 1.025F); - } else { - GL11.glTranslatef(0, 0.0025F, 0); - GL11.glScalef(1.02F, 1.02F, 1.02F); - } + GL11.glTranslatef(0, 0.0025F, 0); + GL11.glScalef(1.02F, 1.02F, 1.02F); } - renderDBC.invoke(m, player, - (float) rot1.get(m), (float) rot2.get(m), (float) rot3.get(m), - (float) rot4.get(m), (float) rot5.get(m), (float) rot6.get(m) - ); - bipedBody.isHidden = false; - bipedRA.isHidden = false; - bipedLA.isHidden = false; - bipedRL.isHidden = false; - bipedLL.isHidden = false; - - postRenderOverlay(); } + renderDBC.invoke(m, player, + (float) rot1.get(m), (float) rot2.get(m), (float) rot3.get(m), + (float) rot4.get(m), (float) rot5.get(m), (float) rot6.get(m) + ); + bipedBody.isHidden = false; + bipedRA.isHidden = false; + bipedLA.isHidden = false; + bipedRL.isHidden = false; + bipedLL.isHidden = false; + //Female render + Brightarm.isHidden = false; + Bleftarm.isHidden = false; + rightleg.isHidden = false; + leftleg.isHidden = false; + body.isHidden = false; + hip.isHidden = false; + waist.isHidden = false; + bottom.isHidden = false; + Bbreast.isHidden = false; + Bbreast2.isHidden = false; + breast.isHidden = false; + breast2.isHidden = false; + + postRenderOverlay(); } } } catch (Exception ignored) { diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java index 02c9e0368..d32b92578 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java @@ -14,6 +14,7 @@ import net.minecraft.client.model.ModelBase; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.texture.ITextureObject; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.IResource; @@ -42,6 +43,7 @@ import javax.imageio.ImageIO; public class RenderNPCInterface extends RenderLiving{ public static long LastTextureTick = 0; + public static RenderManager staticRenderManager; public ModelBase originalModel; public RenderNPCInterface(ModelBase model, float f){ @@ -212,6 +214,8 @@ public class RenderNPCInterface extends RenderLiving{ if(npc.ai.standingType == EnumStandingType.HeadRotation && !npc.isWalking() && !npc.isInteracting()){ npc.prevRenderYawOffset = npc.renderYawOffset = npc.ai.orientation; } + + staticRenderManager = this.renderManager; super.doRender(entityliving, d, d1, d2, f, f1); } diff --git a/src/main/java/noppes/npcs/constants/EnumPacketClient.java b/src/main/java/noppes/npcs/constants/EnumPacketClient.java index 47b9c1a20..c4ce35b9f 100644 --- a/src/main/java/noppes/npcs/constants/EnumPacketClient.java +++ b/src/main/java/noppes/npcs/constants/EnumPacketClient.java @@ -40,5 +40,10 @@ public enum EnumPacketClient { UPDATE_ITEM, PLAYER_UPDATE_SKIN_OVERLAYS, OVERLAY_QUEST_TRACKING, - DISABLE_MOUSE_INPUT + DISABLE_MOUSE_INPUT, + PLAY_SOUND_TO, + STOP_SOUND_FOR, + PAUSE_SOUNDS, + CONTINUE_SOUNDS, + STOP_SOUNDS } diff --git a/src/main/java/noppes/npcs/constants/EnumScriptType.java b/src/main/java/noppes/npcs/constants/EnumScriptType.java index fa5cbf537..d72f555a5 100644 --- a/src/main/java/noppes/npcs/constants/EnumScriptType.java +++ b/src/main/java/noppes/npcs/constants/EnumScriptType.java @@ -14,6 +14,7 @@ public enum EnumScriptType { DIALOG_CLOSE("dialogClose"), TIMER("timer"), + ATTACKED("attacked"), ATTACK_MELEE("meleeAttack"), TARGET_LOST("targetLost"), ROLE("role"), diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index c5c4658f4..9a496bc83 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -47,6 +47,13 @@ public class ScriptContainer { public void readFromNBT(NBTTagCompound compound) { this.script = compound.getString("Script"); + for (int i = 0; i < CustomNpcs.ExpandedScriptLimit; i++) { + if (compound.hasKey("ExpandedScript"+i)) { + this.script += compound.getString("ExpandedScript"+i); + } else { + break; + } + } //this.type = compound.getString("Type"); this.console = NBTTags.GetLongStringMap(compound.getTagList("Console", 10)); this.scripts = NBTTags.getStringList(compound.getTagList("ScriptList", 10)); @@ -54,7 +61,29 @@ public class ScriptContainer { } public NBTTagCompound writeToNBT(NBTTagCompound compound) { - compound.setString("Script", this.script); + if (this.script.length() < 65535) { + compound.setString("Script", this.script); + } else { + if (CustomNpcs.ExpandedScriptLimit > 0) { + int i = 0; + int length = this.script.length(); + while (length > 0 && i <= CustomNpcs.ExpandedScriptLimit) { + String str = ""; + if (i == 0) { + compound.setString("Script", this.script.substring(0, 65535)); + str = this.script.substring(0, 65535); + } else { + int end = (length - 65535) >= 0 ? 65535 * (i + 1) : 65535 * i + length; + str = this.script.substring(65535 * i, end); + compound.setString("ExpandedScript" + (i - 1), str); + } + i++; + length -= str.length(); + } + } else { + compound.setString("Script", this.script.substring(0, 65535)); + } + } //compound.setString("Type", this.type); compound.setTag("Console", NBTTags.NBTLongStringMap(this.console)); compound.setTag("ScriptList", NBTTags.nbtStringList(this.scripts)); diff --git a/src/main/java/noppes/npcs/controllers/ServerCloneController.java b/src/main/java/noppes/npcs/controllers/ServerCloneController.java index 8eac9cd5d..5fe56c42f 100644 --- a/src/main/java/noppes/npcs/controllers/ServerCloneController.java +++ b/src/main/java/noppes/npcs/controllers/ServerCloneController.java @@ -194,16 +194,25 @@ public class ServerCloneController implements ICloneHandler { } } - public IEntity spawn(double x, double y, double z, int tab, String name, IWorld world) { + public IEntity spawn(double x, double y, double z, int tab, String name, IWorld world, boolean ignoreProtection) { NBTTagCompound compound = this.getCloneData((ICommandSender)null, name, tab); if (compound == null) { throw new CustomNPCsException("Unknown clone tab:" + tab + " name:" + name, new Object[0]); } else { - Entity entity = NoppesUtilServer.spawnClone(compound, (int)x, (int)y, (int)z, world.getMCWorld()); + Entity entity; + if (!ignoreProtection) { + entity = NoppesUtilServer.spawnCloneWithProtection(compound, (int) x, (int) y, (int) z, world.getMCWorld()); + } else { + entity = NoppesUtilServer.spawnClone(compound, (int) x, (int) y, (int) z, world.getMCWorld()); + } return entity == null ? null : NpcAPI.Instance().getIEntity(entity); } } + public IEntity spawn(double x, double y, double z, int tab, String name, IWorld world) { + return spawn(x, y, z, tab, name, world, true); + } + public IEntity[] getTab(int tab, IWorld world) { File dir = new File(getDir(), tab + ""); if (!dir.exists() || !dir.isDirectory() || dir.listFiles() == null) { diff --git a/src/main/java/noppes/npcs/controllers/data/Faction.java b/src/main/java/noppes/npcs/controllers/data/Faction.java index d477ce7bb..70504b026 100644 --- a/src/main/java/noppes/npcs/controllers/data/Faction.java +++ b/src/main/java/noppes/npcs/controllers/data/Faction.java @@ -164,11 +164,7 @@ public class Faction implements IFaction { } public void addEnemyFaction(IFaction faction) { - if (this.attackFactions.contains(faction.getId())) { - throw new CustomNPCsException("Faction " + this.id + " is already hostile to " + id, new Object[0]); - } else { - this.attackFactions.add(faction.getId()); - } + this.attackFactions.add(faction.getId()); } public void removeEnemyFaction(IFaction faction) { diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java index 3b7dbd722..48314332f 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerQuestData.java @@ -1,6 +1,7 @@ package noppes.npcs.controllers.data; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -114,7 +115,9 @@ public class PlayerQuestData implements IPlayerQuestData { public boolean checkQuestCompletion(PlayerData playerData,EnumQuestType type) { boolean bo = false; EntityPlayer player = playerData.player; - for(QuestData data : this.activeQuests.values()){ + + ArrayList activeQuestValues = new ArrayList<>(this.activeQuests.values()); + for(QuestData data : activeQuestValues){ if(data.quest.type != type && type != null) continue; diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 6a765dffa..039b3c131 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -613,7 +613,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti } tasks.taskEntries = new ArrayList(); } - private void updateTasks() { + public void updateTasks() { if (worldObj == null || worldObj.isRemote) return; aiLeap = aiAttackTarget = aiResponse = aiSprint = aiRange = null; @@ -770,8 +770,8 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti * Add immutable task entries. */ public void addRegularEntries() { - this.tasks.addTask(this.taskCount++, new EntityAIReturn(this)); this.tasks.addTask(this.taskCount++, new EntityAIFollow(this)); + this.tasks.addTask(this.taskCount++, new EntityAIReturn(this)); if (this.ai.standingType != EnumStandingType.NoRotation && this.ai.standingType != EnumStandingType.HeadRotation) this.tasks.addTask(this.taskCount++, new EntityAIWatchClosest(this, EntityLivingBase.class, 5.0F)); this.tasks.addTask(this.taskCount++, new EntityAILook(this)); @@ -1429,6 +1429,15 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti this.motionY = 0.4000000059604645D; } } + @Override + public void addVelocity(double p_70024_1_, double p_70024_3_, double p_70024_5_) { + if (this.attackingPlayer != null) { + float f2 = 0.5F * (2 - stats.resistances.knockback); + super.addVelocity(p_70024_1_ * (double)f2,p_70024_3_ * (double)f2,p_70024_5_ * (double)f2); + } else { + super.addVelocity(p_70024_1_,p_70024_3_,p_70024_5_); + } + } public Faction getFaction() { String[] split = dataWatcher.getWatchableObjectString(13).split(":"); diff --git a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java index 5e88b9ab8..84b842011 100644 --- a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java +++ b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java @@ -49,12 +49,14 @@ public class DataSkinOverlays implements IOverlayHandler { } public void updateClient() { - if (parent instanceof PlayerData) { - NBTTagCompound compound = this.writeToNBT(new NBTTagCompound()); - ((PlayerData) parent).player.getEntityData().setTag("SkinOverlayData", compound.getTagList("SkinOverlayData",10)); - Server.sendToAll(EnumPacketClient.PLAYER_UPDATE_SKIN_OVERLAYS, ((PlayerData) parent).player.getCommandSenderName(), compound); - } else if (parent instanceof EntityNPCInterface) { - ((EntityNPCInterface) parent).updateClient = true; + if (parent != null) { + if (parent instanceof PlayerData && ((PlayerData) parent).player != null) { + NBTTagCompound compound = this.writeToNBT(new NBTTagCompound()); + ((PlayerData) parent).player.getEntityData().setTag("SkinOverlayData", compound.getTagList("SkinOverlayData", 10)); + Server.sendToAll(EnumPacketClient.PLAYER_UPDATE_SKIN_OVERLAYS, ((PlayerData) parent).player.getCommandSenderName(), compound); + } else if (parent instanceof EntityNPCInterface) { + ((EntityNPCInterface) parent).updateClient = true; + } } } diff --git a/src/main/java/noppes/npcs/entity/data/DataTimers.java b/src/main/java/noppes/npcs/entity/data/DataTimers.java index 85c62217c..f3c2c65a2 100644 --- a/src/main/java/noppes/npcs/entity/data/DataTimers.java +++ b/src/main/java/noppes/npcs/entity/data/DataTimers.java @@ -8,7 +8,7 @@ package noppes.npcs.entity.data; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; -import java.util.Map; + import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.EventHooks; @@ -19,48 +19,47 @@ import noppes.npcs.scripted.CustomNPCsException; public class DataTimers implements ITimers { private final Object parent; - private Map timers = new HashMap(); + private HashMap timers = new HashMap<>(); public DataTimers(Object parent) { this.parent = parent; } public void start(int id, int ticks, boolean repeat) { - if(this.timers.containsKey(Integer.valueOf(id))) { - throw new CustomNPCsException("There is already a timer with id: " + id, new Object[0]); + if(this.timers.containsKey(id)) { + throw new CustomNPCsException("There is already a timer with id: " + id); } else { - this.timers.put(Integer.valueOf(id), new DataTimers.Timer(id, ticks, repeat)); + this.timers.put(id, new DataTimers.Timer(id, ticks, repeat)); } } public void forceStart(int id, int ticks, boolean repeat) { - this.timers.put(Integer.valueOf(id), new DataTimers.Timer(id, ticks, repeat)); + this.timers.put(id, new DataTimers.Timer(id, ticks, repeat)); } public boolean has(int id) { - return this.timers.containsKey(Integer.valueOf(id)); + return this.timers.containsKey(id); } public boolean stop(int id) { - boolean remove = this.timers.remove(Integer.valueOf(id)) != null; - return remove; + return this.timers.remove(id) != null; } public void reset(int id) { - DataTimers.Timer timer = (DataTimers.Timer)this.timers.get(Integer.valueOf(id)); - if(timer == null) { - throw new CustomNPCsException("There is no timer with id: " + id, new Object[0]); - } else { - timer.ticks = 0; - } + this.timerException(id); + DataTimers.Timer timer = this.timers.get(id); + timer.ticks = 0; } public int ticks(int id){ - return this.timers.get(Integer.valueOf(id)).ticks; + this.timerException(id); + return this.timers.get(id).ticks; } public void setTicks(int id, int ticks){ - DataTimers.Timer timer = (DataTimers.Timer)this.timers.get(Integer.valueOf(id)); + this.timerException(id); + + DataTimers.Timer timer = this.timers.get(id); if(ticks < 0) ticks = 0; if(ticks > timer.timerTicks) @@ -70,11 +69,14 @@ public class DataTimers implements ITimers { } public int maxTicks(int id){ - return this.timers.get(Integer.valueOf(id)).timerTicks; + this.timerException(id); + return this.timers.get(id).timerTicks; } public void setMaxTicks(int id, int maxTicks){ - DataTimers.Timer timer = (DataTimers.Timer)this.timers.get(Integer.valueOf(id)); + this.timerException(id); + + DataTimers.Timer timer = this.timers.get(id); if(maxTicks < 0) maxTicks = 0; if(timer.ticks > maxTicks) @@ -84,11 +86,13 @@ public class DataTimers implements ITimers { } public boolean repeats(int id){ - return this.timers.get(Integer.valueOf(id)).repeat; + this.timerException(id); + return this.timers.get(id).repeat; } public void setRepeats(int id, boolean repeat){ - this.timers.get(Integer.valueOf(id)).repeat = repeat; + this.timerException(id); + this.timers.get(id).repeat = repeat; } public void writeToNBT(NBTTagCompound compound) { @@ -108,8 +112,14 @@ public class DataTimers implements ITimers { compound.setTag("NpcsTimers", list); } + private void timerException(int id) { + if (!this.timers.containsKey(id)) { + throw new CustomNPCsException("There is no timer with id: " + id); + } + } + public void readFromNBT(NBTTagCompound compound) { - Map timers = new HashMap(); + HashMap timers = new HashMap<>(); NBTTagList list = compound.getTagList("NpcsTimers", 10); if(list != null) { @@ -125,16 +135,16 @@ public class DataTimers implements ITimers { } public void update() { - Iterator var1 = (new ArrayList(this.timers.values())).iterator(); + Iterator var1 = (new ArrayList<>(this.timers.values())).iterator(); - while(var1.hasNext()) { - DataTimers.Timer timer = (DataTimers.Timer)var1.next(); + while (var1.hasNext()) { + DataTimers.Timer timer = var1.next(); timer.update(); } } public void clear() { - this.timers = new HashMap(); + this.timers = new HashMap<>(); } public int size() { return this.timers.size(); } @@ -143,7 +153,7 @@ public class DataTimers implements ITimers { public int id; private boolean repeat; private int timerTicks; - private int ticks = 0; + private int ticks; public Timer(int id, int ticks, boolean repeat) { this.id = id; diff --git a/src/main/java/noppes/npcs/items/ItemNpcScripter.java b/src/main/java/noppes/npcs/items/ItemNpcScripter.java index c4e7b9750..e68564ef3 100644 --- a/src/main/java/noppes/npcs/items/ItemNpcScripter.java +++ b/src/main/java/noppes/npcs/items/ItemNpcScripter.java @@ -5,6 +5,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; import noppes.npcs.CustomItems; import cpw.mods.fml.common.registry.GameRegistry; @@ -31,11 +33,15 @@ public class ItemNpcScripter extends Item{ } @Override - public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer){ - if(!par2World.isRemote) - return par1ItemStack; - CustomNpcs.proxy.openGui(0, 0, 0, EnumGuiType.ScriptEvent, par3EntityPlayer); - return par1ItemStack; + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player){ + if(!world.isRemote) + return itemStack; + if(!CustomNpcs.isScriptDev(player)){ + player.addChatMessage(new ChatComponentTranslation("availability.permission")); + } else { + CustomNpcs.proxy.openGui(0, 0, 0, EnumGuiType.ScriptEvent, player); + } + return itemStack; } @SideOnly(Side.CLIENT) diff --git a/src/main/java/noppes/npcs/items/ItemScripted.java b/src/main/java/noppes/npcs/items/ItemScripted.java index 1414eff3a..775e4b5f3 100644 --- a/src/main/java/noppes/npcs/items/ItemScripted.java +++ b/src/main/java/noppes/npcs/items/ItemScripted.java @@ -13,6 +13,8 @@ import net.minecraft.init.Items; import net.minecraft.item.EnumAction; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.World; import noppes.npcs.CustomItems; import noppes.npcs.CustomNpcs; @@ -60,12 +62,16 @@ public class ItemScripted extends Item implements ItemRenderInterface { return super.setUnlocalizedName(name); } - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer entityPlayer) + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(entityPlayer.isSneaking() && entityPlayer.capabilities.isCreativeMode) { - CustomNpcs.proxy.openGui(0, 0, 0, EnumGuiType.ScriptItem, entityPlayer); + if(player.isSneaking() && player.capabilities.isCreativeMode) { + if(!CustomNpcs.isScriptDev(player)){ + player.addChatMessage(new ChatComponentTranslation("availability.permission")); + } else { + CustomNpcs.proxy.openGui(0, 0, 0, EnumGuiType.ScriptItem, player); + } } - entityPlayer.setItemInUse(stack, this.getMaxItemUseDuration(stack)); + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); return stack; } diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index 8244fa40e..5f45e9e47 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -35,7 +35,6 @@ import net.minecraft.world.biome.BiomeGenBase; import noppes.npcs.CustomNpcs; import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.*; -import noppes.npcs.controllers.data.Faction; import noppes.npcs.controllers.data.SkinOverlay; import noppes.npcs.items.ItemScripted; import noppes.npcs.containers.ContainerNpcInterface; @@ -50,6 +49,7 @@ import noppes.npcs.scripted.interfaces.entity.ICustomNpc; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.gui.ICustomGui; import noppes.npcs.scripted.interfaces.handler.data.IFaction; +import noppes.npcs.scripted.interfaces.handler.data.ISound; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.interfaces.AbstractNpcAPI; import noppes.npcs.scripted.interfaces.overlay.ICustomOverlay; @@ -334,6 +334,13 @@ public class NpcAPI extends AbstractNpcAPI { return arr; } + public String[] getPlayerNames() { + IPlayer[] players = getAllServerPlayers(); + String[] names = new String[players.length]; + for (int i = 0; i < names.length; ++i) names[i] = players[i].getDisplayName(); + return names; + } + public void playSoundAtEntity(IEntity entity, String sound, float volume, float pitch){ entity.getWorld().getMCWorld().playSoundAtEntity(entity.getMCEntity(), sound, volume, pitch); } @@ -361,6 +368,30 @@ public class NpcAPI extends AbstractNpcAPI { return new ScriptParticle(directory); } + public ISound createSound(String directory) { + return new ScriptSound(directory); + } + + public void playSound(int id, ISound sound) { + NoppesUtilServer.playSound(id, (ScriptSound) sound); + } + + public void stopSound(int id) { + NoppesUtilServer.stopSound(id); + } + + public void pauseSounds() { + NoppesUtilServer.pauseSounds(); + } + + public void continueSounds() { + NoppesUtilServer.continueSounds(); + } + + public void stopSounds() { + NoppesUtilServer.stopSounds(); + } + public int getServerTime() { return MinecraftServer.getServer().getTickCounter(); } diff --git a/src/main/java/noppes/npcs/scripted/ScriptBlock.java b/src/main/java/noppes/npcs/scripted/ScriptBlock.java index 9747d4aa5..758244c61 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptBlock.java +++ b/src/main/java/noppes/npcs/scripted/ScriptBlock.java @@ -10,6 +10,7 @@ import net.minecraft.block.Block; import net.minecraft.inventory.IInventory; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -131,4 +132,19 @@ public class ScriptBlock implements IBlock { this.tile.writeToNBT(compound); return NpcAPI.Instance().getINbt(compound); } + + public boolean canCollide(double maxVolume) { + AxisAlignedBB alignedBB = block.getCollisionBoundingBoxFromPool(world.getMCWorld(),getX(),getY(),getZ()); + if (alignedBB == null) { + return false; + } + double xEdge = alignedBB.maxX - alignedBB.minX; + double yEdge = alignedBB.maxY - alignedBB.minY; + double zEdge = alignedBB.maxZ - alignedBB.minZ; + return Math.abs(xEdge * yEdge * zEdge) > maxVolume; + } + + public boolean canCollide() { + return canCollide(0); + } } diff --git a/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java b/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java index d8214e1c9..675837165 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java +++ b/src/main/java/noppes/npcs/scripted/ScriptBlockPos.java @@ -81,7 +81,7 @@ public class ScriptBlockPos implements IPos { } public IPos add(IPos pos) { - return new ScriptBlockPos(this.blockPos.add(pos.getMCBlockPos())); + return new ScriptBlockPos(this.blockPos.add(this.blockPos)); } public IPos subtract(int x, int y, int z) { @@ -100,10 +100,6 @@ public class ScriptBlockPos implements IPos { return new ScriptBlockPos(this.blockPos.offset(EnumFacing.values()[direction], n)); } - public BlockPos getMCBlockPos() { - return this.blockPos; - } - public double[] normalize() { double d = Math.sqrt((double)(this.blockPos.getX() * this.blockPos.getX() + this.blockPos.getY() * this.blockPos.getY() + this.blockPos.getZ() * this.blockPos.getZ())); return new double[]{(double)this.getX() / d, (double)this.getY() / d, (double)this.getZ() / d}; diff --git a/src/main/java/noppes/npcs/scripted/ScriptParticle.java b/src/main/java/noppes/npcs/scripted/ScriptParticle.java index 9053206e7..a98c0c2da 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptParticle.java +++ b/src/main/java/noppes/npcs/scripted/ScriptParticle.java @@ -3,6 +3,7 @@ package noppes.npcs.scripted; import net.minecraft.nbt.*; import noppes.npcs.NoppesUtilServer; import noppes.npcs.scripted.interfaces.IParticle; +import noppes.npcs.scripted.interfaces.IWorld; import noppes.npcs.scripted.interfaces.entity.IEntity; import java.lang.reflect.Field; @@ -128,7 +129,7 @@ public class ScriptParticle implements IParticle { return particle; } - public void spawnOnEntity(IEntity entity){ + public void spawn(IEntity entity){ int entityID = entity.getMCEntity().getEntityId(); NBTTagCompound compound = this.writeToNBT(); @@ -137,16 +138,28 @@ public class ScriptParticle implements IParticle { NoppesUtilServer.spawnScriptedParticle(compound, entity.getWorld().getDimensionID()); } - public void spawnInWorld(ScriptWorld world){ + public void spawn(IWorld world){ NBTTagCompound compound = this.writeToNBT(); NoppesUtilServer.spawnScriptedParticle(compound, world.getDimensionID()); } - public void spawnInWorld(ScriptWorld world, double x, double y, double z){ + public void spawn(IWorld world, double x, double y, double z){ NBTTagCompound compound = this.writeToNBT(); NoppesUtilServer.spawnScriptedParticle(compound, world.getDimensionID()); } + public void spawnOnEntity(IEntity entity) { + spawn(entity); + } + + public void spawnInWorld(IWorld world) { + spawn(world); + } + + public void spawnInWorld(IWorld world, double x, double y, double z){ + spawn(world, x, y, z); + } + public void setGlows(boolean glows) { this.glows = glows; } public boolean getGlows() { return this.glows; } diff --git a/src/main/java/noppes/npcs/scripted/ScriptSound.java b/src/main/java/noppes/npcs/scripted/ScriptSound.java new file mode 100644 index 000000000..ed3359e56 --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/ScriptSound.java @@ -0,0 +1,173 @@ +package noppes.npcs.scripted; + +import net.minecraft.nbt.*; +import net.minecraft.util.math.BlockPos; +import noppes.npcs.scripted.interfaces.IPos; +import noppes.npcs.scripted.interfaces.entity.IEntity; +import noppes.npcs.scripted.interfaces.handler.data.ISound; + +import java.lang.reflect.Field; + +public class ScriptSound implements ISound { + public IEntity sourceEntity; + public String directory; + public float volume = 1.0F; + public float pitch = 1.0F; + public float xPosF; + public float yPosF; + public float zPosF; + public boolean repeat = false; + public int repeatDelay = 0; + + public ScriptSound(String location) { + this.directory = location; + } + + public NBTTagCompound writeToNBT() { + NBTTagCompound compound = new NBTTagCompound(); + ScriptSound newSound = new ScriptSound(""); + + //Iterate through fields, check if they're not equal to a new object, write to NBT + for (Field field : ScriptSound.class.getDeclaredFields()) { + try { + if (field.getName().equals("sourceEntity") && this.sourceEntity != null) { + compound.setInteger("EntityID",this.sourceEntity.getEntityId()); + } else if (!field.get(this).equals(field.get(newSound))) { + compound = writeNBTTag(compound, field.getType(), field.getName(), field.get(this)); + } + } catch (Exception ignored) {} + } + + return compound; + } + + public NBTTagCompound writeNBTTag(NBTTagCompound compound, Class c, String key, Object value) { + if (c == boolean.class) { + compound.setBoolean(key, (Boolean) value); + } + if (c == int.class) { + compound.setInteger(key, (Integer) value); + } + if (c == double.class) { + compound.setDouble(key, (Double) value); + } + if (c == float.class) { + compound.setFloat(key, (Float) value); + } + if (c == String.class) { + compound.setString(key, (String) value); + } + + return compound; + } + + private static Object readNBTTag(NBTTagCompound compound, String key) { + if (compound.getTag(key) instanceof NBTTagByte) { + return compound.getBoolean(key); + } + if (compound.getTag(key) instanceof NBTTagInt) { + return compound.getInteger(key); + } + if (compound.getTag(key) instanceof NBTTagDouble) { + return compound.getDouble(key); + } + if (compound.getTag(key) instanceof NBTTagFloat) { + return compound.getFloat(key); + } + if (compound.getTag(key) instanceof NBTTagString) { + return compound.getString(key); + } + + return null; + } + + public static ScriptSound fromNBT(NBTTagCompound compound) { + ScriptSound particle = new ScriptSound(compound.getString("directory")); + + //Iterate through fields, check if compound has a key equal to the field's name, and if so set the field equal to that value from NBT. + for (Field field : ScriptSound.class.getDeclaredFields()) { + try { + if (compound.hasKey(field.getName())) { + if (!field.getName().equals("sourceEntity")) { + Object val = ScriptSound.readNBTTag(compound, field.getName()); + if (val != null) { + field.set(particle, val); + } + } + } + } catch (Exception ignored) {} + } + + return particle; + } + + public void setEntity(IEntity entity) { + this.sourceEntity = entity; + } + + public IEntity getEntity() { + return sourceEntity; + } + + public void setRepeat(boolean repeat) { + this.repeat = repeat; + } + + public boolean repeats() { + return this.repeat; + } + + public void setRepeatDelay(int delay) { + this.repeatDelay = delay; + } + + public int getRepeatDelay() { + return this.repeatDelay; + } + + public void setVolume(float volume) { + this.volume = volume; + } + + public float getVolume() + { + return this.volume; + } + + public void setPitch(float pitch) { + this.pitch = pitch; + } + + public float getPitch() + { + return this.pitch; + } + + public void setPosition(IPos pos) { + this.xPosF = pos.getX(); + this.yPosF = pos.getY(); + this.zPosF = pos.getZ(); + } + + public void setPosition(float x, float y, float z) { + this.xPosF = x; + this.yPosF = y; + this.zPosF = z; + } + + public IPos getPos() { + return new ScriptBlockPos(new BlockPos(xPosF,yPosF,zPosF)); + } + + public float getX() { + return this.xPosF; + } + + public float getY() { + return this.yPosF; + } + + public float getZ() { + return this.zPosF; + } +} diff --git a/src/main/java/noppes/npcs/scripted/ScriptWorld.java b/src/main/java/noppes/npcs/scripted/ScriptWorld.java index e377e486a..5275d4b17 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptWorld.java +++ b/src/main/java/noppes/npcs/scripted/ScriptWorld.java @@ -3,6 +3,7 @@ package noppes.npcs.scripted; import java.util.*; import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; import net.minecraft.entity.Entity; import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.player.EntityPlayer; @@ -15,6 +16,7 @@ import net.minecraft.nbt.NBTTagString; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySign; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldServer; @@ -29,6 +31,7 @@ import noppes.npcs.scripted.interfaces.IParticle; import noppes.npcs.scripted.interfaces.ITileEntity; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.entity.IPlayer; +import noppes.npcs.scripted.interfaces.handler.data.ISound; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.interfaces.IWorld; @@ -150,6 +153,51 @@ public class ScriptWorld implements IWorld { world.playSoundToNearExcept((EntityPlayerMP) player.getMCEntity(), sound, volume, pitch); } + public void playSound(int id, ISound sound) { + IPlayer[] players = getAllServerPlayers(); + for (IPlayer player : players) { + if (player.getDimension() == this.getDimensionID()) { + player.playSound(id, sound); + } + } + } + + public void stopSound(int id) { + IPlayer[] players = getAllServerPlayers(); + for (IPlayer player : players) { + if (player.getDimension() == this.getDimensionID()) { + player.stopSound(id); + } + } + } + + public void pauseSounds() { + IPlayer[] players = getAllServerPlayers(); + for (IPlayer player : players) { + if (player.getDimension() == this.getDimensionID()) { + player.pauseSounds(); + } + } + } + + public void continueSounds() { + IPlayer[] players = getAllServerPlayers(); + for (IPlayer player : players) { + if (player.getDimension() == this.getDimensionID()) { + player.continueSounds(); + } + } + } + + public void stopSounds() { + IPlayer[] players = getAllServerPlayers(); + for (IPlayer player : players) { + if (player.getDimension() == this.getDimensionID()) { + player.stopSounds(); + } + } + } + public IEntity getEntityByID(int id){ return NpcAPI.Instance().getIEntity(world.getEntityByID(id)); } @@ -187,6 +235,35 @@ public class ScriptWorld implements IWorld { return list.toArray(new IEntity[0]); } + public IEntity[] getEntitiesNear(IPos position, double range) { + ArrayList list = new ArrayList<>(); + + List entities = world.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox( + position.getX() - range, position.getY() - range, position.getZ() - range, + position.getX() + range, position.getY() + range, position.getZ() + range)); + for(Entity entity : entities){ + list.add(NpcAPI.Instance().getIEntity(entity)); + } + + list.sort((e1, e2) -> { + double dist1 = e1.getPos().distanceTo(position); + double dist2 = e2.getPos().distanceTo(position); + + if (dist1 > dist2) { + return 1; + } else if (dist1 < dist2) { + return -1; + } + return 0; + }); + + return list.toArray(new IEntity[0]); + } + + public IEntity[] getEntitiesNear(double x, double y, double z, double range) { + return getEntitiesNear(new ScriptBlockPos(new BlockPos(x,y,z)), range); + } + public void setTileEntity(int x, int y, int z, ITileEntity tileEntity){ world.setTileEntity(x,y,z,tileEntity.getMCTileEntity()); } @@ -281,42 +358,63 @@ public class ScriptWorld implements IWorld { public void removeBlock(int x, int y, int z){ world.setBlock(x, y, z, Blocks.air); } - - /** - * starting at the start position, draw a line in the lookVector direction until a block is detected - * @param startPos - * @param lookVector should be a normalized direction vector - * @param maxDistance - * @return the first detected block but null if maxDistance is reached - */ - public IBlock rayCastBlock(double[] startPos, double[] lookVector, int maxDistance) { - if (startPos.length != 3 || lookVector.length != 3) return null; + + public IPos rayCastPos(double[] startPos, double[] lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) { + if (startPos.length != 3 || lookVector.length != 3) { + return null; + } + + IPos pos; Vec3 currentPos = Vec3.createVectorHelper(startPos[0], startPos[1], startPos[2]); int rep = 0; + while (rep++ < maxDistance + 10) { currentPos = currentPos.addVector(lookVector[0], lookVector[1], lookVector[2]); + pos = new ScriptBlockPos(new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord)); + IBlock block = getBlock((int)currentPos.xCoord, (int)currentPos.yCoord, (int)currentPos.zCoord); - //System.out.println("Checking block at ["+(int)currentPos.xCoord+","+(int)currentPos.yCoord+","+(int)currentPos.zCoord+"]"); - if (block == null) continue; + if (block != null && stopOnBlock) { + if ((!stopOnLiquid || block.getMCBlock() instanceof BlockLiquid) + && (!stopOnCollision || block.canCollide())) + return pos; + } + double distance = Math.pow( Math.pow(currentPos.xCoord-startPos[0],2) - +Math.pow(currentPos.yCoord-startPos[1],2) - +Math.pow(currentPos.zCoord-startPos[2],2) + +Math.pow(currentPos.yCoord-startPos[1],2) + +Math.pow(currentPos.zCoord-startPos[2],2) , 0.5); - //System.out.println("current distance check: "+distance+" on rep "+rep); - if (distance > maxDistance) return null; - return block; + if (distance > maxDistance) { + return pos; + } } - //System.out.println("ScriptWorld:WARNING: Repeated a ray cast to many times"); + return null; } - /** - * starting at the start position, draw a line in the lookVector direction until a block is detected - * @param startPos - * @param lookVector will normalize x, y, z to get a direction vector - * @param maxDistance - * @return the first detected block but null if maxDistance is reached - */ + public IPos rayCastPos(double[] startPos, double[] lookVector, int maxDistance) { + return rayCastPos(startPos,lookVector,maxDistance,true, false, false); + } + + public IPos rayCastPos(IPos startPos, IPos lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) { + return rayCastPos(new double[] {startPos.getX(), startPos.getY(), startPos.getZ()}, lookVector.normalize(), maxDistance, stopOnBlock, stopOnLiquid, stopOnCollision); + } + + public IPos rayCastPos(IPos startPos, IPos lookVector, int maxDistance) { + return rayCastPos(new double[] {startPos.getX(), startPos.getY(), startPos.getZ()}, lookVector.normalize(), maxDistance, true, false, false); + } + + public IBlock rayCastBlock(double[] startPos, double[] lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) { + return getBlock(rayCastPos(startPos,lookVector,maxDistance,stopOnBlock,stopOnLiquid,stopOnCollision)); + } + + public IBlock rayCastBlock(double[] startPos, double[] lookVector, int maxDistance) { + return rayCastBlock(startPos, lookVector, maxDistance, true, false, false); + } + + public IBlock rayCastBlock(IPos startPos, IPos lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) { + return rayCastBlock(new double[] {startPos.getX(), startPos.getY(), startPos.getZ()}, lookVector.normalize(), maxDistance, stopOnBlock, stopOnLiquid, stopOnCollision); + } + public IBlock rayCastBlock(IPos startPos, IPos lookVector, int maxDistance) { return rayCastBlock(new double[] {startPos.getX(), startPos.getY(), startPos.getZ()}, lookVector.normalize(), maxDistance); } @@ -350,6 +448,61 @@ public class ScriptWorld implements IWorld { return currentPos; } + public IEntity[] rayCastEntities(double[] startPos, double[] lookVector, + int maxDistance, double offset, double range, + boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) { + ArrayList entities = new ArrayList<>(); + + Vec3 currentPos = Vec3.createVectorHelper(startPos[0], startPos[1], startPos[2]); int rep = 0; + currentPos = currentPos.addVector(lookVector[0]*offset, lookVector[1]*offset, lookVector[2]*offset); + + while (rep++ < maxDistance + 10) { + currentPos = currentPos.addVector(lookVector[0], lookVector[1], lookVector[2]); + IPos pos = new ScriptBlockPos(new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord)); + IBlock block = getBlock(pos); + + if (block != null && stopOnBlock) { + if ((!stopOnLiquid || block.getMCBlock() instanceof BlockLiquid) + && (!stopOnCollision || block.canCollide())) + return entities.toArray(new IEntity[0]); + } + + IEntity[] entitiesNear = getEntitiesNear(pos,range); + for (IEntity entity : entitiesNear) { + if (!entities.contains(entity)) { + entities.add(entity); + } + } + + double distance = Math.pow( + Math.pow(currentPos.xCoord-startPos[0],2) + +Math.pow(currentPos.yCoord-startPos[1],2) + +Math.pow(currentPos.zCoord-startPos[2],2) + , 0.5); + if (distance > maxDistance) { + break; + } + } + + return entities.toArray(new IEntity[0]); + } + + public IEntity[] rayCastEntities(IPos startPos, IPos lookVector, + int maxDistance, double offset, double range, + boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision) { + return rayCastEntities(new double[] {startPos.getX(), startPos.getY(), startPos.getZ()}, lookVector.normalize(), maxDistance, offset, range, stopOnBlock, stopOnLiquid, stopOnCollision); + } + + public IEntity[] rayCastEntities(double[] startPos, double[] lookVector, + int maxDistance, double offset, double range) { + return rayCastEntities(startPos, lookVector, maxDistance, offset, range, true, false, true); + } + + public IEntity[] rayCastEntities(IPos startPos, IPos lookVector, + int maxDistance, double offset, double range) { + return rayCastEntities(new double[] {startPos.getX(), startPos.getY(), startPos.getZ()}, lookVector.normalize(), maxDistance, offset, range, true, false, true); + } + public boolean canSeeSky(int x, int y, int z) { return world.canBlockSeeTheSky(x, y, z); } @@ -547,7 +700,8 @@ public class ScriptWorld implements IWorld { public void explode(double x, double y, double z, float range, boolean fire, boolean grief){ world.newExplosion(null, x, y, z, range, fire, grief); } - + + @Deprecated public IPlayer[] getAllServerPlayers(){ List list = MinecraftServer.getServer().getConfigurationManager().playerEntityList; IPlayer[] arr = new IPlayer[list.size()]; @@ -558,6 +712,7 @@ public class ScriptWorld implements IWorld { return arr; } + @Deprecated public String[] getPlayerNames() { IPlayer[] players = getAllServerPlayers(); String[] names = new String[players.length]; @@ -584,24 +739,27 @@ public class ScriptWorld implements IWorld { * @param name Name of the cloned entity * @return Returns the entity which was spawned */ - public IEntity spawnClone(int x, int y, int z, int tab, String name){ + public IEntity spawnClone(int x, int y, int z, int tab, String name, boolean ignoreProtection){ NBTTagCompound compound = ServerCloneController.Instance.getCloneData(null, name, tab); if(compound == null) return null; - Entity entity = NoppesUtilServer.spawnClone(compound, x, y, z, world); - if(entity == null) - return null; - return NpcAPI.Instance().getIEntity(entity); + Entity entity; + if (!ignoreProtection) { + entity = NoppesUtilServer.spawnCloneWithProtection(compound, x, y, z, world); + } else { + entity = NoppesUtilServer.spawnClone(compound, x, y, z, world); + } + return entity == null ? null : NpcAPI.Instance().getIEntity(entity); + } + + public IEntity spawnClone(int x, int y, int z, int tab, String name) { + return this.spawnClone(x,y,z,tab,name,true); } public ScriptScoreboard getScoreboard(){ return new ScriptScoreboard(); } - public BlockPos getMCBlockPos(int x, int y, int z){ - return new BlockPos(x,y,z); - } - /** * @since 1.7.10c * Expert use only diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java index 7164998eb..fc10f7447 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java @@ -248,7 +248,7 @@ public class ScriptEntity implements IEntity { NoppesUtilServer.spawnScriptedParticle(compound, this.getWorld().getDimensionID()); } - public void spawnParticle(IParticle entityParticle) { entityParticle.spawnOnEntity(this); } + public void spawnParticle(IParticle entityParticle) { entityParticle.spawn(this); } public int getEntityId(){ return entity.getEntityId(); diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java b/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java index e10fd4187..0ff394203 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java @@ -1,11 +1,17 @@ package noppes.npcs.scripted.entity; +import net.minecraft.block.BlockLiquid; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.util.math.BlockPos; +import noppes.npcs.scripted.ScriptBlockPos; +import noppes.npcs.scripted.interfaces.IBlock; +import noppes.npcs.scripted.interfaces.IPos; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.constants.EntityType; @@ -13,6 +19,8 @@ import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptDamageSource; +import java.util.ArrayList; + public class ScriptLivingBase extends ScriptEntity implements IEntityLivingBase { protected T entity; @@ -97,6 +105,47 @@ public class ScriptLivingBase extends ScriptEntity extends ScriptEntity/effect command diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java index 5f1ff8085..bc511eb75 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java @@ -452,12 +452,14 @@ public class ScriptNpc extends ScriptLiving imp return npc.stats.maxDelay; } - public void setRangedRage(int rangedRange) { + public void setRangedRange(int rangedRange) { npc.stats.rangedRange = rangedRange; } - public int getRangedRage() { + public int getRangedRange() { return npc.stats.rangedRange; } + public void setRangedRage(int rangedRage) { this.setRangedRange(rangedRage); } + public int getRangedRage() { return this.getRangedRange(); } public void setFireRate(int rate) { npc.stats.fireRate = rate; @@ -1006,8 +1008,13 @@ public class ScriptNpc extends ScriptLiving imp * @param type Retaliation type. 0:normal, 1:panic, 2:retreat, 3:nothing */ public void setRetaliateType(int type){ + if (type < 0) + type = 0; + if (type > 3) + type = 3; + npc.ai.onAttack = type; - npc.setResponse(); + npc.updateTasks(); } /** diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 70f32b57c..385744cf9 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -1,9 +1,6 @@ package noppes.npcs.scripted.entity; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; +import java.util.*; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayerMP; @@ -17,13 +14,8 @@ import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.Vec3; import net.minecraft.world.WorldSettings; -import noppes.npcs.CustomNpcsPermissions; -import noppes.npcs.NoppesStringUtils; -import noppes.npcs.NoppesUtilPlayer; -import noppes.npcs.NoppesUtilServer; -import noppes.npcs.Server; +import noppes.npcs.*; import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestType; import noppes.npcs.containers.ContainerCustomGui; @@ -41,17 +33,16 @@ import noppes.npcs.controllers.data.QuestData; import noppes.npcs.entity.EntityDialogNpc; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptPixelmonPlayerData; +import noppes.npcs.scripted.ScriptSound; import noppes.npcs.scripted.constants.EntityType; import noppes.npcs.scripted.gui.ScriptGui; -import noppes.npcs.scripted.interfaces.IParticle; -import noppes.npcs.scripted.interfaces.handler.IPlayerData; +import noppes.npcs.scripted.interfaces.*; +import noppes.npcs.scripted.interfaces.handler.data.IDialog; import noppes.npcs.scripted.interfaces.handler.data.IQuest; -import noppes.npcs.scripted.interfaces.IBlock; -import noppes.npcs.scripted.interfaces.IContainer; import noppes.npcs.scripted.interfaces.gui.ICustomGui; +import noppes.npcs.scripted.interfaces.handler.data.ISound; import noppes.npcs.scripted.interfaces.overlay.ICustomOverlay; import noppes.npcs.scripted.interfaces.entity.IPlayer; -import noppes.npcs.scripted.interfaces.ITimers; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.handler.IOverlayHandler; import noppes.npcs.scripted.interfaces.item.IItemStack; @@ -81,6 +72,10 @@ public class ScriptPlayer extends ScriptLivingBase return player.getCommandSenderName(); } + public void kick(String reason) { + player.playerNetServerHandler.kickPlayerFromServer(reason); + } + @Override public void spawnParticle(IParticle entityParticle) { entityParticle.spawnOnEntity(this); @@ -121,15 +116,30 @@ public class ScriptPlayer extends ScriptLivingBase player.getFoodStats().addStats(0,saturation-prevSaturation); } - - public boolean hasFinishedQuest(int id){ - PlayerQuestData data = PlayerDataController.instance.getPlayerData(player).questData; - return data.finishedQuests.containsKey(id); + + public void showDialog(IDialog dialog) { + if (dialog != null) { + showDialog(dialog.getId()); + } } - - public boolean hasActiveQuest(int id){ - PlayerQuestData data = PlayerDataController.instance.getPlayerData(player).questData; - return data.activeQuests.containsKey(id); + + public boolean hasReadDialog(IDialog dialog) { + if (dialog != null) { + return hasReadDialog(dialog.getId()); + } + return false; + } + + public void readDialog(IDialog dialog) { + if (dialog != null) { + this.readDialog(dialog.getId()); + } + } + + public void unreadDialog(IDialog dialog) { + if (dialog != null) { + this.unreadDialog(dialog.getId()); + } } public void showDialog(int id){ @@ -139,7 +149,7 @@ public class ScriptPlayer extends ScriptLivingBase NoppesUtilServer.openDialog(player, new EntityDialogNpc(this.player.worldObj), dialog, 0); } - + public boolean hasReadDialog(int id){ PlayerDialogData data = PlayerDataController.instance.getPlayerData(player).dialogData; return data.dialogsRead.contains(id); @@ -153,6 +163,52 @@ public class ScriptPlayer extends ScriptLivingBase PlayerDataController.instance.getPlayerData(player).dialogData.dialogsRead.remove(id); } + public boolean hasFinishedQuest(IQuest quest) { + if (quest == null) + return false; + return hasFinishedQuest(quest.getId()); + } + + public boolean hasActiveQuest(IQuest quest) { + if (quest == null) + return false; + return hasActiveQuest(quest.getId()); + } + + public void startQuest(IQuest quest) { + if (quest == null) + return; + startQuest(quest.getId()); + } + + public void finishQuest(IQuest quest) { + if (quest == null) + return; + finishQuest(quest.getId()); + } + + public void stopQuest(IQuest quest) { + if (quest == null) + return; + stopQuest(quest.getId()); + } + + public void removeQuest(IQuest quest) { + if (quest == null) + return; + removeQuest(quest.getId()); + } + + public boolean hasFinishedQuest(int id){ + PlayerQuestData data = PlayerDataController.instance.getPlayerData(player).questData; + return data.finishedQuests.containsKey(id); + } + + public boolean hasActiveQuest(int id){ + PlayerQuestData data = PlayerDataController.instance.getPlayerData(player).questData; + return data.activeQuests.containsKey(id); + } + /** * Add the quest from active quest list * @param id The Quest ID @@ -487,6 +543,26 @@ public class ScriptPlayer extends ScriptLivingBase player.playSound(name, volume, pitch); } + public void playSound(int id, ISound sound) { + NoppesUtilPlayer.playSoundTo(player, id, (ScriptSound) sound); + } + + public void stopSound(int id) { + NoppesUtilPlayer.stopSoundFor(player, id); + } + + public void pauseSounds() { + NoppesUtilPlayer.pauseSoundsFor(player); + } + + public void continueSounds() { + NoppesUtilPlayer.continueSoundsFor(player); + } + + public void stopSounds() { + NoppesUtilPlayer.stopSoundsFor(player); + } + public void mountEntity(Entity ridingEntity){ player.mountEntity(ridingEntity); } @@ -550,14 +626,6 @@ public class ScriptPlayer extends ScriptLivingBase return new ScriptPixelmonPlayerData(player); } - public IBlock getLookingAtBlock(int maxDistance) { - Vec3 lookVec = player.getLookVec(); - return getWorld().rayCastBlock( - new double[] {player.posX, player.posY+player.getEyeHeight(), player.posZ}, - new double[] {lookVec.xCoord, lookVec.yCoord, lookVec.zCoord}, - maxDistance); - } - public ITimers getTimers() { return PlayerDataController.instance.getPlayerData(player).timers; } @@ -601,6 +669,10 @@ public class ScriptPlayer extends ScriptLivingBase return this.data; } + public boolean isScriptingDev() { + return CustomNpcs.isScriptDev(player); + } + public IQuest[] getActiveQuests() { PlayerQuestData data = (PlayerQuestData) this.getData().getQuestData(); List quests = new ArrayList(); diff --git a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java index f9e5eab78..5a617fc85 100644 --- a/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java +++ b/src/main/java/noppes/npcs/scripted/event/PlayerEvent.java @@ -58,15 +58,26 @@ public class PlayerEvent extends CustomNPCsEvent { } public static class MouseClickedEvent extends PlayerEvent { + public final boolean isCtrlPressed; + public final boolean isAltPressed; + public final boolean isShiftPressed; + public final boolean isMetaPressed; + public final int[] keysDown; + public final int button; public final int mouseWheel; public final boolean buttonDown; - public MouseClickedEvent(IPlayer player, int button, int mouseWheel, boolean buttonDown){ + public MouseClickedEvent(IPlayer player, int button, int mouseWheel, boolean buttonDown, boolean isCtrlPressed, boolean isAltPressed, boolean isShiftPressed, boolean isMetaPressed, int[] heldKeys){ super(player); this.button = button; this.mouseWheel = mouseWheel; this.buttonDown = buttonDown; + this.isCtrlPressed = isCtrlPressed; + this.isAltPressed = isAltPressed; + this.isShiftPressed = isShiftPressed; + this.isMetaPressed = isMetaPressed; + this.keysDown = heldKeys; } } @@ -126,6 +137,20 @@ public class PlayerEvent extends CustomNPCsEvent { } } + @Cancelable + public static class AttackedEvent extends PlayerEvent { + public final IDamageSource damageSource; + public final IEntity source; + public final float damage; + + public AttackedEvent(IPlayer player, Entity source, float damage, DamageSource damagesource) { + super(player); + this.source = NpcAPI.Instance().getIEntity(source); + this.damage = damage; + this.damageSource = NpcAPI.Instance().getIDamageSource(damagesource); + } + } + @Cancelable public static class DamagedEvent extends PlayerEvent { public final IDamageSource damageSource; @@ -212,6 +237,20 @@ public class PlayerEvent extends CustomNPCsEvent { } } + @Cancelable + public static class AttackEvent extends PlayerEvent { + public final IDamageSource damageSource; + public final IEntity target; + public float damage; + + public AttackEvent(IPlayer player, Entity target, float damage, DamageSource damagesource) { + super(player); + this.target = NpcAPI.Instance().getIEntity(target); + this.damage = damage; + this.damageSource = NpcAPI.Instance().getIDamageSource(damagesource); + } + } + @Cancelable public static class DamagedEntityEvent extends PlayerEvent { public final IDamageSource damageSource; @@ -274,18 +313,6 @@ public class PlayerEvent extends CustomNPCsEvent { } } - @Cancelable - public static class AttackEvent extends PlayerEvent { - public final int type; - public final Object target; - - public AttackEvent(IPlayer player, int type, Object target) { - super(player); - this.type = type; - this.target = target; - } - } - @Cancelable public static class InteractEvent extends PlayerEvent { public final int type; diff --git a/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java b/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java index 6d5546e14..19ff53c72 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/AbstractNpcAPI.java @@ -22,13 +22,16 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.WorldServer; import noppes.npcs.CustomNpcs; +import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.*; +import noppes.npcs.scripted.ScriptSound; import noppes.npcs.scripted.gui.ScriptGui; import noppes.npcs.scripted.interfaces.entity.ICustomNpc; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.entity.IPlayer; import noppes.npcs.scripted.interfaces.gui.ICustomGui; import noppes.npcs.scripted.interfaces.handler.*; +import noppes.npcs.scripted.interfaces.handler.data.ISound; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.interfaces.overlay.ICustomOverlay; import noppes.npcs.scripted.overlay.ScriptOverlay; @@ -153,6 +156,8 @@ public abstract class AbstractNpcAPI { public abstract IPlayer[] getAllServerPlayers(); + public abstract String[] getPlayerNames(); + public abstract IItemStack createItem(String id, int damage, int size); public abstract void playSoundAtEntity(IEntity entity, String sound, float volume, float pitch); @@ -179,6 +184,18 @@ public abstract class AbstractNpcAPI { @Deprecated public abstract IParticle createEntityParticle(String directory); + public abstract ISound createSound(String directory); + + public abstract void playSound(int id, ISound sound); + + public abstract void stopSound(int id); + + public abstract void pauseSounds(); + + public abstract void continueSounds(); + + public abstract void stopSounds(); + /** * * @return The uptime of the server in MC ticks. diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IBlock.java b/src/main/java/noppes/npcs/scripted/interfaces/IBlock.java index c3f99a78b..03a2a4977 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IBlock.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IBlock.java @@ -103,4 +103,13 @@ public interface IBlock { * @return An INbt object which can modify the block's tile entity's NBT data. */ INbt getTileEntityNBT(); + + /** + * + * @param maxVolume The volume threshold to determine whether this block's bounding box collides, if it has one. + * @return Whether this block can be collided with + */ + boolean canCollide(double maxVolume); + + boolean canCollide(); } diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IParticle.java b/src/main/java/noppes/npcs/scripted/interfaces/IParticle.java index a231d4a98..3c97f32f8 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IParticle.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IParticle.java @@ -1,6 +1,5 @@ package noppes.npcs.scripted.interfaces; -import noppes.npcs.scripted.ScriptWorld; import noppes.npcs.scripted.interfaces.entity.IEntity; /** @@ -24,13 +23,13 @@ public interface IParticle { * * @param entity Spawns this particle object on the given entity. When spawned this way, the particle will always have its origin at the entity. */ - void spawnOnEntity(IEntity entity); + void spawn(IEntity entity); /** * * @param world Spawns the particle in the given world, at a position corresponding to this particle's position variables. */ - void spawnInWorld(ScriptWorld world); + void spawn(IWorld world); /** * @@ -39,7 +38,16 @@ public interface IParticle { * @param y The Y position the particle will spawn in the world. * @param z The Z position the particle will spawn in the world. */ - void spawnInWorld(ScriptWorld world, double x, double y, double z); + void spawn(IWorld world, double x, double y, double z); + + @Deprecated + void spawnOnEntity(IEntity entity); + + @Deprecated + void spawnInWorld(IWorld world); + + @Deprecated + void spawnInWorld(IWorld world, double x, double y, double z); /** * diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IPos.java b/src/main/java/noppes/npcs/scripted/interfaces/IPos.java index 5bbd363f4..13a07fbb2 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IPos.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IPos.java @@ -5,8 +5,6 @@ package noppes.npcs.scripted.interfaces; -import net.minecraft.util.math.BlockPos; - public interface IPos { int getX(); @@ -140,12 +138,6 @@ public interface IPos { */ double[] normalize(); - /** - * - * @return An obfuscated MC BlockPos object. - */ - BlockPos getMCBlockPos(); - /** * Offsets the block by 1 block in the given direction and returns the resulting IPos object * diff --git a/src/main/java/noppes/npcs/scripted/interfaces/ITileEntity.java b/src/main/java/noppes/npcs/scripted/interfaces/ITileEntity.java index d2448b23b..0df505aae 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/ITileEntity.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/ITileEntity.java @@ -1,7 +1,6 @@ package noppes.npcs.scripted.interfaces; import net.minecraft.tileentity.TileEntity; -import noppes.npcs.scripted.ScriptBlock; import noppes.npcs.scripted.ScriptWorld; public interface ITileEntity { diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java b/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java index 275d51e0f..55414b52f 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java @@ -1,10 +1,10 @@ package noppes.npcs.scripted.interfaces; -import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldServer; import noppes.npcs.scripted.ScriptScoreboard; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.entity.IPlayer; +import noppes.npcs.scripted.interfaces.handler.data.ISound; import noppes.npcs.scripted.interfaces.item.IItemStack; public interface IWorld { @@ -79,6 +79,16 @@ public interface IWorld { void playSoundToNearExcept(IPlayer player, String sound, float volume, float pitch); + void playSound(int id, ISound sound); + + void stopSound(int id); + + void pauseSounds(); + + void continueSounds(); + + void stopSounds(); + IEntity getEntityByID(int id); boolean spawnEntityInWorld(IEntity entity); @@ -100,6 +110,10 @@ public interface IWorld { IEntity[] getLoadedEntities(); + IEntity[] getEntitiesNear(IPos position, double range); + + IEntity[] getEntitiesNear(double x, double y, double z, double range); + /** * Sets the block's tile entity at the given position. */ @@ -156,23 +170,28 @@ public interface IWorld { */ public void removeBlock(int x, int y, int z); - /** - * starting at the start position, draw a line in the lookVector direction until a block is detected - * @param startPos - * @param lookVector should be a normalized direction vector - * @param maxDistance - * @return the first detected block but null if maxDistance is reached - */ - public IBlock rayCastBlock(double[] startPos, double[] lookVector, int maxDistance); + IPos rayCastPos(double[] startPos, double[] lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision); + + IPos rayCastPos(double[] startPos, double[] lookVector, int maxDistance); + + IPos rayCastPos(IPos startPos, IPos lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision); + + IPos rayCastPos(IPos startPos, IPos lookVector, int maxDistance); /** - * starting at the start position, draw a line in the lookVector direction until a block is detected - * @param startPos - * @param lookVector will normalize x, y, z to get a direction vector - * @param maxDistance - * @return the first detected block but null if maxDistance is reached - */ - public IBlock rayCastBlock(IPos startPos, IPos lookVector, int maxDistance); + * starting at the start position, draw a line in the lookVector direction until a block is detected + * @param startPos + * @param lookVector should be a normalized direction vector + * @param maxDistance + * @return the first detected block but null if maxDistance is reached + */ + IBlock rayCastBlock(double[] startPos, double[] lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision); + + IBlock rayCastBlock(double[] startPos, double[] lookVector, int maxDistance); + + IBlock rayCastBlock(IPos startPos, IPos lookVector, int maxDistance, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision); + + IBlock rayCastBlock(IPos startPos, IPos lookVector, int maxDistance); /** * @param startPos @@ -181,6 +200,14 @@ public interface IWorld { */ public IPos getNearestAir(IPos startPos, int maxHeight); + IEntity[] rayCastEntities(double[] startPos, double[] lookVector, int maxDistance, double offset, double range, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision); + + IEntity[] rayCastEntities(IPos startPos, IPos lookVector, int maxDistance, double offset, double range, boolean stopOnBlock, boolean stopOnLiquid, boolean stopOnCollision); + + IEntity[] rayCastEntities(double[] startPos, double[] lookVector, int maxDistance, double offset, double range); + + IEntity[] rayCastEntities(IPos startPos, IPos lookVector, int maxDistance, double offset, double range); + /** * @param x * @param y @@ -346,18 +373,15 @@ public interface IWorld { * @param z The z position the clone will be spawned at * @param tab The tab in which the clone is * @param name Name of the cloned entity + * @param ignoreProtection Whether the spawning of this clone skips protection checks. * @return Returns the entity which was spawned */ + IEntity spawnClone(int x, int y, int z, int tab, String name, boolean ignoreProtection); + IEntity spawnClone(int x, int y, int z, int tab, String name); ScriptScoreboard getScoreboard(); - /** - * - * @return An obfuscated MC BlockPos object. - */ - BlockPos getMCBlockPos(int x, int y, int z); - /** * @since 1.7.10c * Expert use only diff --git a/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java b/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java index a344e761a..789d32050 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java @@ -254,8 +254,8 @@ public interface ICustomNpc extends IEntityLiving { void setMaxProjectileDelay(int maxDelay); int getMaxProjectileDelay(); - void setRangedRage(int rangedRange); - int getRangedRage(); + void setRangedRange(int rangedRange); + int getRangedRange(); void setFireRate(int rate); int getFireRate(); diff --git a/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java b/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java index 401ac854b..3acc3b7d9 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java @@ -1,6 +1,8 @@ package noppes.npcs.scripted.interfaces.entity; import net.minecraft.entity.EntityLivingBase; +import noppes.npcs.scripted.interfaces.IBlock; +import noppes.npcs.scripted.interfaces.IPos; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.ScriptDamageSource; @@ -50,6 +52,40 @@ public interface IEntityLivingBase extends IEntity extends IEntityLivingBase */ String getName(); + void kick(String reason); + void setPosition(double x, double y, double z); void setPosition(double x, double y, double z, int dimensionId); @@ -36,36 +40,69 @@ public interface IPlayer extends IEntityLivingBase void setSaturation(float saturation); - public boolean hasReadDialog(int id); + void showDialog(IDialog dialog); - public void readDialog(int id); + boolean hasReadDialog(IDialog dialog); - public void unreadDialog(int id); + void readDialog(IDialog dialog); + + void unreadDialog(IDialog dialog); + + void showDialog(int id); + + boolean hasReadDialog(int id); + + void readDialog(int id); + + void unreadDialog(int id); + + boolean hasFinishedQuest(IQuest quest); + + boolean hasActiveQuest(IQuest quest); + + /** + * Add the quest from active quest list + * @param quest The quest + */ + void startQuest(IQuest quest); + + /** + * Add the quest from finished quest list + * @param quest The quest + */ + void finishQuest(IQuest quest); + /** + * Removes the quest from active quest list + * @param quest The quest + */ + void stopQuest(IQuest quest); + + /** + * Removes the quest from active and finished quest list + * @param quest The quest + */ + void removeQuest(IQuest quest); boolean hasFinishedQuest(int id); boolean hasActiveQuest(int id); /** - * Add the quest from active quest list - * @param id The Quest ID + * @param id The quest ID */ void startQuest(int id); /** - * Add the quest from finished quest list - * @param id The Quest ID + * @param id The quest ID */ void finishQuest(int id); /** - * Removes the quest from active quest list - * @param id The Quest ID + * @param id The quest ID */ void stopQuest(int id); /** - * Removes the quest from active and finished quest list - * @param id The Quest ID + * @param id The quest ID */ void removeQuest(int id); @@ -188,6 +225,16 @@ public interface IPlayer extends IEntityLivingBase void playSound(String name, float volume, float pitch); + void playSound(int id, ISound sound); + + void stopSound(int id); + + void pauseSounds(); + + void continueSounds(); + + void stopSounds(); + void mountEntity(Entity ridingEntity); IEntity dropOneItem(boolean dropStack); @@ -226,8 +273,6 @@ public interface IPlayer extends IEntityLivingBase */ ScriptPixelmonPlayerData getPixelmonData(); - IBlock getLookingAtBlock(int maxDistance); - ITimers getTimers(); void updatePlayerInventory(); @@ -238,6 +283,8 @@ public interface IPlayer extends IEntityLivingBase public IPlayerData getData(); + boolean isScriptingDev(); + IQuest[] getActiveQuests(); IContainer getOpenContainer(); diff --git a/src/main/java/noppes/npcs/scripted/interfaces/handler/ICloneHandler.java b/src/main/java/noppes/npcs/scripted/interfaces/handler/ICloneHandler.java index effc81b74..9fe8108fe 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/handler/ICloneHandler.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/handler/ICloneHandler.java @@ -9,6 +9,9 @@ import noppes.npcs.scripted.interfaces.IWorld; import noppes.npcs.scripted.interfaces.entity.IEntity; public interface ICloneHandler { + + IEntity spawn(double x, double y, double z, int tab, String name, IWorld world, boolean ignoreProtection); + IEntity spawn(double x, double y, double z, int tab, String name, IWorld world); IEntity[] getTab(int tab, IWorld world); diff --git a/src/main/java/noppes/npcs/scripted/interfaces/handler/data/ISound.java b/src/main/java/noppes/npcs/scripted/interfaces/handler/data/ISound.java new file mode 100644 index 000000000..c15effbaa --- /dev/null +++ b/src/main/java/noppes/npcs/scripted/interfaces/handler/data/ISound.java @@ -0,0 +1,37 @@ +package noppes.npcs.scripted.interfaces.handler.data; + +import noppes.npcs.scripted.interfaces.IPos; +import noppes.npcs.scripted.interfaces.entity.IEntity; + +public interface ISound { + + void setEntity(IEntity entity); + + IEntity getEntity(); + + void setRepeat(boolean repeat); + + boolean repeats(); + + void setRepeatDelay(int delay); + + int getRepeatDelay(); + + void setVolume(float volume); + + float getVolume(); + + void setPitch(float pitch); + + float getPitch(); + + void setPosition(IPos pos); + + void setPosition(float x, float y, float z); + + float getX(); + + float getY(); + + float getZ(); +} diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/Skin_Template.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/Skin_Template.png new file mode 100644 index 000000000..0d6751f52 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/Skin_Template.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/BlondDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/BlondDwarf.png new file mode 100644 index 000000000..fd1f73e44 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/BlondDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/GingerDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/GingerDwarf.png new file mode 100644 index 000000000..5c0ab552f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/GingerDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/GingerDwarf2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/GingerDwarf2.png new file mode 100644 index 000000000..56e5d27fa Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/GingerDwarf2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/Simone.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/Simone.png new file mode 100644 index 000000000..78d1ef78f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarffemale/Simone.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/BeardedDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/BeardedDwarf.png new file mode 100644 index 000000000..e3e07cde6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/BeardedDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Blacksmith.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Blacksmith.png new file mode 100644 index 000000000..adb599f8d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Blacksmith.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf.png new file mode 100644 index 000000000..02c94b40a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/DwarfKing.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/DwarfKing.png new file mode 100644 index 000000000..57a57cfa9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/DwarfKing.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/DwarfStatue.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/DwarfStatue.png new file mode 100644 index 000000000..69fbd0598 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/DwarfStatue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Blacksmith.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Blacksmith.png new file mode 100644 index 000000000..c0924cd68 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Blacksmith.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Keeper.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Keeper.png new file mode 100644 index 000000000..0e29e1f78 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Keeper.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Leader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Leader.png new file mode 100644 index 000000000..7f3608648 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Dwarf_Leader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/ElderlyDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/ElderlyDwarf.png new file mode 100644 index 000000000..84720a220 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/ElderlyDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/GingerKing.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/GingerKing.png new file mode 100644 index 000000000..450c72f4a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/GingerKing.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/GingerKnight.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/GingerKnight.png new file mode 100644 index 000000000..384bce3f8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/GingerKnight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Goblin.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Goblin.png new file mode 100644 index 000000000..c18e91804 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Goblin.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/High_Class_Dwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/High_Class_Dwarf.png new file mode 100644 index 000000000..0dd3d7ad9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/High_Class_Dwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/High_Class_Dwarf_2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/High_Class_Dwarf_2.png new file mode 100644 index 000000000..f2aeb600b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/High_Class_Dwarf_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Hobbit.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Hobbit.png new file mode 100644 index 000000000..69e6c5c18 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Hobbit.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Miner.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Miner.png new file mode 100644 index 000000000..e4526af78 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Miner.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/MoustachedDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/MoustachedDwarf.png new file mode 100644 index 000000000..d1899bc45 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/MoustachedDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/One_Eye_blind_Dwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/One_Eye_blind_Dwarf.png new file mode 100644 index 000000000..76c96f5d5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/One_Eye_blind_Dwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Simon.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Simon.png new file mode 100644 index 000000000..f66fbe086 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Simon.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/SomeDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/SomeDwarf.png new file mode 100644 index 000000000..9f21b02cd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/SomeDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Viking.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Viking.png new file mode 100644 index 000000000..7141fbe95 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/dwarfmale/Viking.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/DarkElfFemale.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/DarkElfFemale.png new file mode 100644 index 000000000..7822b125c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/DarkElfFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfFemale.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfFemale.png new file mode 100644 index 000000000..db4cd91f2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfMage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfMage.png new file mode 100644 index 000000000..2946c02ee Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfMage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfQueen.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfQueen.png new file mode 100644 index 000000000..9445ae60f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfQueen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfQueenFormal.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfQueenFormal.png new file mode 100644 index 000000000..5bc2b5004 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfQueenFormal.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfSoldier.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfSoldier.png new file mode 100644 index 000000000..8f3956a40 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfSoldier.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfSoldierHelmet.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfSoldierHelmet.png new file mode 100644 index 000000000..0798b2c7e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfSoldierHelmet.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfWarrior.png new file mode 100644 index 000000000..e473869c7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/ElfWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/WoodElfFemale.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/WoodElfFemale.png new file mode 100644 index 000000000..6cb8ebd4f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elffemale/WoodElfFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/BlondElf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/BlondElf.png new file mode 100644 index 000000000..61a8e7328 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/BlondElf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Blood_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Blood_Elf.png new file mode 100644 index 000000000..b20da1c0a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Blood_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Blood_Elf_Mage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Blood_Elf_Mage.png new file mode 100644 index 000000000..69b6f8ac5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Blood_Elf_Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/DarkElfCitizen.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/DarkElfCitizen.png new file mode 100644 index 000000000..e0610bce5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/DarkElfCitizen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf Knight.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf Knight.png new file mode 100644 index 000000000..f96303411 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf Knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf Librarian.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf Librarian.png new file mode 100644 index 000000000..1e1619bf0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf Librarian.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf.png new file mode 100644 index 000000000..ae20fa439 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Dark_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ElfKnight.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ElfKnight.png new file mode 100644 index 000000000..dc2638856 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ElfKnight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ElfMale.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ElfMale.png new file mode 100644 index 000000000..11583722f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ElfMale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Elf_Asassin_2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Elf_Asassin_2.png new file mode 100644 index 000000000..3d64c3e56 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Elf_Asassin_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Engineer_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Engineer_Elf.png new file mode 100644 index 000000000..2486d5cc7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Engineer_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ForestElf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ForestElf.png new file mode 100644 index 000000000..1c8d44e0c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/ForestElf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/High_Class_Knight_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/High_Class_Knight_Elf.png new file mode 100644 index 000000000..1fc0bd45b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/High_Class_Knight_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Link.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Link.png new file mode 100644 index 000000000..647f981bc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/Link.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/WoodElf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/WoodElf.png new file mode 100644 index 000000000..0f3c8acf4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/elfmale/WoodElf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/AlbinoChibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/AlbinoChibi.png new file mode 100644 index 000000000..d24b15c1e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/AlbinoChibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/EnderGhost.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/EnderGhost.png new file mode 100644 index 000000000..e182dd129 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/EnderGhost.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/FriendlyEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/FriendlyEnderchibi.png new file mode 100644 index 000000000..bf5da0612 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/FriendlyEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/IceEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/IceEnderchibi.png new file mode 100644 index 000000000..c3db1c5be Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/IceEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/MrEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/MrEnderchibi.png new file mode 100644 index 000000000..ed80357e0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/MrEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/MsEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/MsEnderchibi.png new file mode 100644 index 000000000..afea44fdb Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/MsEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/NetherChibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/NetherChibi.png new file mode 100644 index 000000000..be310d0b2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/NetherChibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/Slenderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/Slenderchibi.png new file mode 100644 index 000000000..318971c30 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderchibi/Slenderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Apparation.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Apparation.png new file mode 100644 index 000000000..223207045 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Apparation.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Ender Mage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Ender Mage.png new file mode 100644 index 000000000..23a56ea12 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Ender Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Slenderman.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Slenderman.png new file mode 100644 index 000000000..3fc07a9de Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/Slenderman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/enderman.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/enderman.png new file mode 100644 index 000000000..045ee618a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/enderman/enderman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/BunnyFemale.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/BunnyFemale.png new file mode 100644 index 000000000..b907914d6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/BunnyFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Female.png new file mode 100644 index 000000000..b4e9269e3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Hunter Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Hunter Female.png new file mode 100644 index 000000000..2986e8b53 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Hunter Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Straw Hat Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Straw Hat Female.png new file mode 100644 index 000000000..aeb3c1160 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Straw Hat Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Trader Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Trader Female.png new file mode 100644 index 000000000..7b5b8717e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Trader Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Warrior Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Warrior Female.png new file mode 100644 index 000000000..ca53ff52a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Leopard Warrior Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Hunter.png new file mode 100644 index 000000000..c12d1f19e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Straw Hat.png new file mode 100644 index 000000000..e1791a6bc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Trader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Trader.png new file mode 100644 index 000000000..863dbff56 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Warrior.png new file mode 100644 index 000000000..f574d65f7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female.png new file mode 100644 index 000000000..cb0081b3c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Snow Leopard Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Hunter.png new file mode 100644 index 000000000..8300d9ad2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Straw Hat.png new file mode 100644 index 000000000..cbae3a989 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Trader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Trader.png new file mode 100644 index 000000000..bf5ac8d63 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Warrior.png new file mode 100644 index 000000000..279ebcae9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female.png new file mode 100644 index 000000000..0c0696f9e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/Tiger Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlack.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlack.png new file mode 100644 index 000000000..e2d3099d0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlack.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackHunter .png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackHunter .png new file mode 100644 index 000000000..f57832027 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackHunter .png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackHunter.png new file mode 100644 index 000000000..137107b3f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackSteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackSteampunk.png new file mode 100644 index 000000000..89268bd6e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackSteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackTrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackTrader.png new file mode 100644 index 000000000..6a5817268 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackWarrior.png new file mode 100644 index 000000000..74ca05e67 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBlackWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrown.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrown.png new file mode 100644 index 000000000..0ab5acaf7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownHunter.png new file mode 100644 index 000000000..4ae589e36 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownSteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownSteampunk.png new file mode 100644 index 000000000..1526657c1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownSteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownTrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownTrader.png new file mode 100644 index 000000000..c507f8d8f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownWarrior.png new file mode 100644 index 000000000..d9fc08a0f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfBrownWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGrey.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGrey.png new file mode 100644 index 000000000..39d68c0d8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyHunter.png new file mode 100644 index 000000000..3af9dbbdb Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreySteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreySteampunk.png new file mode 100644 index 000000000..49d26ed22 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreySteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyTrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyTrader.png new file mode 100644 index 000000000..a08f0bf70 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyWarrior.png new file mode 100644 index 000000000..48c9cb823 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGrey.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGrey.png new file mode 100644 index 000000000..8a514cee1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyHunter.png new file mode 100644 index 000000000..478ca0dd4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreySteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreySteampunk.png new file mode 100644 index 000000000..5e5d6b2cd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreySteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyTrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyTrader.png new file mode 100644 index 000000000..8a692e8d8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyWarrior.png new file mode 100644 index 000000000..9bb3fa0a1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/WolfLightGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/angelblonde.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/angelblonde.png new file mode 100644 index 000000000..9a6af559f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furryfemale/angelblonde.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Bunny.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Bunny.png new file mode 100644 index 000000000..9a3f29e9b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Bunny.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/DragonGreen.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/DragonGreen.png new file mode 100644 index 000000000..ffb449947 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/DragonGreen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Hunter.png new file mode 100644 index 000000000..d12ae55f0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Straw Hat.png new file mode 100644 index 000000000..9d2f3277a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Trader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Trader.png new file mode 100644 index 000000000..343c0ebcf Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Warrior.png new file mode 100644 index 000000000..9b4d9f1f3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard.png new file mode 100644 index 000000000..f7caf8ad1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Leopard.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Reaper.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Reaper.png new file mode 100644 index 000000000..bb60b30f2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Reaper.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Hunter.png new file mode 100644 index 000000000..18f127c35 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Straw Hat.png new file mode 100644 index 000000000..dad62fc37 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Trader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Trader.png new file mode 100644 index 000000000..e88d2ad41 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Warrior.png new file mode 100644 index 000000000..6a9f5c36e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Snow Leopard Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/SnowLeopard.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/SnowLeopard.png new file mode 100644 index 000000000..e70742fd0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/SnowLeopard.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Hunter.png new file mode 100644 index 000000000..03a7961c4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Straw Hat.png new file mode 100644 index 000000000..b51742643 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Trader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Trader.png new file mode 100644 index 000000000..74f410cc4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Warrior.png new file mode 100644 index 000000000..69b64c571 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger.png new file mode 100644 index 000000000..efa51daf7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/Tiger.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlack.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlack.png new file mode 100644 index 000000000..147a6be4e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlack.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackHunter.png new file mode 100644 index 000000000..568f24804 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackSteamPunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackSteamPunk.png new file mode 100644 index 000000000..60d83656c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackSteamPunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackTrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackTrader.png new file mode 100644 index 000000000..dee896344 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackWarrior.png new file mode 100644 index 000000000..de633b824 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBlackWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrown.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrown.png new file mode 100644 index 000000000..894441439 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownHunter.png new file mode 100644 index 000000000..2f78a041a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownSteamPunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownSteamPunk.png new file mode 100644 index 000000000..1526657c1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownSteamPunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownTrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownTrader.png new file mode 100644 index 000000000..18558db53 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownWarrior.png new file mode 100644 index 000000000..12bc2b2e8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfBrownWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGrey.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGrey.png new file mode 100644 index 000000000..b04ad7ce3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyHunter.png new file mode 100644 index 000000000..e04b6abe9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreySteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreySteampunk.png new file mode 100644 index 000000000..994ec24be Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreySteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyTraderWolf.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyTraderWolf.png new file mode 100644 index 000000000..4464e0495 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyTraderWolf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyWarrior.png new file mode 100644 index 000000000..e0b5aec02 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGrey.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGrey.png new file mode 100644 index 000000000..a0b6678cc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyHunter.png new file mode 100644 index 000000000..80ab8af56 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyModelSteamPunk.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyModelSteamPunk.png new file mode 100644 index 000000000..5e5d6b2cd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyModelSteamPunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyWarrior.png new file mode 100644 index 000000000..3c391a1f3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyrader.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyrader.png new file mode 100644 index 000000000..407b2a857 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/furrymale/WolfLightGreyrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/BodyguardStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/BodyguardStephanie.png new file mode 100644 index 000000000..dfbe8f702 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/BodyguardStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/CamoRadioStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/CamoRadioStephanie.png new file mode 100644 index 000000000..9e781bb60 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/CamoRadioStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/ChefStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/ChefStephanie.png new file mode 100644 index 000000000..19631b48e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/ChefStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/DoctorStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/DoctorStephanie.png new file mode 100644 index 000000000..6b05bede9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/DoctorStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MageStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MageStephanie.png new file mode 100644 index 000000000..f96a96269 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MageStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MailmanStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MailmanStephanie.png new file mode 100644 index 000000000..671e69dfd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MailmanStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/McDStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/McDStephanie.png new file mode 100644 index 000000000..c148b70a3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/McDStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MinerStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MinerStephanie.png new file mode 100644 index 000000000..56d746978 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/MinerStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/PinstripesStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/PinstripesStephanie.png new file mode 100644 index 000000000..1aea63c0e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/PinstripesStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RaggedyBardStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RaggedyBardStephanie.png new file mode 100644 index 000000000..5a80a83db Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RaggedyBardStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesBlackStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesBlackStephanie.png new file mode 100644 index 000000000..c673b6f76 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesBlackStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesBrownStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesBrownStephanie.png new file mode 100644 index 000000000..7b3a0ebcd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesBrownStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesWhiteShepanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesWhiteShepanie.png new file mode 100644 index 000000000..99691024c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/RobesWhiteShepanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/Roseta.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/Roseta.png new file mode 100644 index 000000000..153394e91 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/Roseta.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/SteampunkStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/SteampunkStephanie.png new file mode 100644 index 000000000..58bf1e43e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/SteampunkStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/Stephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/Stephanie.png new file mode 100644 index 000000000..9aaf8142e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/Stephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TownsmanStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TownsmanStephanie.png new file mode 100644 index 000000000..ce46d0ea6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TownsmanStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TraderStepahnie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TraderStepahnie.png new file mode 100644 index 000000000..1dd123885 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TraderStepahnie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeElderWoman.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeElderWoman.png new file mode 100644 index 000000000..ec40ff890 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeElderWoman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeGirl.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeGirl.png new file mode 100644 index 000000000..ab7ffba22 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeGirl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman1.png new file mode 100644 index 000000000..4f4023ed3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman2.png new file mode 100644 index 000000000..3afc8defc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman3.png new file mode 100644 index 000000000..774e45c0c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/TribeWoman3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WaitressStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WaitressStephanie.png new file mode 100644 index 000000000..5197fe487 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WaitressStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WizardStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WizardStephanie.png new file mode 100644 index 000000000..66fdeec96 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WizardStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WoundedStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WoundedStephanie.png new file mode 100644 index 000000000..ed26d785a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanfemale/WoundedStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/32test.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/32test.png new file mode 100644 index 000000000..955c582f0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/32test.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/64test.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/64test.png new file mode 100644 index 000000000..be4566757 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/64test.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ArcticSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ArcticSteve.png new file mode 100644 index 000000000..3037d3733 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ArcticSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/BodyguardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/BodyguardSteve.png new file mode 100644 index 000000000..b247d44eb Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/BodyguardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoRadioSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoRadioSteve.png new file mode 100644 index 000000000..b5b6ef5f5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoRadioSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoSpecOpsSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoSpecOpsSteve.png new file mode 100644 index 000000000..32473d8f8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoSpecOpsSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoSteve.png new file mode 100644 index 000000000..2b7524cc2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CamoSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CasualSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CasualSteve.png new file mode 100644 index 000000000..3c41fea87 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/CasualSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ChefSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ChefSteve.png new file mode 100644 index 000000000..3ee8f4424 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ChefSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/DoctorSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/DoctorSteve.png new file mode 100644 index 000000000..d71019baa Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/DoctorSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ElderlySteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ElderlySteve.png new file mode 100644 index 000000000..f0827aeb2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/ElderlySteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/Evil_Gold_Knight.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/Evil_Gold_Knight.png new file mode 100644 index 000000000..4127985ec Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/Evil_Gold_Knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/FireSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/FireSteve.png new file mode 100644 index 000000000..e6185dda7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/FireSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GangsterSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GangsterSteve.png new file mode 100644 index 000000000..2f276a391 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GangsterSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GuardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GuardSteve.png new file mode 100644 index 000000000..2b1b26f1b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GuardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GuardSteve2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GuardSteve2.png new file mode 100644 index 000000000..306f17336 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/GuardSteve2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/King.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/King.png new file mode 100644 index 000000000..bf462172a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KingSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KingSteve.png new file mode 100644 index 000000000..ab658e090 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KingSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KnightSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KnightSteve.png new file mode 100644 index 000000000..26b59bef0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KnightSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KungFuSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KungFuSteve.png new file mode 100644 index 000000000..50f36495b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/KungFuSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/LondonGuard.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/LondonGuard.png new file mode 100644 index 000000000..b79f6b824 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/LondonGuard.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MageSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MageSteve.png new file mode 100644 index 000000000..b33c127bd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MageSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MailmanSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MailmanSteve.png new file mode 100644 index 000000000..946ab9193 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MailmanSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/McDSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/McDSteve.png new file mode 100644 index 000000000..5204a7986 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/McDSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MercenarySteve 2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MercenarySteve 2.png new file mode 100644 index 000000000..5a8d19856 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MercenarySteve 2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MercenarySteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MercenarySteve.png new file mode 100644 index 000000000..e79ba35d8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MercenarySteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MinerSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MinerSteve.png new file mode 100644 index 000000000..c7b1e5977 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/MinerSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PinstripesSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PinstripesSteve.png new file mode 100644 index 000000000..9e4d19eb5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PinstripesSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PriestSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PriestSteve.png new file mode 100644 index 000000000..1115ebbc7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PriestSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PrisonerSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PrisonerSteve.png new file mode 100644 index 000000000..0d6da2ba4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/PrisonerSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RaggedyBardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RaggedyBardSteve.png new file mode 100644 index 000000000..e0ab972e2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RaggedyBardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesBlackSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesBlackSteve.png new file mode 100644 index 000000000..3cc60bb1d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesBlackSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesBrownSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesBrownSteve.png new file mode 100644 index 000000000..8ab214c4c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesBrownSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesWhiteSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesWhiteSteve.png new file mode 100644 index 000000000..0dc57701a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/RobesWhiteSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/SteampunkSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/SteampunkSteve.png new file mode 100644 index 000000000..5dd9bd4d1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/SteampunkSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/Steve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/Steve.png new file mode 100644 index 000000000..bb985ec38 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/Steve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TownsmanSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TownsmanSteve.png new file mode 100644 index 000000000..95f16e5e6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TownsmanSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TraderSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TraderSteve.png new file mode 100644 index 000000000..c3dd201dd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TraderSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeBoy.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeBoy.png new file mode 100644 index 000000000..9447ac1de Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeBoy.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeElder.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeElder.png new file mode 100644 index 000000000..c20c63aa8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeElder.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeHunter1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeHunter1.png new file mode 100644 index 000000000..ca81e051e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeHunter1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeHunter2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeHunter2.png new file mode 100644 index 000000000..1c03f6558 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeHunter2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeKimba.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeKimba.png new file mode 100644 index 000000000..5b44dc316 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeKimba.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeMan.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeMan.png new file mode 100644 index 000000000..9fa3a1da9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TribeMan.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TuxedoSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TuxedoSteve.png new file mode 100644 index 000000000..7c57540f5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/TuxedoSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerOldSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerOldSteve.png new file mode 100644 index 000000000..3ad931aec Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerOldSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerSteve.png new file mode 100644 index 000000000..4ea17b389 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerSteve2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerSteve2.png new file mode 100644 index 000000000..c94c15949 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/VillagerSteve2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WaiterSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WaiterSteve.png new file mode 100644 index 000000000..58f782bb0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WaiterSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/White_Knight_2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/White_Knight_2.png new file mode 100644 index 000000000..d5b1c20a6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/White_Knight_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/White_knight.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/White_knight.png new file mode 100644 index 000000000..16ed61a8e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/White_knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WizardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WizardSteve.png new file mode 100644 index 000000000..3480c2ab5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WizardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WoundedSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WoundedSteve.png new file mode 100644 index 000000000..1b1b16902 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/humanmale/WoundedSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monsterfemale/Herobrine.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monsterfemale/Herobrine.png new file mode 100644 index 000000000..0123cdd7a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monsterfemale/Herobrine.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monsterfemale/ZombieStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monsterfemale/ZombieStephanie.png new file mode 100644 index 000000000..b1626a262 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monsterfemale/ZombieStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Classy_Zombie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Classy_Zombie.png new file mode 100644 index 000000000..729f340b6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Classy_Zombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Death.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Death.png new file mode 100644 index 000000000..1ddb9e3bd Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Death.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DemonSalesman.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DemonSalesman.png new file mode 100644 index 000000000..b215142b8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DemonSalesman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DesertZombie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DesertZombie.png new file mode 100644 index 000000000..963709b6f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DesertZombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DisfiguredZombie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DisfiguredZombie.png new file mode 100644 index 000000000..609bd07d7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/DisfiguredZombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/EnderMage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/EnderMage.png new file mode 100644 index 000000000..e575905d5 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/EnderMage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Flesh.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Flesh.png new file mode 100644 index 000000000..43e5e8f11 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Flesh.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/FrozenCorpse.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/FrozenCorpse.png new file mode 100644 index 000000000..03e77c6d4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/FrozenCorpse.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Ghost King.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Ghost King.png new file mode 100644 index 000000000..ca66a9ee9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Ghost King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostGrey.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostGrey.png new file mode 100644 index 000000000..701a4015f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostRed.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostRed.png new file mode 100644 index 000000000..4a0eed901 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostRed.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostYellow.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostYellow.png new file mode 100644 index 000000000..1c32d822b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/GhostYellow.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Herobrine.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Herobrine.png new file mode 100644 index 000000000..2116c854c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Herobrine.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Ogre.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Ogre.png new file mode 100644 index 000000000..c965545e6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Ogre.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/SandMonster.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/SandMonster.png new file mode 100644 index 000000000..e773d76ef Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/SandMonster.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Securitron.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Securitron.png new file mode 100644 index 000000000..2df68421f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Securitron.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Skull_Mage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Skull_Mage.png new file mode 100644 index 000000000..d4d90020f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Skull_Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/StoneGolem.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/StoneGolem.png new file mode 100644 index 000000000..1bdd81335 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/StoneGolem.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/TecZombie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/TecZombie.png new file mode 100644 index 000000000..c51fac9f2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/TecZombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Undead King.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Undead King.png new file mode 100644 index 000000000..ddf82eafc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Undead King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Undead_Monster.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Undead_Monster.png new file mode 100644 index 000000000..e0c3dc1c6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/Undead_Monster.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieBloody.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieBloody.png new file mode 100644 index 000000000..e9be80a18 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieBloody.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieMage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieMage.png new file mode 100644 index 000000000..fd7a1b062 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieMage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieSteve.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieSteve.png new file mode 100644 index 000000000..31d12461a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/monstermale/ZombieSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Claire.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Claire.png new file mode 100644 index 000000000..9ef1c818e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Claire.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Creepsnake.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Creepsnake.png new file mode 100644 index 000000000..bcfc52769 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Creepsnake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Ender Snake.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Ender Snake.png new file mode 100644 index 000000000..4169c2717 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Ender Snake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Naga Stephanie Pink.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Naga Stephanie Pink.png new file mode 100644 index 000000000..12e4f26df Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Naga Stephanie Pink.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Naga Stephanie.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Naga Stephanie.png new file mode 100644 index 000000000..a92ab6401 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagafemale/Naga Stephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Cobra.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Cobra.png new file mode 100644 index 000000000..567f3e3f9 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Cobra.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Creepersneeper.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Creepersneeper.png new file mode 100644 index 000000000..bd148ed6c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Creepersneeper.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/EnderSnake.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/EnderSnake.png new file mode 100644 index 000000000..d3e54dc80 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/EnderSnake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Black.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Black.png new file mode 100644 index 000000000..c19c35bd7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Black.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Blue.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Blue.png new file mode 100644 index 000000000..162c150a8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Blue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Gray.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Gray.png new file mode 100644 index 000000000..83a8ab6a6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Gray.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Green.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Green.png new file mode 100644 index 000000000..9289531f2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Green.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Red.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Red.png new file mode 100644 index 000000000..5bcc77888 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Red.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 1.png new file mode 100644 index 000000000..e9622eda3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 2.png new file mode 100644 index 000000000..2f4f3c76e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 3.png new file mode 100644 index 000000000..09620a45f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 4.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 4.png new file mode 100644 index 000000000..bf097cb51 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 4.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 5.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 5.png new file mode 100644 index 000000000..e9529c33e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 5.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 6.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 6.png new file mode 100644 index 000000000..5e25c6efc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 6.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 7.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 7.png new file mode 100644 index 000000000..a5502ea69 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Steve 7.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga White.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga White.png new file mode 100644 index 000000000..d93a73bf7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga White.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Yellow.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Yellow.png new file mode 100644 index 000000000..9d760e9e2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Naga Yellow.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Snake.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Snake.png new file mode 100644 index 000000000..50ff48fae Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/Snake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/finsample.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/finsample.png new file mode 100644 index 000000000..50ff48fae Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/nagamale/finsample.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Bandit.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Bandit.png new file mode 100644 index 000000000..a1508d900 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Bandit.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Butcher.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Butcher.png new file mode 100644 index 000000000..802ca166c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Butcher.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Casual_Blue.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Casual_Blue.png new file mode 100644 index 000000000..22ccdaca8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Casual_Blue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Green_Jacket.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Green_Jacket.png new file mode 100644 index 000000000..ce83ca39c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Green_Jacket.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Guy.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Guy.png new file mode 100644 index 000000000..ffebd8c2a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Guy.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Hunter.png new file mode 100644 index 000000000..9e26443ba Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Knight.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Knight.png new file mode 100644 index 000000000..b0748f805 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Pig_Man.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Pig_Man.png new file mode 100644 index 000000000..cefe9fb72 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Pig_Man.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Samurai.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Samurai.png new file mode 100644 index 000000000..99060f826 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Samurai.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Scavenger.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Scavenger.png new file mode 100644 index 000000000..de2ece387 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/boy/Scavenger.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Alex_Revamp.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Alex_Revamp.png new file mode 100644 index 000000000..c7f6685ab Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Alex_Revamp.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Bunny_Girl.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Bunny_Girl.png new file mode 100644 index 000000000..a51fe3927 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Bunny_Girl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Creeper_Girl.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Creeper_Girl.png new file mode 100644 index 000000000..fba796444 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Creeper_Girl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Girl_Brown.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Girl_Brown.png new file mode 100644 index 000000000..1281df261 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Girl_Brown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Girl_Lavender.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Girl_Lavender.png new file mode 100644 index 000000000..249448ce7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Girl_Lavender.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Neapolitan.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Neapolitan.png new file mode 100644 index 000000000..ccd654478 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Neapolitan.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Pastel.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Pastel.png new file mode 100644 index 000000000..d64c664ea Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Pastel.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Pink_Girl.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Pink_Girl.png new file mode 100644 index 000000000..98d36dcc1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Pink_Girl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Purple_Girl.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Purple_Girl.png new file mode 100644 index 000000000..7620446c8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Purple_Girl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Summer_Girl.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Summer_Girl.png new file mode 100644 index 000000000..4a71062b3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/newskins/girls/Summer_Girl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc1.png new file mode 100644 index 000000000..1f7f4a965 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc2.png new file mode 100644 index 000000000..d41ea62c4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc3.png new file mode 100644 index 000000000..228896464 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GenericFemaleOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GuardFemaleOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GuardFemaleOrc1.png new file mode 100644 index 000000000..e71c7b0bc Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GuardFemaleOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GuardFemaleOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GuardFemaleOrc2.png new file mode 100644 index 000000000..acb39e34a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/GuardFemaleOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/LeatherArmoredFemaleOrc.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/LeatherArmoredFemaleOrc.png new file mode 100644 index 000000000..de753de1a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/LeatherArmoredFemaleOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc1.png new file mode 100644 index 000000000..7789a307c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc2.png new file mode 100644 index 000000000..b18f071cf Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc3.png new file mode 100644 index 000000000..bfd06ad05 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/MercenaryFemaleOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/StrandedFemaleOrc.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/StrandedFemaleOrc.png new file mode 100644 index 000000000..8c82d2477 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcfemale/StrandedFemaleOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc1.png new file mode 100644 index 000000000..74f45e137 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc2.png new file mode 100644 index 000000000..940f80724 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc3.png new file mode 100644 index 000000000..3e19f92b4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GenericOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant.png new file mode 100644 index 000000000..7f490ac1d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant_2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant_2.png new file mode 100644 index 000000000..b374251e0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant_3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant_3.png new file mode 100644 index 000000000..fde3158b6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/Giant_3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GuardOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GuardOrc1.png new file mode 100644 index 000000000..9d57de5ad Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GuardOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GuardOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GuardOrc2.png new file mode 100644 index 000000000..a4af5a3d2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/GuardOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/LeatherArmoredOrc.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/LeatherArmoredOrc.png new file mode 100644 index 000000000..42e6e18b4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/LeatherArmoredOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc1.png new file mode 100644 index 000000000..637e5789e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc2.png new file mode 100644 index 000000000..c4815c2ab Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc3.png new file mode 100644 index 000000000..83831b748 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/MercenaryOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/StrandedOrc.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/StrandedOrc.png new file mode 100644 index 000000000..88ca0085a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/orcmale/StrandedOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Ancient Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Ancient Skeleton.png new file mode 100644 index 000000000..146fa50c4 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Ancient Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Bloody Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Bloody Skeleton.png new file mode 100644 index 000000000..41d6783e8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Bloody Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Golden Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Golden Skeleton.png new file mode 100644 index 000000000..11a5436ab Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Golden Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Archer.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Archer.png new file mode 100644 index 000000000..95df9777b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Archer.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton King.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton King.png new file mode 100644 index 000000000..7bbc10eef Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Mage.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Mage.png new file mode 100644 index 000000000..566b685d3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Priest 2.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Priest 2.png new file mode 100644 index 000000000..9697eb19b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Priest 2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Priest.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Priest.png new file mode 100644 index 000000000..cff0b4ace Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Priest.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Villager.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Villager.png new file mode 100644 index 000000000..b461a895a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Villager.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Warrior.png new file mode 100644 index 000000000..440bb7f78 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton.png new file mode 100644 index 000000000..f7260236c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/64-Textures/skeleton/Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/BlondDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/BlondDwarf.png index fd1f73e44..f96ac9abd 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/BlondDwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/BlondDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf.png index 5c0ab552f..05200e4cc 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf2.png b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf2.png index 56e5d27fa..ca7a85136 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf2.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/GingerDwarf2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/Simone.png b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/Simone.png index 78d1ef78f..b9cd2aaab 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/Simone.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarffemale/Simone.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/BeardedDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/BeardedDwarf.png index e3e07cde6..d8b5de625 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/BeardedDwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/BeardedDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Blacksmith.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Blacksmith.png index adb599f8d..2f320e365 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Blacksmith.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Blacksmith.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf.png index 02c94b40a..dec1e3c14 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfKing.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfKing.png index 57a57cfa9..910e472ad 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfKing.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfKing.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfStatue.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfStatue.png index 69fbd0598..5c7bccc42 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfStatue.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/DwarfStatue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Blacksmith.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Blacksmith.png index c0924cd68..995d5d26d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Blacksmith.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Blacksmith.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Keeper.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Keeper.png index 0e29e1f78..fd9492c3a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Keeper.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Keeper.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Leader.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Leader.png index 7f3608648..6fdd4601d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Leader.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Dwarf_Leader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/ElderlyDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/ElderlyDwarf.png index 84720a220..bb157f11e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/ElderlyDwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/ElderlyDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKing.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKing.png index 450c72f4a..38dd7d7f9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKing.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKing.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKnight.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKnight.png index 384bce3f8..69360428c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKnight.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/GingerKnight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Goblin.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Goblin.png index c18e91804..509265c96 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Goblin.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Goblin.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf.png index 0dd3d7ad9..1cd3a30ff 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf_2.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf_2.png index f2aeb600b..78f1bd67f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf_2.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/High_Class_Dwarf_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Hobbit.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Hobbit.png index 69e6c5c18..cbdb744d5 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Hobbit.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Hobbit.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Miner.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Miner.png index e4526af78..aee645042 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Miner.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Miner.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/MoustachedDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/MoustachedDwarf.png index d1899bc45..357582c93 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/MoustachedDwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/MoustachedDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/One_Eye_blind_Dwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/One_Eye_blind_Dwarf.png index 76c96f5d5..2c0c5eaca 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/One_Eye_blind_Dwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/One_Eye_blind_Dwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Simon.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Simon.png index f66fbe086..177f4cfa1 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Simon.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Simon.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/SomeDwarf.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/SomeDwarf.png index 9f21b02cd..6d9290352 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/SomeDwarf.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/SomeDwarf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Viking.png b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Viking.png index 7141fbe95..044912146 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Viking.png and b/src/main/resources/assets/customnpcs/textures/entity/dwarfmale/Viking.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/DarkElfFemale.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/DarkElfFemale.png index 7822b125c..30c226aa7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/DarkElfFemale.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/DarkElfFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfFemale.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfFemale.png index db4cd91f2..c7756e1cf 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfFemale.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfMage.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfMage.png index 2946c02ee..42626d7ca 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfMage.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfMage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueen.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueen.png index 9445ae60f..0aaca63b8 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueen.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueenFormal.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueenFormal.png index 5bc2b5004..90b0d4141 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueenFormal.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfQueenFormal.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldier.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldier.png index 8f3956a40..bc4be1753 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldier.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldier.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldierHelmet.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldierHelmet.png index 0798b2c7e..753c77916 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldierHelmet.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfSoldierHelmet.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfWarrior.png index e473869c7..0d7dae186 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/ElfWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elffemale/WoodElfFemale.png b/src/main/resources/assets/customnpcs/textures/entity/elffemale/WoodElfFemale.png index 6cb8ebd4f..f1831c691 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elffemale/WoodElfFemale.png and b/src/main/resources/assets/customnpcs/textures/entity/elffemale/WoodElfFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/BlondElf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/BlondElf.png index 61a8e7328..55fbee549 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/BlondElf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/BlondElf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf.png index b20da1c0a..e77a8d214 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf_Mage.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf_Mage.png index 69b6f8ac5..70153857b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf_Mage.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Blood_Elf_Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/DarkElfCitizen.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/DarkElfCitizen.png index e0610bce5..a5dcb34a4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/DarkElfCitizen.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/DarkElfCitizen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Knight.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Knight.png index f96303411..ece92c04d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Knight.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Librarian.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Librarian.png index 1e1619bf0..5c00615bb 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Librarian.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf Librarian.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf.png index ae20fa439..7cd538d8a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Dark_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfKnight.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfKnight.png index dc2638856..c23bcb0cf 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfKnight.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfKnight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfMale.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfMale.png index 11583722f..a46dab497 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfMale.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/ElfMale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Elf_Asassin_2.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Elf_Asassin_2.png index 3d64c3e56..3754b5a94 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Elf_Asassin_2.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Elf_Asassin_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Engineer_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Engineer_Elf.png index 2486d5cc7..aa5d50e09 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Engineer_Elf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Engineer_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/ForestElf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/ForestElf.png index 1c8d44e0c..f49aa3261 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/ForestElf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/ForestElf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/High_Class_Knight_Elf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/High_Class_Knight_Elf.png index 1fc0bd45b..ba93fe898 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/High_Class_Knight_Elf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/High_Class_Knight_Elf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Link.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Link.png index 647f981bc..4df09be8a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/Link.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/Link.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/elfmale/WoodElf.png b/src/main/resources/assets/customnpcs/textures/entity/elfmale/WoodElf.png index 0f3c8acf4..995032e16 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/elfmale/WoodElf.png and b/src/main/resources/assets/customnpcs/textures/entity/elfmale/WoodElf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/AlbinoChibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/AlbinoChibi.png index d24b15c1e..6c7c386cc 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/AlbinoChibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/AlbinoChibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/EnderGhost.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/EnderGhost.png index e182dd129..01856a704 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/EnderGhost.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/EnderGhost.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/FriendlyEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/FriendlyEnderchibi.png index bf5da0612..a1f15f87b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/FriendlyEnderchibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/FriendlyEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/IceEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/IceEnderchibi.png index c3db1c5be..8eb631e7d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/IceEnderchibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/IceEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MrEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MrEnderchibi.png index ed80357e0..8d6441962 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MrEnderchibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MrEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MsEnderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MsEnderchibi.png index afea44fdb..67d65456a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MsEnderchibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/MsEnderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/NetherChibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/NetherChibi.png index be310d0b2..4449fec8a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/NetherChibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/NetherChibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/Slenderchibi.png b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/Slenderchibi.png index 318971c30..292e89cdc 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderchibi/Slenderchibi.png and b/src/main/resources/assets/customnpcs/textures/entity/enderchibi/Slenderchibi.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderman/Apparation.png b/src/main/resources/assets/customnpcs/textures/entity/enderman/Apparation.png index 223207045..8ce3613f9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderman/Apparation.png and b/src/main/resources/assets/customnpcs/textures/entity/enderman/Apparation.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderman/Ender Mage.png b/src/main/resources/assets/customnpcs/textures/entity/enderman/Ender Mage.png index 23a56ea12..8d969f055 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderman/Ender Mage.png and b/src/main/resources/assets/customnpcs/textures/entity/enderman/Ender Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderman/Slenderman.png b/src/main/resources/assets/customnpcs/textures/entity/enderman/Slenderman.png index 3fc07a9de..60074ad47 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderman/Slenderman.png and b/src/main/resources/assets/customnpcs/textures/entity/enderman/Slenderman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/enderman/enderman.png b/src/main/resources/assets/customnpcs/textures/entity/enderman/enderman.png index 045ee618a..47e26bd12 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/enderman/enderman.png and b/src/main/resources/assets/customnpcs/textures/entity/enderman/enderman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/BunnyFemale.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/BunnyFemale.png index b907914d6..77e5f67d4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/BunnyFemale.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/BunnyFemale.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Female.png index b4e9269e3..2c27828d6 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Hunter Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Hunter Female.png index 2986e8b53..987c395ab 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Hunter Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Hunter Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Straw Hat Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Straw Hat Female.png index aeb3c1160..b84ab7bb2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Straw Hat Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Straw Hat Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Trader Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Trader Female.png index 7b5b8717e..8405e65ad 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Trader Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Trader Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Warrior Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Warrior Female.png index ca53ff52a..c254de6bc 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Warrior Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Leopard Warrior Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Hunter.png index c12d1f19e..947536540 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Hunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Straw Hat.png index e1791a6bc..1cd2b3f28 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Straw Hat.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Trader.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Trader.png index 863dbff56..56496dd99 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Trader.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Warrior.png index f574d65f7..38d04f96f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Warrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female.png index cb0081b3c..7032cdd4f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Snow Leopard Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Hunter.png index 8300d9ad2..54dc52113 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Hunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Straw Hat.png index cbae3a989..427333be4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Straw Hat.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Trader.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Trader.png index bf5ac8d63..ddda4e013 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Trader.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Warrior.png index 279ebcae9..922a101fd 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Warrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female.png index 0c0696f9e..c2a400bed 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/Tiger Female.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlack.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlack.png index e2d3099d0..f5e825bff 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlack.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlack.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackSteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackSteampunk.png index 89268bd6e..1c9adbcb2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackSteampunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackSteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackTrader.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackTrader.png index 6a5817268..cb9bdaf4a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackTrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackWarrior.png index 74ca05e67..5ddcac7aa 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBlackWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrown.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrown.png index 0ab5acaf7..c816a6d8c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrown.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownHunter.png index 4ae589e36..aa099ff27 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownSteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownSteampunk.png index 1526657c1..7f03fb468 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownSteampunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownSteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownTrader.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownTrader.png index c507f8d8f..fc4f69687 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownTrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownWarrior.png index d9fc08a0f..505c54158 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfBrownWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGrey.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGrey.png index 39d68c0d8..ec1412c0d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGrey.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyHunter.png index 3af9dbbdb..0d055f12c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreySteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreySteampunk.png index 49d26ed22..b52a5b95d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreySteampunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreySteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyTrader.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyTrader.png index a08f0bf70..66a25d24a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyTrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyWarrior.png index 48c9cb823..fcb17b72b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGrey.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGrey.png index 8a514cee1..9d11d55f2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGrey.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyHunter.png index 478ca0dd4..70aa4eab7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreySteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreySteampunk.png index 5e5d6b2cd..c6179a949 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreySteampunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreySteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyTrader.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyTrader.png index 8a692e8d8..037ca7887 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyTrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyWarrior.png index 9bb3fa0a1..ea60e11b4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/WolfLightGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/angelblonde.png b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/angelblonde.png index 9a6af559f..a4e99aad4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furryfemale/angelblonde.png and b/src/main/resources/assets/customnpcs/textures/entity/furryfemale/angelblonde.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Bunny.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Bunny.png index 9a3f29e9b..f010da047 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Bunny.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Bunny.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/DragonGreen.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/DragonGreen.png index ffb449947..95438ee91 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/DragonGreen.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/DragonGreen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Hunter.png index d12ae55f0..80852533e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Hunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Straw Hat.png index 9d2f3277a..1277e96e1 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Straw Hat.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Trader.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Trader.png index 343c0ebcf..e055f2bb9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Trader.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Warrior.png index 9b4d9f1f3..4cf41644c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Warrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard.png index f7caf8ad1..ab72f04f4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Leopard.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Reaper.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Reaper.png index bb60b30f2..287fdd893 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Reaper.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Reaper.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Hunter.png index 18f127c35..b8af42d73 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Hunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Straw Hat.png index dad62fc37..871ccbf26 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Straw Hat.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Trader.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Trader.png index e88d2ad41..938ba9255 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Trader.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Warrior.png index 6a9f5c36e..d844130a8 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Warrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Snow Leopard Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/SnowLeopard.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/SnowLeopard.png index e70742fd0..1b9552c3d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/SnowLeopard.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/SnowLeopard.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Hunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Hunter.png index 03a7961c4..abad85cca 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Hunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Hunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Straw Hat.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Straw Hat.png index b51742643..96bb3af3a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Straw Hat.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Straw Hat.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Trader.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Trader.png index 74f410cc4..dbed8ed56 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Trader.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Trader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Warrior.png index 69b64c571..47def6ed7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Warrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger.png index efa51daf7..1e5f6f89f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/Tiger.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlack.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlack.png index 147a6be4e..970911dce 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlack.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlack.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackHunter.png index 568f24804..6d1a9a541 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackSteamPunk.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackSteamPunk.png index 60d83656c..9f617fef3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackSteamPunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackSteamPunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackTrader.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackTrader.png index dee896344..2b54639ca 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackTrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackWarrior.png index de633b824..25a3155d6 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBlackWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrown.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrown.png index 894441439..dd82673aa 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrown.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownHunter.png index 2f78a041a..e59b76397 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownSteamPunk.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownSteamPunk.png index 1526657c1..0a6ff3b9c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownSteamPunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownSteamPunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownTrader.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownTrader.png index 18558db53..27cb7710e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownTrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownTrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownWarrior.png index 12bc2b2e8..dafcf61e4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfBrownWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGrey.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGrey.png index b04ad7ce3..6495ed892 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGrey.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyHunter.png index e04b6abe9..86a70688b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreySteampunk.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreySteampunk.png index 994ec24be..1affa2b0b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreySteampunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreySteampunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyTraderWolf.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyTraderWolf.png index 4464e0495..beec704a4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyTraderWolf.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyTraderWolf.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyWarrior.png index e0b5aec02..ff2588539 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGrey.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGrey.png index a0b6678cc..5eee48ded 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGrey.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyHunter.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyHunter.png index 80ab8af56..944ef84f3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyHunter.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyHunter.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyModelSteamPunk.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyModelSteamPunk.png index 5e5d6b2cd..2e98001d3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyModelSteamPunk.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyModelSteamPunk.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyWarrior.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyWarrior.png index 3c391a1f3..65e99b50a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyWarrior.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyWarrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyrader.png b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyrader.png index 407b2a857..b41c88158 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyrader.png and b/src/main/resources/assets/customnpcs/textures/entity/furrymale/WolfLightGreyrader.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/BodyguardStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/BodyguardStephanie.png index dfbe8f702..f1cca1173 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/BodyguardStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/BodyguardStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/CamoRadioStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/CamoRadioStephanie.png index 9e781bb60..4b39fb25d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/CamoRadioStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/CamoRadioStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/ChefStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/ChefStephanie.png index 19631b48e..30259deac 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/ChefStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/ChefStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/DoctorStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/DoctorStephanie.png index 6b05bede9..c28dfa152 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/DoctorStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/DoctorStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MageStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MageStephanie.png index f96a96269..87e72a256 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MageStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MageStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MailmanStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MailmanStephanie.png index 671e69dfd..14574ee69 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MailmanStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MailmanStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/McDStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/McDStephanie.png index c148b70a3..5a73d5bdd 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/McDStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/McDStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MinerStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MinerStephanie.png index 56d746978..9c868284a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MinerStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/MinerStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/PinstripesStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/PinstripesStephanie.png index 1aea63c0e..b4c329f6d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/PinstripesStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/PinstripesStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RaggedyBardStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RaggedyBardStephanie.png index 5a80a83db..8088a8ed1 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RaggedyBardStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RaggedyBardStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBlackStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBlackStephanie.png index c673b6f76..8ccaee042 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBlackStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBlackStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBrownStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBrownStephanie.png index 7b3a0ebcd..6542d1b95 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBrownStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesBrownStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesWhiteShepanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesWhiteShepanie.png index 99691024c..acf3cc1cb 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesWhiteShepanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/RobesWhiteShepanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Roseta.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Roseta.png index 153394e91..91bbe7f4f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Roseta.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Roseta.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/SteampunkStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/SteampunkStephanie.png index 58bf1e43e..7093ed8b4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/SteampunkStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/SteampunkStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Stephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Stephanie.png index 9aaf8142e..3109e73f3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Stephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/Stephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TownsmanStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TownsmanStephanie.png index ce46d0ea6..0e442fe19 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TownsmanStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TownsmanStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TraderStepahnie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TraderStepahnie.png index 1dd123885..c4af7e962 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TraderStepahnie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TraderStepahnie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeElderWoman.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeElderWoman.png index ec40ff890..845242971 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeElderWoman.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeElderWoman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeGirl.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeGirl.png index ab7ffba22..ea4a6a3c8 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeGirl.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeGirl.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman1.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman1.png index 4f4023ed3..0d77daf11 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman1.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman2.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman2.png index 3afc8defc..b6a5c46a7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman2.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman3.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman3.png index 774e45c0c..d42c95e68 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman3.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/TribeWoman3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WaitressStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WaitressStephanie.png index 5197fe487..f59b629c5 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WaitressStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WaitressStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WizardStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WizardStephanie.png index 66fdeec96..3f4ca0d86 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WizardStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WizardStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WoundedStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WoundedStephanie.png index ed26d785a..8900615b6 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WoundedStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/humanfemale/WoundedStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/ArcticSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/ArcticSteve.png index 3037d3733..c0dddd283 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/ArcticSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/ArcticSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/BodyguardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/BodyguardSteve.png index b247d44eb..f80cd3a1e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/BodyguardSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/BodyguardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoRadioSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoRadioSteve.png index b5b6ef5f5..c9079ee20 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoRadioSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoRadioSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSpecOpsSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSpecOpsSteve.png index 32473d8f8..0e8117982 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSpecOpsSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSpecOpsSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSteve.png index 2b7524cc2..eed2f5bf7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CamoSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CasualSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CasualSteve.png index 3c41fea87..ffc236ccf 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/CasualSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/CasualSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/ChefSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/ChefSteve.png index 3ee8f4424..b1eb1fe31 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/ChefSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/ChefSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/DoctorSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/DoctorSteve.png index d71019baa..7c50dc01f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/DoctorSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/DoctorSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/ElderlySteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/ElderlySteve.png index f0827aeb2..fadd29edb 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/ElderlySteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/ElderlySteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/Evil_Gold_Knight.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/Evil_Gold_Knight.png index 4127985ec..a72086158 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/Evil_Gold_Knight.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/Evil_Gold_Knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/FireSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/FireSteve.png index e6185dda7..e07110d65 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/FireSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/FireSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/GangsterSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/GangsterSteve.png index 2f276a391..78aa1478e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/GangsterSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/GangsterSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve.png index 2b1b26f1b..b7217b678 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve2.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve2.png index 306f17336..635402610 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve2.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/GuardSteve2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/King.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/King.png index bf462172a..82f16a61a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/King.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/KingSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/KingSteve.png index ab658e090..d5d438ed7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/KingSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/KingSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/KnightSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/KnightSteve.png index 26b59bef0..3104cd5d7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/KnightSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/KnightSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/KungFuSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/KungFuSteve.png index 50f36495b..012dcd4fa 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/KungFuSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/KungFuSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/LondonGuard.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/LondonGuard.png index b79f6b824..186831bfa 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/LondonGuard.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/LondonGuard.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MageSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MageSteve.png index b33c127bd..e8c407dea 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MageSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MageSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MailmanSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MailmanSteve.png index 946ab9193..7b00da055 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MailmanSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MailmanSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/McDSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/McDSteve.png index 5204a7986..eef5ec907 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/McDSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/McDSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve 2.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve 2.png index 5a8d19856..6959abc75 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve 2.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve 2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve.png index e79ba35d8..883e07146 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MercenarySteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MinerSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MinerSteve.png index c7b1e5977..4038c07b2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/MinerSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/MinerSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/PinstripesSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/PinstripesSteve.png index 9e4d19eb5..97e95c381 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/PinstripesSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/PinstripesSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/PriestSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/PriestSteve.png index 1115ebbc7..164767795 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/PriestSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/PriestSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/PrisonerSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/PrisonerSteve.png index 0d6da2ba4..7744c4cc5 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/PrisonerSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/PrisonerSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RaggedyBardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RaggedyBardSteve.png index e0ab972e2..db38b7b7d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RaggedyBardSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RaggedyBardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBlackSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBlackSteve.png index 3cc60bb1d..2d5b42bd4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBlackSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBlackSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBrownSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBrownSteve.png index 8ab214c4c..edfa168a3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBrownSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesBrownSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesWhiteSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesWhiteSteve.png index 0dc57701a..628e592d3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesWhiteSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/RobesWhiteSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/SteampunkSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/SteampunkSteve.png index 5dd9bd4d1..740d66a0c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/SteampunkSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/SteampunkSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/Steve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/Steve.png index bb985ec38..e2c5c44af 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/Steve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/Steve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TownsmanSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TownsmanSteve.png index 95f16e5e6..72fd0ea20 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TownsmanSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TownsmanSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TraderSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TraderSteve.png index c3dd201dd..855ff0044 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TraderSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TraderSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeBoy.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeBoy.png index 9447ac1de..1b720b4da 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeBoy.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeBoy.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeElder.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeElder.png index c20c63aa8..f67566678 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeElder.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeElder.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter1.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter1.png index ca81e051e..19717e31e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter1.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter2.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter2.png index 1c03f6558..eef7eecb9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter2.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeHunter2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeKimba.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeKimba.png index 5b44dc316..d2ee10eb7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeKimba.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeKimba.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeMan.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeMan.png index 9fa3a1da9..3b0383cea 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeMan.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TribeMan.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TuxedoSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TuxedoSteve.png index 7c57540f5..5cb505efb 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/TuxedoSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/TuxedoSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerOldSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerOldSteve.png index 3ad931aec..d85e14583 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerOldSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerOldSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve.png index 4ea17b389..0502165fb 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve2.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve2.png index c94c15949..d993c6d62 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve2.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/VillagerSteve2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/WaiterSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/WaiterSteve.png index 58f782bb0..bed90d33f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/WaiterSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/WaiterSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_Knight_2.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_Knight_2.png index d5b1c20a6..99e5ec285 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_Knight_2.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_Knight_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_knight.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_knight.png index 16ed61a8e..2c6de0c25 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_knight.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/White_knight.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/WizardSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/WizardSteve.png index 3480c2ab5..ac9c0ec13 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/WizardSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/WizardSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/WoundedSteve.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/WoundedSteve.png index 1b1b16902..707a19dfc 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/humanmale/WoundedSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/WoundedSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/Herobrine.png b/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/Herobrine.png index 0123cdd7a..e897afa05 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/Herobrine.png and b/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/Herobrine.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/ZombieStephanie.png b/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/ZombieStephanie.png index b1626a262..3493506a8 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/ZombieStephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/monsterfemale/ZombieStephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Classy_Zombie.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Classy_Zombie.png index 729f340b6..0fbfb1f24 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Classy_Zombie.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Classy_Zombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Death.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Death.png index 1ddb9e3bd..9b6fe96e2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Death.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Death.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/DemonSalesman.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/DemonSalesman.png index b215142b8..3e3de8171 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/DemonSalesman.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/DemonSalesman.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/DesertZombie.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/DesertZombie.png index 963709b6f..a14d251db 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/DesertZombie.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/DesertZombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/DisfiguredZombie.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/DisfiguredZombie.png index 609bd07d7..203f0fb81 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/DisfiguredZombie.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/DisfiguredZombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/EnderMage.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/EnderMage.png index e575905d5..496f42958 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/EnderMage.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/EnderMage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Flesh.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Flesh.png index 43e5e8f11..ed41a634c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Flesh.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Flesh.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/FrozenCorpse.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/FrozenCorpse.png index 03e77c6d4..46141743c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/FrozenCorpse.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/FrozenCorpse.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ghost King.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ghost King.png index ca66a9ee9..b4e2a8dd2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ghost King.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ghost King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostGrey.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostGrey.png index 701a4015f..f17e72c87 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostGrey.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostGrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostRed.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostRed.png index 4a0eed901..91aedf855 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostRed.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostRed.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostYellow.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostYellow.png index 1c32d822b..fdfd0acf6 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostYellow.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/GhostYellow.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Herobrine.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Herobrine.png index 2116c854c..db9aee8e3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Herobrine.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Herobrine.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ogre.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ogre.png index c965545e6..e195b0b63 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ogre.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Ogre.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/SandMonster.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/SandMonster.png index e773d76ef..34a0b7ba3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/SandMonster.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/SandMonster.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Securitron.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Securitron.png index 2df68421f..d5869671a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Securitron.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Securitron.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Skull_Mage.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Skull_Mage.png index d4d90020f..0e6ebb5d1 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Skull_Mage.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Skull_Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/StoneGolem.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/StoneGolem.png index 1bdd81335..99449aad9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/StoneGolem.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/StoneGolem.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/TecZombie.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/TecZombie.png index c51fac9f2..061d50b2a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/TecZombie.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/TecZombie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead King.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead King.png index ddf82eafc..d95a0766f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead King.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead_Monster.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead_Monster.png index e0c3dc1c6..6adbfebb7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead_Monster.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/Undead_Monster.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieBloody.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieBloody.png index e9be80a18..8e284a257 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieBloody.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieBloody.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieMage.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieMage.png index fd7a1b062..7b3fd0a43 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieMage.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieMage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieSteve.png b/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieSteve.png index 31d12461a..5f39fd802 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieSteve.png and b/src/main/resources/assets/customnpcs/textures/entity/monstermale/ZombieSteve.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Claire.png b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Claire.png index 9ef1c818e..f90339c79 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Claire.png and b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Claire.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Creepsnake.png b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Creepsnake.png index bcfc52769..f14395775 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Creepsnake.png and b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Creepsnake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Ender Snake.png b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Ender Snake.png index 4169c2717..26478be1b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Ender Snake.png and b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Ender Snake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie Pink.png b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie Pink.png index 12e4f26df..d6d66e18d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie Pink.png and b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie Pink.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie.png b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie.png index a92ab6401..74d06cf72 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie.png and b/src/main/resources/assets/customnpcs/textures/entity/nagafemale/Naga Stephanie.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Cobra.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Cobra.png index 567f3e3f9..bf1a2cf53 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Cobra.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Cobra.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Creepersneeper.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Creepersneeper.png index bd148ed6c..8009d1855 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Creepersneeper.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Creepersneeper.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/EnderSnake.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/EnderSnake.png index d3e54dc80..629985be8 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/EnderSnake.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/EnderSnake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Black.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Black.png index c19c35bd7..39b35be7d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Black.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Black.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Blue.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Blue.png index 162c150a8..f581bb7f9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Blue.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Blue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Gray.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Gray.png index 83a8ab6a6..d5065c699 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Gray.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Gray.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Green.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Green.png index 9289531f2..4053d6559 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Green.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Green.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Red.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Red.png index 5bcc77888..edbdaf126 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Red.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Red.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 1.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 1.png index e9622eda3..6c66bbd56 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 1.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 2.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 2.png index 2f4f3c76e..f9eec6d7b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 2.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 3.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 3.png index 09620a45f..d059f8ea3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 3.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 4.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 4.png index bf097cb51..d70b8867f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 4.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 4.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 5.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 5.png index e9529c33e..3f2965241 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 5.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 5.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 6.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 6.png index 5e25c6efc..d802cabda 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 6.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 6.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 7.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 7.png index a5502ea69..cfa4d6ba0 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 7.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Steve 7.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga White.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga White.png index d93a73bf7..e6ddd9ddf 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga White.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga White.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Yellow.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Yellow.png index 9d760e9e2..bab96a8bb 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Yellow.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Naga Yellow.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Snake.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Snake.png index 50ff48fae..a7760e446 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/Snake.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/Snake.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/nagamale/finsample.png b/src/main/resources/assets/customnpcs/textures/entity/nagamale/finsample.png index 50ff48fae..cc330ef81 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/nagamale/finsample.png and b/src/main/resources/assets/customnpcs/textures/entity/nagamale/finsample.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc1.png index 1f7f4a965..2de62b093 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc1.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc2.png index d41ea62c4..cbeb3c686 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc3.png index 228896464..92bf31355 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc3.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GenericFemaleOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc1.png index e71c7b0bc..91aa56956 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc1.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc2.png index acb39e34a..55d982fe7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/GuardFemaleOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/LeatherArmoredFemaleOrc.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/LeatherArmoredFemaleOrc.png index de753de1a..fd6a940fc 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/LeatherArmoredFemaleOrc.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/LeatherArmoredFemaleOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc1.png index 7789a307c..82bfd54ef 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc1.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc2.png index b18f071cf..16401d8a9 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc3.png index bfd06ad05..0bc3f7596 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc3.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/MercenaryFemaleOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/StrandedFemaleOrc.png b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/StrandedFemaleOrc.png index 8c82d2477..fab8d9d55 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcfemale/StrandedFemaleOrc.png and b/src/main/resources/assets/customnpcs/textures/entity/orcfemale/StrandedFemaleOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc1.png index 74f45e137..6af6698ee 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc1.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc2.png index 940f80724..8e7157006 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc3.png index 3e19f92b4..6a094b02d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc3.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GenericOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant.png index 7f490ac1d..f00589d6e 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_2.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_2.png index b374251e0..9cc61a881 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_3.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_3.png index fde3158b6..294ba15c5 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_3.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/Giant_3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc1.png index 9d57de5ad..ed4167ff0 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc1.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc2.png index a4af5a3d2..fe4094476 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/GuardOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/LeatherArmoredOrc.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/LeatherArmoredOrc.png index 42e6e18b4..463eff7be 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/LeatherArmoredOrc.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/LeatherArmoredOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc1.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc1.png index 637e5789e..7b5e9259c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc1.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc1.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc2.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc2.png index c4815c2ab..2cc858c84 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc2.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc3.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc3.png index 83831b748..304ba13f7 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc3.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/MercenaryOrc3.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/orcmale/StrandedOrc.png b/src/main/resources/assets/customnpcs/textures/entity/orcmale/StrandedOrc.png index 88ca0085a..0b9b3895b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/orcmale/StrandedOrc.png and b/src/main/resources/assets/customnpcs/textures/entity/orcmale/StrandedOrc.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Ancient Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Ancient Skeleton.png index 146fa50c4..0501a78ef 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Ancient Skeleton.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Ancient Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Bloody Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Bloody Skeleton.png index 41d6783e8..0a9ee2e5d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Bloody Skeleton.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Bloody Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Golden Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Golden Skeleton.png index 11a5436ab..5c71b89b1 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Golden Skeleton.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Golden Skeleton.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Archer.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Archer.png index 95df9777b..0fbfc46b4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Archer.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Archer.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton King.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton King.png index 7bbc10eef..8546def8c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton King.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Mage.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Mage.png index 566b685d3..0344e603c 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Mage.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Mage.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest 2.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest 2.png index 9697eb19b..173a3e17a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest 2.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest 2.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest.png index cff0b4ace..f726809e6 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Priest.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Villager.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Villager.png index b461a895a..e08d1d291 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Villager.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Villager.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Warrior.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Warrior.png index 440bb7f78..054c84d8f 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Warrior.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton Warrior.png differ diff --git a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton.png b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton.png index f7260236c..9d223394b 100644 Binary files a/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton.png and b/src/main/resources/assets/customnpcs/textures/entity/skeleton/Skeleton.png differ