diff --git a/build.gradle b/build.gradle index 00d0fbc84..3558c2faa 100644 --- a/build.gradle +++ b/build.gradle @@ -17,7 +17,7 @@ buildscript { apply plugin: 'forge' -version = "1.5.3" +version = "1.5.4" group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "CustomNPC-Plus" @@ -29,27 +29,12 @@ minecraft { sourceCompatibility = 1.8 targetCompatibility = 1.8 -configurations { - shade - compile.extendsFrom shade -} - -// List of all supported OS for zstd compression (This is include only for anyone which is not using the default compression) -def supportedOS = [ - "linux_amd64", - "linux_i386", - "win_amd64", - "win_x86", - "darwin_x86_64", - "darwin_aarch64" -] - dependencies { // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" //compile "some.group:artifact:version" - + // real examples //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env @@ -57,44 +42,26 @@ dependencies { // for more info... // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html -// shade 'com.github.luben:zstd-jni:1.5.2-2' - Remove almost implementations of zstd - - for (os in supportedOS) { - shade ("com.github.luben:zstd-jni:1.5.2-2:${os}") - } - } processResources -{ - // this will ensure that this task is redone when the versions change. - inputs.property "version", project.version - inputs.property "mcversion", project.minecraft.version + { + // this will ensure that this task is redone when the versions change. + inputs.property "version", project.version + inputs.property "mcversion", project.minecraft.version - // replace stuff in mcmod.info, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'mcmod.info' - - // replace version and mcversion - expand 'version':project.version, 'mcversion':project.minecraft.version - } - - // copy everything else, thats not the mcmod.info - from(sourceSets.main.resources.srcDirs) { - exclude 'mcmod.info' - } -} + // replace stuff in mcmod.info, nothing else + from(sourceSets.main.resources.srcDirs) { + include 'mcmod.info' -tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' -} + // replace version and mcversion + expand 'version':project.version, 'mcversion':project.minecraft.version + } -jar { - configurations.shade.each { dep -> - from(project.zipTree(dep)) { - exclude 'META-INF', 'META-INF/**' + // copy everything else, thats not the mcmod.info + from(sourceSets.main.resources.srcDirs) { + exclude 'mcmod.info' + } } - } -} -sourceSets {main { output.resourcesDir = output.classesDir }} +sourceSets {main { output.resourcesDir = output.classesDir }} \ No newline at end of file diff --git a/src/main/java/foxz/command/CmdCompressor.java b/src/main/java/foxz/command/CmdCompressor.java deleted file mode 100644 index eb3cc3bcd..000000000 --- a/src/main/java/foxz/command/CmdCompressor.java +++ /dev/null @@ -1,187 +0,0 @@ -package foxz.command; - -import foxz.commandhelper.ChMcLogger; -import foxz.commandhelper.annotations.Command; -import foxz.commandhelper.annotations.SubCommand; -import foxz.commandhelper.permissions.OpOnly; -import luizotavio.compressor.ZstdCompressor; -import net.minecraft.nbt.NBTTagCompound; -import noppes.npcs.controllers.PlayerDataController; -import noppes.npcs.util.NBTJsonUtil; - -import java.io.File; -import java.io.RandomAccessFile; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import static luizotavio.compressor.executor.IOExecutor.IO_EXECUTOR; - -@Command( - name = "compressor", - desc = "Convert a file to a compressed file or back to json", - usage = "update [file|all] [json|zstd]" -) -public class CmdCompressor extends ChMcLogger { - - public CmdCompressor(Object sender) { - super(sender); - } - - @SubCommand( - name = "update", - desc = "Convert all files in the current directory to compressed files", - permissions = {OpOnly.class} - ) - public boolean onConvert(String[] args) throws ExecutionException, InterruptedException, TimeoutException { - if (args.length == 0) { - sendmessage("Usage: /noppes compressor update [|all] [json|zstd]"); - return true; - } - if (args.length == 1) { - sendmessage("Please specify the type of compression to use"); - return true; - } - - String type; - - if (args[1].equalsIgnoreCase("json")) { - type = "json"; - } else if (args[1].equalsIgnoreCase("zstd")) { - type = "zstd"; - } else { - sendmessage("Please specify the type of compression to use"); - return true; - } - - File directory = PlayerDataController.instance.getSaveDir(); - - if (args[0].equalsIgnoreCase("all")) { - sendmessage("Converting all files in the current directory to " + type + " files"); - - for (File file : directory.listFiles()) { - if (file.isDirectory()) { - continue; - } - - if (file.getName().endsWith(".json") && type.equalsIgnoreCase("zstd")) { - submit(() -> { - try { - NBTTagCompound compound = NBTJsonUtil.LoadFile(file); - - File compressed = new File(file.getParentFile(), file.getName().replace(".json", ".zstd")); - - byte[] bytes = ZstdCompressor.writeCompound(compound); - - Files.write( - compressed.toPath(), - bytes, - StandardOpenOption.CREATE, - StandardOpenOption.WRITE - ); - } catch (Exception exception) { - exception.printStackTrace(); - } - }); - } - - if (file.getName().endsWith(".zstd") && type.equalsIgnoreCase("json")) { - submit(() -> { - try { - NBTTagCompound compound = ZstdCompressor.readCompressCompound( - new RandomAccessFile(file, "r") - ); - - File compressed = new File(file.getParentFile(), file.getName().replace(".zstd", ".json")); - - NBTJsonUtil.SaveFile(compressed, compound); - } catch (Exception e) { - e.printStackTrace(); - } - }); - } - } - - sendmessage("Done! All files were converted."); - } else { - File file = new File(directory, args[0] + ".json"); - - if (!file.exists()) { - file = new File(directory, args[0] + ".zstd"); - } - - if (!file.exists()) { - sendmessage("File not found"); - return true; - } - - File finalFile = file; - - if (file.getName().endsWith(".json")) { - if (type.equalsIgnoreCase("json")) { - sendmessage("File is already in json format"); - return true; - } - - submit(() -> { - try { - NBTTagCompound compound = NBTJsonUtil.LoadFile(finalFile); - - File compressed = new File(finalFile.getParentFile(), finalFile.getName().replace(".json", ".zstd")); - - byte[] bytes = ZstdCompressor.writeCompound(compound); - - Files.write( - compressed.toPath(), - bytes, - StandardOpenOption.CREATE, - StandardOpenOption.WRITE - ); - - sendmessage("File compressed to zstd!"); - } catch (Exception exception) { - exception.printStackTrace(); - } - }); - } - - if (file.getName().endsWith(".zstd")) { - if (type.equalsIgnoreCase("zstd")) { - sendmessage("File is already in zstd format"); - return true; - } - - submit(() -> { - try { - NBTTagCompound compound = ZstdCompressor.readCompressCompound( - new RandomAccessFile(finalFile, "r") - ); - - if (compound == null) { - return; - } - - File compressed = new File(finalFile.getParentFile(), finalFile.getName().replace(".zstd", ".json")); - - NBTJsonUtil.SaveFile(compressed, compound); - - sendmessage("File converted to json!"); - } catch (Exception e) { - e.printStackTrace(); - } - }); - } - } - - return true; - } - - private void submit(Runnable runnable) throws ExecutionException, InterruptedException, TimeoutException { - CompletableFuture.runAsync(runnable, IO_EXECUTOR).get(5, TimeUnit.MINUTES); - } - - -} diff --git a/src/main/java/foxz/command/CmdNoppes.java b/src/main/java/foxz/command/CmdNoppes.java index 7ba24b61e..9e95fe665 100644 --- a/src/main/java/foxz/command/CmdNoppes.java +++ b/src/main/java/foxz/command/CmdNoppes.java @@ -37,7 +37,7 @@ import foxz.commandhelper.permissions.PlayerOnly; @Command( name = "noppes", desc = "noppes root command", - sub = {CmdClone.class, CmdScript.class, CmdQuest.class, CmdDialog.class, CmdConfig.class, CmdCompressor.class} + sub = {CmdClone.class, CmdScript.class, CmdQuest.class, CmdDialog.class, CmdConfig.class} ) public class CmdNoppes extends ChMcLogger { diff --git a/src/main/java/luizotavio/compressor/ZstdCompressor.java b/src/main/java/luizotavio/compressor/ZstdCompressor.java deleted file mode 100644 index eb750d239..000000000 --- a/src/main/java/luizotavio/compressor/ZstdCompressor.java +++ /dev/null @@ -1,61 +0,0 @@ -package luizotavio.compressor; - -import com.github.luben.zstd.Zstd; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.nbt.NBTSizeTracker; -import net.minecraft.nbt.NBTTagCompound; - -import java.io.*; - -public class ZstdCompressor { - - public static byte[] readCompressed(DataInput inputStream) throws IOException { - int compressedLength = inputStream.readInt(); - int uncompressedLength = inputStream.readInt(); - - if (compressedLength < 0 || uncompressedLength < 0) { - throw new IllegalArgumentException("Invalid length"); - } - - byte[] compressed = new byte[compressedLength]; - - inputStream.readFully(compressed); - - return Zstd.decompress(compressed, uncompressedLength); - } - - public static NBTTagCompound readCompressCompound(DataInput inputStream) throws IOException { - NBTTagCompound compound; - - byte[] compressed = readCompressed(inputStream); - - try (DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(compressed))) { - compound = CompressedStreamTools.func_152456_a(dataInputStream, NBTSizeTracker.field_152451_a); - } - - return compound; - } - - public static byte[] writeCompound(NBTTagCompound compound) throws IOException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(), - copy = new ByteArrayOutputStream(); - - try (DataOutputStream dataOutputStream = new DataOutputStream(outputStream)) { - CompressedStreamTools.write(compound, dataOutputStream); - } - - byte[] uncompressed = outputStream.toByteArray(); - - byte[] compress = Zstd.compress(uncompressed); - - try (DataOutputStream dataOutputStream = new DataOutputStream(copy)) { - dataOutputStream.writeInt(compress.length); - dataOutputStream.writeInt(uncompressed.length); - - dataOutputStream.write(compress); - - return copy.toByteArray(); - } - } - -} diff --git a/src/main/java/luizotavio/compressor/executor/IOExecutor.java b/src/main/java/luizotavio/compressor/executor/IOExecutor.java deleted file mode 100644 index 48e1493cb..000000000 --- a/src/main/java/luizotavio/compressor/executor/IOExecutor.java +++ /dev/null @@ -1,16 +0,0 @@ -package luizotavio.compressor.executor; - -import java.util.concurrent.ExecutorService; - -public class IOExecutor { - - /** - * Please, do not change this value unless you know what you are doing. - * This value is used to define the number of threads that will be used to - * compress the files. - * - * If you want to change this value, please, do it with care. - */ - public static ExecutorService IO_EXECUTOR; - -} diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index be9a85cea..413ca8b3f 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -10,7 +10,6 @@ import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.EntityRegistry; import foxz.command.CommandNoppes; -import luizotavio.compressor.executor.IOExecutor; import net.minecraft.block.Block; import net.minecraft.block.BlockIce; import net.minecraft.block.BlockLeavesBase; @@ -31,9 +30,8 @@ import noppes.npcs.entity.old.*; import noppes.npcs.scripted.wrapper.WrapperNpcAPI; import java.io.File; import java.util.Set; -import java.util.concurrent.Executors; -@Mod(modid = "customnpcs", name = "CustomNpcs", version = "1.5.3") +@Mod(modid = "customnpcs", name = "CustomNpcs", version = "1.5.4") public class CustomNpcs { @ConfigProp(info = "Disable Chat Bubbles") @@ -41,12 +39,6 @@ public class CustomNpcs { private static int NewEntityStartId = 0; - @ConfigProp(info = "*BACKUP BEFORE CHANGING* File Type used with PlayerData. Converting files may reduce lag. To convert existing files: /noppes compressor update [|all] [json|zstd]") - public static String CompressorType = "json"; - - @ConfigProp(info = "The size of IO executors used for compression and decompression. This is the number of threads used for compression and decompression. If you are experiencing issues with the server lagging/crashing, try changing this to a higher number.") - public static int CompressorThreads = 2; - @ConfigProp(info = "Enables/Disables ALL scripting. You can still see and write code in the scripter, but these scripts won't run. True by default") public static boolean ScriptingEnabled = true; @@ -217,13 +209,6 @@ public class CustomNpcs { registerNpc(EntityNPCGolem.class, "npcGolem"); registerNpc(EntityCustomNpc.class, "CustomNpc"); - IOExecutor.IO_EXECUTOR = Executors.newFixedThreadPool( - CompressorThreads, - new ThreadFactoryBuilder() - .setNameFormat("CustomNpcs-IO-%d") - .build() - ); - registerNewEntity(EntityChairMount.class, "CustomNpcChairMount", 64, 10, false); registerNewEntity(EntityProjectile.class, "throwableitem", 64, 3, true); registerNewEntity(EntityMagicProjectile.class, "magicprojectile", 64, 3, true); diff --git a/src/main/java/noppes/npcs/VersionCompatibility.java b/src/main/java/noppes/npcs/VersionCompatibility.java index 9891c6479..90bb2479d 100644 --- a/src/main/java/noppes/npcs/VersionCompatibility.java +++ b/src/main/java/noppes/npcs/VersionCompatibility.java @@ -12,11 +12,22 @@ import noppes.npcs.controllers.Lines; import noppes.npcs.entity.EntityNPCInterface; public class VersionCompatibility { - public static int ModRev = 17; + public static int ModRev = 18; public static void CheckNpcCompatibility(EntityNPCInterface npc, NBTTagCompound compound){ if(npc.npcVersion == ModRev) return; + if(npc.npcVersion < 18){ + + // Fix 64-Texture (Reorganization) + + // Fix CloakTexture (Reorganization) + String cloakTexture = compound.getString("CloakTexture"); + cloakTexture = cloakTexture.replace("/cloak/Daybreak/", "/cloak/Guilds/Daybreak/"); + cloakTexture = cloakTexture.replace("/cloak/Created/", "/cloak/Extras/"); + cloakTexture = cloakTexture.replace("/cloak/Color Capes/", "/cloak/Color/"); + compound.setString("CloakTexture", cloakTexture); + } if(npc.npcVersion < 17){ // Fix DialogDarkenScreen if(compound.hasKey("DialogDarkenScreen")){ diff --git a/src/main/java/noppes/npcs/client/model/ModelMPM.java b/src/main/java/noppes/npcs/client/model/ModelMPM.java index 04eba7bc2..a4d158aa0 100644 --- a/src/main/java/noppes/npcs/client/model/ModelMPM.java +++ b/src/main/java/noppes/npcs/client/model/ModelMPM.java @@ -25,6 +25,7 @@ import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.roles.JobPuppet; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; public class ModelMPM extends ModelNPCMale{ private ModelPartInterface wings; @@ -65,13 +66,10 @@ public class ModelMPM extends ModelNPCMale{ public boolean isArmor; public float alpha = 1; - // Check Legacy Code for Old Version - - // Updated False = 64x32 Skin // Steve 64x64 and Alex 64x64 - public ModelMPM(float par1, boolean arms) { + public ModelMPM(float par1, boolean alex) { - super(par1, arms); + super(par1, alex); isArmor = par1 > 0; float par2 = 0; @@ -101,7 +99,7 @@ public class ModelMPM extends ModelNPCMale{ // this.bipedBodywear.setRotationPoint(0.0F, 0.0F + par2, 0.0F); // Steve 64x64 Model or Alex 64x64 Model - if (arms){ + if (alex){ // Alex Version this.bipedRightArm = (new ModelScaleRenderer(this, 40, 16)); this.bipedRightArm.addBox(-2.0F, -2.0F, -2.0F, 3, 12, 4, par1); diff --git a/src/main/java/noppes/npcs/client/model/ModelNPCMale.java b/src/main/java/noppes/npcs/client/model/ModelNPCMale.java index dd9202135..ae9a23cb9 100644 --- a/src/main/java/noppes/npcs/client/model/ModelNPCMale.java +++ b/src/main/java/noppes/npcs/client/model/ModelNPCMale.java @@ -28,10 +28,10 @@ public class ModelNPCMale extends ModelBiped init(f, 0.0F); } - public ModelNPCMale(float f, boolean arms) + public ModelNPCMale(float f, boolean alex) { super(f, 0.0F, 64, 64); - init(f, 0.0F, arms); + init(f, 0.0F, alex); } @Override diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java index 6c1cb85ef..f608a0703 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCHumanMale.java @@ -4,6 +4,7 @@ import static net.minecraftforge.client.IItemRenderer.ItemRenderType.EQUIPPED; import static net.minecraftforge.client.IItemRenderer.ItemRendererHelper.BLOCK_3D; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; @@ -11,7 +12,6 @@ import net.minecraft.client.renderer.entity.RenderBiped; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Items; import net.minecraft.item.*; import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; @@ -23,8 +23,6 @@ import noppes.npcs.client.model.ModelNPCMale; import noppes.npcs.constants.EnumAnimation; import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.entity.EntityNPCInterface; -import noppes.npcs.items.ItemClaw; -import noppes.npcs.items.ItemShield; import org.lwjgl.opengl.GL11; @@ -36,8 +34,8 @@ public class RenderNPCHumanMale extends RenderNPCInterface protected ModelNPCMale modelArmor; protected final ModelNPCMale originalBipedMain; - protected final ModelMPM steve = new ModelMPM(0, false); - protected final ModelMPM alex = new ModelMPM(0, true); + protected final static ModelMPM steve64 = new ModelMPM(0, false); + protected final static ModelMPM alex = new ModelMPM(0, true); public RenderNPCHumanMale(ModelNPCMale mainmodel, ModelNPCMale armorChest, ModelNPCMale armor) { @@ -113,14 +111,13 @@ public class RenderNPCHumanMale extends RenderNPCInterface public void renderPlayer(EntityNPCInterface npc, double d, double d1, double d2, float f, float f1) { - // SEEMS TO WORK FOR NOW. Keeps NPC from outsyncing with Creature Models if(npc instanceof EntityCustomNpc){ EntityCustomNpc test = (EntityCustomNpc) npc; if(test.modelData.entityClass == null){ int modelVal = npc.display.modelType; if(modelVal == 1){ - this.mainModel = steve; - this.modelBipedMain = steve; + this.mainModel = steve64; + this.modelBipedMain = steve64; } else if(modelVal == 2){ this.mainModel = alex; @@ -177,7 +174,6 @@ public class RenderNPCHumanMale extends RenderNPCInterface npc.textureCloakLocation = new ResourceLocation(npc.display.cloakTexture); } bindTexture((ResourceLocation) npc.textureCloakLocation); - //AbstractClientPlayer.func_110307_b(, null); GL11.glPushMatrix(); GL11.glTranslatef(0.0F, 0.0F, 0.125F); double d = (npc.field_20066_r + (npc.field_20063_u - npc.field_20066_r) * (double)f) - (npc.prevPosX + (npc.posX - npc.prevPosX) * (double)f); @@ -193,13 +189,12 @@ public class RenderNPCHumanMale extends RenderNPCInterface f14 = 0.0F; } float f16 = npc.prevRotationYaw + (npc.rotationYaw - npc.prevRotationYaw) * f; - //f13 += MathHelper.sin((entityplayer.prevDistanceWalkedModified + (entityplayer.distanceWalkedModified - entityplayer.prevDistanceWalkedModified) * f) * 6F) * 32F * f16; float f13 = 5f; if (npc.isSneaking()) { f13 += 25F; } - //System.out.println(entityplayer.prevDistanceWalkedModified); + GL11.glRotatef(6F + f14 / 2.0F + f13, 1.0F, 0.0F, 0.0F); GL11.glRotatef(f15 / 2.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(-f15 / 2.0F, 0.0F, 1.0F, 0.0F); diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java index a65fbd801..a14750ffa 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java @@ -32,22 +32,22 @@ import com.mojang.authlib.minecraft.MinecraftProfileTexture; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; -public class RenderNPCInterface extends RenderLiving{ +public class RenderNPCInterface extends RenderLiving{ public static long LastTextureTick = 0; public ModelBase originalModel; - public RenderNPCInterface(ModelBase model, float f){ - super(model, f); - this.originalModel = model; - } + public RenderNPCInterface(ModelBase model, float f){ + super(model, f); + this.originalModel = model; + } protected void renderName(EntityNPCInterface npc, double d, double d1, double d2) { if (!this.func_110813_b(npc)) return; float f2 = npc.getDistanceToEntity(renderManager.livingPlayer); float f3 = npc.isSneaking() ? 32F : 64F; - + if (f2 > f3) return; if (npc.messages != null){ @@ -69,199 +69,201 @@ public class RenderNPCInterface extends RenderLiving{ height = 1; } } - } - - public void doRenderShadowAndFire(Entity par1Entity, double par2, double par4, double par6, float par8, float par9){ - EntityNPCInterface npc = (EntityNPCInterface) par1Entity; - if(!npc.isKilled() && !npc.scriptInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) - super.doRenderShadowAndFire(par1Entity, par2, par4, par6, par8, par9); - } - - protected void renderLivingLabel(EntityNPCInterface npc, double d, double d1, double d2, int i, Object... obs){ - FontRenderer fontrenderer = getFontRendererFromRenderManager(); - - i = npc.getBrightnessForRender(0); - int j = i % 65536; - int k = i / 65536; - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F); - - float f1 = (npc.baseHeight / 5f) * npc.display.modelSize; - float f2 = 0.01666667F * f1; - GL11.glPushMatrix(); - GL11.glTranslatef((float)d + 0.0F, (float)d1, (float)d2); - GL11.glNormal3f(0.0F, 1.0F, 0.0F); - GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F); - Tessellator tessellator = Tessellator.instance; - float height = f1 / 6.5f; - for(j = 0; j < obs.length; j += 2){ - float scale = (Float) obs[j + 1]; - height += f1 / 6.5f * scale; - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glDepthMask(false); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glDisable(GL11.GL_TEXTURE_2D); - String s = obs[j].toString(); - GL11.glTranslatef(0, height, 0); - GL11.glScalef(-f2 * scale, -f2 * scale, f2 * scale); - tessellator.startDrawingQuads(); - int size = fontrenderer.getStringWidth(s) / 2; - tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F); - tessellator.addVertex(-size - 1, -1, 0.0D); - tessellator.addVertex(-size - 1, 8 , 0.0D); - tessellator.addVertex(size + 1, 8 , 0.0D); - tessellator.addVertex(size + 1, -1 , 0.0D); - tessellator.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glEnable(GL11.GL_DEPTH_TEST); - GL11.glDepthMask(true); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - - int color = npc.faction.color; - fontrenderer.drawString(s, -fontrenderer.getStringWidth(s) / 2, 0, color); - GL11.glPopMatrix(); - } - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glEnable(GL11.GL_LIGHTING /*GL_LIGHTING*/); - GL11.glDisable(GL11.GL_BLEND /*GL_BLEND*/); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glPopMatrix(); - } - - protected void renderPlayerScale(EntityNPCInterface npc, float f){ - GL11.glScalef((npc.scaleX / 5) * npc.display.modelSize, (npc.scaleY / 5) * npc.display.modelSize, (npc.scaleZ / 5) * npc.display.modelSize); - } - - protected void renderPlayerSleep(EntityNPCInterface npc, double d, double d1, double d2){ - shadowSize = npc.display.modelSize / 10f; - - float xOffset = 0; - float yOffset = npc.currentAnimation == EnumAnimation.NONE?npc.ai.bodyOffsetY / 10 - 0.5f:0; - float zOffset = 0; - - if(npc.isEntityAlive()){ - if(npc.isPlayerSleeping()){ - xOffset = (float) -Math.cos(Math.toRadians(180 - npc.ai.orientation)); - zOffset = (float) -Math.sin(Math.toRadians(npc.ai.orientation)); - yOffset += 0.14f; - } - else if(npc.isRiding()){ - yOffset -= 0.5f - ((EntityCustomNpc)npc).modelData.getLegsY() * 0.8f; - } - } - renderLiving(npc, d, d1, d2, xOffset, yOffset, zOffset); - } - private void renderLiving(EntityNPCInterface npc, double d, double d1, double d2,float xoffset,float yoffset,float zoffset){ - xoffset = (xoffset/ 5f) * npc.display.modelSize; - yoffset = (yoffset/ 5f) * npc.display.modelSize; - zoffset = (zoffset/ 5f) * npc.display.modelSize; - super.renderLivingAt(npc, d+xoffset, d1+yoffset, d2 + zoffset); - } - - @Override - protected void rotateCorpse(EntityLivingBase entity, float f, float f1, float f2){ - EntityNPCInterface npc = (EntityNPCInterface) entity; - if(npc.isEntityAlive() && npc.isPlayerSleeping()) - { - GL11.glRotatef(npc.ai.orientation, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(getDeathMaxRotation(npc), 0.0F, 0.0F, 1.0F); - GL11.glRotatef(270F, 0.0F, 1.0F, 0.0F); - } - else if(npc.isEntityAlive() && npc.currentAnimation == EnumAnimation.CRAWLING){ - GL11.glRotatef(270.0F - f1, 0.0F, 1.0F, 0.0F); - float scale = ((EntityCustomNpc)npc).display.modelSize / 5f; - GL11.glTranslated(-scale +((EntityCustomNpc)npc).modelData.getLegsY() * scale, 0.14f, 0); - GL11.glRotatef(270F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(270F, 0.0F, 1.0F, 0.0F); - } - else { - super.rotateCorpse(npc, f, f1, f2); - } - } - - @Override - protected void passSpecialRender(EntityLivingBase par1EntityLivingBase, double par2, double par4, double par6){ - renderName((EntityNPCInterface)par1EntityLivingBase, par2, par4, par6); - } - - @Override - protected void preRenderCallback(EntityLivingBase entityliving, float f){ - renderPlayerScale((EntityNPCInterface)entityliving, f); - } - - @Override - public void doRender(EntityLiving entityliving, double d, double d1, double d2, float f, float f1){ - EntityNPCInterface npc = (EntityNPCInterface) entityliving; - - if(npc.isKilled() && npc.stats.hideKilledBody && npc.deathTime > 20){ - return; - } - if((npc.display.showBossBar == 1 || npc.display.showBossBar == 2 && npc.isAttacking()) && !npc.isKilled() && npc.deathTime <= 20 && npc.canSee(Minecraft.getMinecraft().thePlayer)) - BossStatus.setBossStatus(npc, true); - - if(npc.ai.standingType == EnumStandingType.HeadRotation && !npc.isWalking() && !npc.isInteracting()){ - npc.prevRenderYawOffset = npc.renderYawOffset = npc.ai.orientation; - } - super.doRender(entityliving, d, d1, d2, f, f1); } - protected void renderModel(EntityLivingBase entityliving, float par2, float par3, float par4, float par5, float par6, float par7){ - super.renderModel(entityliving, par2, par3, par4, par5, par6, par7); - EntityNPCInterface npc = (EntityNPCInterface) entityliving; - if (!npc.display.glowTexture.isEmpty()) - { - GL11.glDepthFunc(GL11.GL_LEQUAL); - if(npc.textureGlowLocation == null){ - npc.textureGlowLocation = new ResourceLocation(npc.display.glowTexture); - } - bindTexture((ResourceLocation) npc.textureGlowLocation); - float f1 = 1.0F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - GL11.glDisable(GL11.GL_LIGHTING); - if (npc.isInvisible()) - { - GL11.glDepthMask(false); - } - else - { - GL11.glDepthMask(true); - } - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glPushMatrix(); - GL11.glScalef(1.001f, 1.001f, 1.001f); - if(mainModel instanceof ModelMPM){ - ((ModelMPM)mainModel).isArmor = true; - mainModel.render(entityliving, par2, par3, par4, par5, par6, par7); - ((ModelMPM)mainModel).isArmor = false; - } - else - mainModel.render(entityliving, par2, par3, par4, par5, par6, par7); - GL11.glPopMatrix(); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glColor4f(1.0F, 1.0F, 1.0F, f1); - + public void doRenderShadowAndFire(Entity par1Entity, double par2, double par4, double par6, float par8, float par9){ + EntityNPCInterface npc = (EntityNPCInterface) par1Entity; + if(!npc.isKilled() && !npc.scriptInvisibleToPlayer(Minecraft.getMinecraft().thePlayer)) + super.doRenderShadowAndFire(par1Entity, par2, par4, par6, par8, par9); + } - GL11.glDepthFunc(GL11.GL_LEQUAL); - GL11.glDisable(GL11.GL_BLEND); - } - } - @Override - protected float handleRotationFloat(EntityLivingBase par1EntityLiving, float par2){ - EntityNPCInterface npc = (EntityNPCInterface) par1EntityLiving; - if(npc.isKilled() || npc.display.disableLivingAnimation) - return 0; - return super.handleRotationFloat(par1EntityLiving, par2); - } + protected void renderLivingLabel(EntityNPCInterface npc, double d, double d1, double d2, int i, Object... obs){ + FontRenderer fontrenderer = getFontRendererFromRenderManager(); + + i = npc.getBrightnessForRender(0); + int j = i % 65536; + int k = i / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F); + + float f1 = (npc.baseHeight / 5f) * npc.display.modelSize; + float f2 = 0.01666667F * f1; + GL11.glPushMatrix(); + GL11.glTranslatef((float)d + 0.0F, (float)d1, (float)d2); + GL11.glNormal3f(0.0F, 1.0F, 0.0F); + GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F); + Tessellator tessellator = Tessellator.instance; + float height = f1 / 6.5f; + for(j = 0; j < obs.length; j += 2){ + float scale = (Float) obs[j + 1]; + height += f1 / 6.5f * scale; + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDepthMask(false); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glDisable(GL11.GL_TEXTURE_2D); + String s = obs[j].toString(); + GL11.glTranslatef(0, height, 0); + GL11.glScalef(-f2 * scale, -f2 * scale, f2 * scale); + tessellator.startDrawingQuads(); + int size = fontrenderer.getStringWidth(s) / 2; + tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F); + tessellator.addVertex(-size - 1, -1, 0.0D); + tessellator.addVertex(-size - 1, 8 , 0.0D); + tessellator.addVertex(size + 1, 8 , 0.0D); + tessellator.addVertex(size + 1, -1 , 0.0D); + tessellator.draw(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_DEPTH_TEST); + GL11.glDepthMask(true); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + int color = npc.faction.color; + fontrenderer.drawString(s, -fontrenderer.getStringWidth(s) / 2, 0, color); + GL11.glPopMatrix(); + } + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_LIGHTING /*GL_LIGHTING*/); + GL11.glDisable(GL11.GL_BLEND /*GL_BLEND*/); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glPopMatrix(); + } + + protected void renderPlayerScale(EntityNPCInterface npc, float f){ + GL11.glScalef((npc.scaleX / 5) * npc.display.modelSize, (npc.scaleY / 5) * npc.display.modelSize, (npc.scaleZ / 5) * npc.display.modelSize); + } + + protected void renderPlayerSleep(EntityNPCInterface npc, double d, double d1, double d2){ + shadowSize = npc.display.modelSize / 10f; + + float xOffset = 0; + float yOffset = npc.currentAnimation == EnumAnimation.NONE?npc.ai.bodyOffsetY / 10 - 0.5f:0; + float zOffset = 0; + + if(npc.isEntityAlive()){ + if(npc.isPlayerSleeping()){ + xOffset = (float) -Math.cos(Math.toRadians(180 - npc.ai.orientation)); + zOffset = (float) -Math.sin(Math.toRadians(npc.ai.orientation)); + yOffset += 0.14f; + } + else if(npc.isRiding()){ + yOffset -= 0.5f - ((EntityCustomNpc)npc).modelData.getLegsY() * 0.8f; + } + } + renderLiving(npc, d, d1, d2, xOffset, yOffset, zOffset); + } + private void renderLiving(EntityNPCInterface npc, double d, double d1, double d2,float xoffset,float yoffset,float zoffset){ + xoffset = (xoffset/ 5f) * npc.display.modelSize; + yoffset = (yoffset/ 5f) * npc.display.modelSize; + zoffset = (zoffset/ 5f) * npc.display.modelSize; + super.renderLivingAt(npc, d+xoffset, d1+yoffset, d2 + zoffset); + } + + @Override + protected void rotateCorpse(EntityLivingBase entity, float f, float f1, float f2){ + EntityNPCInterface npc = (EntityNPCInterface) entity; + if(npc.isEntityAlive() && npc.isPlayerSleeping()) + { + GL11.glRotatef(npc.ai.orientation, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(getDeathMaxRotation(npc), 0.0F, 0.0F, 1.0F); + GL11.glRotatef(270F, 0.0F, 1.0F, 0.0F); + } + else if(npc.isEntityAlive() && npc.currentAnimation == EnumAnimation.CRAWLING){ + GL11.glRotatef(270.0F - f1, 0.0F, 1.0F, 0.0F); + float scale = ((EntityCustomNpc)npc).display.modelSize / 5f; + GL11.glTranslated(-scale +((EntityCustomNpc)npc).modelData.getLegsY() * scale, 0.14f, 0); + GL11.glRotatef(270F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(270F, 0.0F, 1.0F, 0.0F); + } + else { + super.rotateCorpse(npc, f, f1, f2); + } + } + + @Override + protected void passSpecialRender(EntityLivingBase par1EntityLivingBase, double par2, double par4, double par6){ + renderName((EntityNPCInterface)par1EntityLivingBase, par2, par4, par6); + } + + @Override + protected void preRenderCallback(EntityLivingBase entityliving, float f){ + renderPlayerScale((EntityNPCInterface)entityliving, f); + } + + @Override + public void doRender(EntityLiving entityliving, double d, double d1, double d2, float f, float f1){ + EntityNPCInterface npc = (EntityNPCInterface) entityliving; + + if(npc.isKilled() && npc.stats.hideKilledBody && npc.deathTime > 20){ + return; + } + if((npc.display.showBossBar == 1 || npc.display.showBossBar == 2 && npc.isAttacking()) && !npc.isKilled() && npc.deathTime <= 20 && npc.canSee(Minecraft.getMinecraft().thePlayer)) + BossStatus.setBossStatus(npc, true); + + if(npc.ai.standingType == EnumStandingType.HeadRotation && !npc.isWalking() && !npc.isInteracting()){ + npc.prevRenderYawOffset = npc.renderYawOffset = npc.ai.orientation; + } + super.doRender(entityliving, d, d1, d2, f, f1); + } + + protected void renderModel(EntityLivingBase entityliving, float par2, float par3, float par4, float par5, float par6, float par7){ + super.renderModel(entityliving, par2, par3, par4, par5, par6, par7); + EntityNPCInterface npc = (EntityNPCInterface) entityliving; + if (!npc.display.glowTexture.isEmpty()) + { + GL11.glDepthFunc(GL11.GL_LEQUAL); + if(npc.textureGlowLocation == null){ + npc.textureGlowLocation = new ResourceLocation(npc.display.glowTexture); + } + bindTexture((ResourceLocation) npc.textureGlowLocation); + float f1 = 1.0F; + + GL11.glEnable(GL11.GL_BLEND); + // Overlay & Glow + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + GL11.glDisable(GL11.GL_LIGHTING); + + if (npc.isInvisible()) + { + GL11.glDepthMask(false); + } + else + { + GL11.glDepthMask(true); + } + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glPushMatrix(); + GL11.glScalef(1.001f, 1.001f, 1.001f); + if(mainModel instanceof ModelMPM){ + ((ModelMPM)mainModel).isArmor = true; + mainModel.render(entityliving, par2, par3, par4, par5, par6, par7); + ((ModelMPM)mainModel).isArmor = false; + } + else + mainModel.render(entityliving, par2, par3, par4, par5, par6, par7); + GL11.glPopMatrix(); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glColor4f(1.0F, 1.0F, 1.0F, f1); + + GL11.glDepthFunc(GL11.GL_LEQUAL); + GL11.glDisable(GL11.GL_BLEND); + } + } + @Override + protected float handleRotationFloat(EntityLivingBase par1EntityLiving, float par2){ + EntityNPCInterface npc = (EntityNPCInterface) par1EntityLiving; + if(npc.isKilled() || npc.display.disableLivingAnimation) + return 0; + return super.handleRotationFloat(par1EntityLiving, par2); + } + + @Override + protected void renderLivingAt(EntityLivingBase entityliving, double d, double d1, double d2){ + renderPlayerSleep((EntityNPCInterface)entityliving, d, d1, d2); + } - @Override - protected void renderLivingAt(EntityLivingBase entityliving, double d, double d1, double d2){ - renderPlayerSleep((EntityNPCInterface)entityliving, d, d1, d2); - } - @Override public ResourceLocation getEntityTexture(Entity entity) { @@ -276,11 +278,11 @@ public class RenderNPCInterface extends RenderLiving{ return AbstractClientPlayer.locationStevePng; } else if(npc.display.skinType == 1 && npc.display.playerProfile != null){ - Minecraft minecraft = Minecraft.getMinecraft(); + Minecraft minecraft = Minecraft.getMinecraft(); Map map = minecraft.func_152342_ad().func_152788_a(npc.display.playerProfile); - if (map.containsKey(Type.SKIN)){ - npc.textureLocation = minecraft.func_152342_ad().func_152792_a((MinecraftProfileTexture)map.get(Type.SKIN), Type.SKIN); - } + if (map.containsKey(Type.SKIN)){ + npc.textureLocation = minecraft.func_152342_ad().func_152792_a((MinecraftProfileTexture)map.get(Type.SKIN), Type.SKIN); + } LastTextureTick = 0; } else if(npc.display.skinType == 2 || npc.display.skinType == 3){ @@ -291,7 +293,6 @@ public class RenderNPCInterface extends RenderLiving{ for(byte b : hash){ sb.append(String.format("%02x", b&0xff)); } - // SKIN CHANGE if(npc.display.skinType == 2){ npc.textureLocation = new ResourceLocation("skins/" + sb.toString()); loadSkin(null, npc.textureLocation, npc.display.url, false); @@ -313,10 +314,10 @@ public class RenderNPCInterface extends RenderLiving{ } // 64x64 Skin is True - private void loadSkin(File file, ResourceLocation resource, String par1Str, boolean version){ - TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); - ITextureObject object = new ImageDownloadAlt(file, par1Str, SkinManager.field_152793_a, new ImageBufferDownloadAlt(version)); - texturemanager.loadTexture(resource, object); - } + private void loadSkin(File file, ResourceLocation resource, String par1Str, boolean version){ + TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); + ITextureObject object = new ImageDownloadAlt(file, par1Str, SkinManager.field_152793_a, new ImageBufferDownloadAlt(version)); + texturemanager.loadTexture(resource, object); + } } diff --git a/src/main/java/noppes/npcs/controllers/PlayerData.java b/src/main/java/noppes/npcs/controllers/PlayerData.java index 28b018239..48588315e 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerData.java +++ b/src/main/java/noppes/npcs/controllers/PlayerData.java @@ -4,13 +4,11 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.EnumFacing; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; import noppes.npcs.constants.EnumRoleType; -import noppes.npcs.controllers.data.PlayerDataScript; import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.entity.data.DataTimers; diff --git a/src/main/java/noppes/npcs/controllers/PlayerDataController.java b/src/main/java/noppes/npcs/controllers/PlayerDataController.java index 5b6df4490..621de7d7d 100644 --- a/src/main/java/noppes/npcs/controllers/PlayerDataController.java +++ b/src/main/java/noppes/npcs/controllers/PlayerDataController.java @@ -1,27 +1,24 @@ package noppes.npcs.controllers; -import luizotavio.compressor.ZstdCompressor; +import java.io.EOFException; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.nbt.NBTSizeTracker; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.server.MinecraftServer; import noppes.npcs.CustomNpcs; import noppes.npcs.LogWriter; -import noppes.npcs.util.JsonException; import noppes.npcs.util.NBTJsonUtil; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.StandardOpenOption; -import java.util.HashMap; -import java.util.Map; - -import static luizotavio.compressor.executor.IOExecutor.IO_EXECUTOR; - -public class PlayerDataController { +public class PlayerDataController { public static PlayerDataController instance; - + public PlayerDataController(){ instance = this; } @@ -45,24 +42,24 @@ public class PlayerDataController { filename = "noplayername"; filename += ".dat"; try { - File file = new File(saveDir, filename); - if(file.exists()){ - NBTTagCompound comp = CompressedStreamTools.readCompressed(new FileInputStream(file)); - file.delete(); - file = new File(saveDir, filename+"_old"); - if(file.exists()) - file.delete(); - return comp; - } + File file = new File(saveDir, filename); + if(file.exists()){ + NBTTagCompound comp = CompressedStreamTools.readCompressed(new FileInputStream(file)); + file.delete(); + file = new File(saveDir, filename+"_old"); + if(file.exists()) + file.delete(); + return comp; + } } catch (Exception e) { LogWriter.except(e); } try { - File file = new File(saveDir, filename+"_old"); - if(file.exists()){ - return CompressedStreamTools.readCompressed(new FileInputStream(file)); - } - + File file = new File(saveDir, filename+"_old"); + if(file.exists()){ + return CompressedStreamTools.readCompressed(new FileInputStream(file)); + } + } catch (Exception e) { LogWriter.except(e); } @@ -73,52 +70,38 @@ public class PlayerDataController { public NBTTagCompound loadPlayerData(String player){ File saveDir = getSaveDir(); String filename = player; - if(filename.isEmpty()) { - return new NBTTagCompound(); - } - - if(CustomNpcs.CompressorType.equalsIgnoreCase("zstd")) { - filename += ".zstd"; - } else { - filename += ".json"; - } - + if(filename.isEmpty()) + filename = "noplayername"; + filename += ".json"; try { - return ensureCompressor( - new File(saveDir, filename) - ); + File file = new File(saveDir, filename); + if(file.exists()){ + return NBTJsonUtil.LoadFile(file); + } } catch (Exception e) { LogWriter.error("Error loading: " + filename, e); } return new NBTTagCompound(); } - + public void savePlayerData(PlayerData data){ NBTTagCompound compound = data.getNBT(); - String filename; - - if (CustomNpcs.CompressorType.equalsIgnoreCase("zstd")) { - filename = data.uuid + ".zstd"; - } else { - filename = data.uuid + ".json"; - } - + String filename = data.uuid + ".json"; try { File saveDir = getSaveDir(); - - File file = new File(saveDir, filename); - - if (file.exists()) { - file.delete(); + File file = new File(saveDir, filename+"_new"); + File file1 = new File(saveDir, filename); + NBTJsonUtil.SaveFile(file, compound); + if(file1.exists()){ + file1.delete(); } - - writeCompressor(file, compound); + file.renameTo(file1); } catch (Exception e) { LogWriter.except(e); } } - + public PlayerBankData getBankData(EntityPlayer player, int bankId) { Bank bank = BankController.getInstance().getBank(bankId); PlayerBankData data = getPlayerData(player).bankData; @@ -127,7 +110,7 @@ public class PlayerDataController { } return data; } - + public PlayerData getPlayerData(EntityPlayer player){ PlayerData data = (PlayerData) player.getExtendedProperties("CustomNpcsData"); if(data == null){ @@ -139,14 +122,14 @@ public class PlayerDataController { return data; } public String hasPlayer(String username) { - for(String name : getUsernameData().keySet()){ - if(name.equalsIgnoreCase(username)) - return name; - } - + for(String name : getUsernameData().keySet()){ + if(name.equalsIgnoreCase(username)) + return name; + } + return ""; } - + public PlayerData getDataFromUsername(String username){ EntityPlayer player = MinecraftServer.getServer().getConfigurationManager().func_152612_a(username); PlayerData data = null; @@ -162,91 +145,37 @@ public class PlayerDataController { } else data = getPlayerData(player); - + return data; } - + public void addPlayerMessage(String username, PlayerMail mail) { mail.time = System.currentTimeMillis(); - + EntityPlayer player = MinecraftServer.getServer().getConfigurationManager().func_152612_a(username); PlayerData data = getDataFromUsername(username); data.mailData.playermail.add(mail.copy()); savePlayerData(data); } - + public Map getUsernameData(){ Map map = new HashMap(); - for(File file : getSaveDir().listFiles()){ - if(file.isDirectory() || !file.getName().endsWith(".json")) - continue; + for(File file : getSaveDir().listFiles()){ + if(file.isDirectory() || !file.getName().endsWith(".json")) + continue; try { - NBTTagCompound compound = ensureCompressor(file); - - if(compound.hasKey("PlayerName")){ - map.put(compound.getString("PlayerName"), compound); - } + NBTTagCompound compound = NBTJsonUtil.LoadFile(file); + if(compound.hasKey("PlayerName")){ + map.put(compound.getString("PlayerName"), compound); + } } catch (Exception e) { LogWriter.error("Error loading: " + file.getAbsolutePath(), e); } - } + } return map; } - + public boolean hasMail(EntityPlayer player) { return getPlayerData(player).mailData.hasMail(); } - - private void writeCompressor(File file, NBTTagCompound compound) { - if (compound == null) { - throw new IllegalArgumentException("Compound cannot be null!"); - } - - if (CustomNpcs.CompressorType.equalsIgnoreCase("json")) { - IO_EXECUTOR.submit(() -> { - try { - NBTJsonUtil.SaveFile(file, compound); - } catch (IOException | JsonException e) { - e.printStackTrace(); - } - }); - } else if (CustomNpcs.CompressorType.equalsIgnoreCase("zstd")) { - IO_EXECUTOR.submit(() -> { - try { - byte[] compressed = ZstdCompressor.writeCompound(compound); - - Files.write( - file.toPath(), - compressed, - StandardOpenOption.CREATE, - StandardOpenOption.WRITE - ); - } catch (Exception e) { - e.printStackTrace(); - } - }); - } - } - - private NBTTagCompound ensureCompressor(File file) throws JsonException, IOException { - if (!file.exists()) { - return new NBTTagCompound(); - } - - if (CustomNpcs.CompressorType.equalsIgnoreCase("json")) { - return NBTJsonUtil.LoadFile(file); - } - - if (CustomNpcs.CompressorType.equalsIgnoreCase("zstd")) { - byte[] readCompressed = ZstdCompressor.readCompressed( - new RandomAccessFile(file, "r") - ); - - try (DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(readCompressed))) { - return CompressedStreamTools.func_152456_a(dataInputStream, NBTSizeTracker.field_152451_a); - } - } - - throw new IOException("Unknown compressor type: " + CustomNpcs.CompressorType); - } -} +} \ No newline at end of file diff --git a/src/main/java/noppes/npcs/entity/EntityCustomNpc.java b/src/main/java/noppes/npcs/entity/EntityCustomNpc.java index 52dbcf775..bf4e669e1 100644 --- a/src/main/java/noppes/npcs/entity/EntityCustomNpc.java +++ b/src/main/java/noppes/npcs/entity/EntityCustomNpc.java @@ -10,9 +10,6 @@ import noppes.npcs.ModelData; import noppes.npcs.ModelPartData; import noppes.npcs.client.EntityUtil; -// FLY CHANGE -// extends EntityNPCInterface -// extends EntityNPCFlying public class EntityCustomNpc extends EntityNPCFlying { public ModelData modelData = new ModelData(); diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Black cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Black cape.png deleted file mode 100644 index 7435f5630..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Black cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Blue cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Blue cape.png deleted file mode 100644 index 36835f010..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Blue cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Brown cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Brown cape.png deleted file mode 100644 index d645c37c9..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Brown cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Grey cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Grey cape.png deleted file mode 100644 index 473b71e5d..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Grey cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Red cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Red cape.png deleted file mode 100644 index 6fa909df5..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Dark Red cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Gold cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Gold cape.png deleted file mode 100644 index 9925678ef..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Gold cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Grey cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Grey cape.png deleted file mode 100644 index 964736009..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Grey cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Lavender cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Lavender cape.png deleted file mode 100644 index 26140e6b9..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Lavender cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Brown cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Brown cape.png deleted file mode 100644 index b471a1106..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Brown cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Yellow cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Yellow cape.png deleted file mode 100644 index 850aadc42..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light Yellow cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light green cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light green cape.png deleted file mode 100644 index c7affa5a8..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Light green cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Orange cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Orange cape.png deleted file mode 100644 index ad415c3e4..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Orange cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Pink cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Pink cape.png deleted file mode 100644 index b05d7d6be..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Pink cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Red cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Red cape.png deleted file mode 100644 index 40cd6204a..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Red cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/White cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/White cape.png deleted file mode 100644 index 579d732bc..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/White cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Yellow cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Yellow cape.png deleted file mode 100644 index 837643841..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Color Capes/Yellow cape.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/Blue_Torn.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/Blue_Torn.png new file mode 100644 index 000000000..e68b319b7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/Blue_Torn.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_black.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_black.png new file mode 100644 index 000000000..970232cb8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_black.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_blue.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_blue.png new file mode 100644 index 000000000..408742273 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_blue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_brown.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_brown.png new file mode 100644 index 000000000..8852ef647 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_brown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_cyan.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_cyan.png new file mode 100644 index 000000000..ff14fdff6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_cyan.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_gold.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_gold.png new file mode 100644 index 000000000..3479e7dc1 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_gold.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_green.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_green.png new file mode 100644 index 000000000..252f3dea2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_green.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_grey.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_grey.png new file mode 100644 index 000000000..5c8bd1ee6 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_grey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_lightbrown.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_lightbrown.png new file mode 100644 index 000000000..511c710fb Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_lightbrown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_lightgrey.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_lightgrey.png new file mode 100644 index 000000000..a59776c1c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_lightgrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_purple.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_purple.png new file mode 100644 index 000000000..b70c5441d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_purple.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_red.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_red.png new file mode 100644 index 000000000..6d3937d1b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_red.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_white.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_white.png new file mode 100644 index 000000000..f6fec09e2 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_white.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_yellow.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_yellow.png new file mode 100644 index 000000000..b4711e62b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/cape_yellow.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_black.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_black.png new file mode 100644 index 000000000..d88a9d6f0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_black.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_brown.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_brown.png new file mode 100644 index 000000000..030ea07a0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_brown.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_cyan.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_cyan.png new file mode 100644 index 000000000..e68b319b7 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_cyan.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_green.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_green.png new file mode 100644 index 000000000..0a4de4cee Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_green.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_grey.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_grey.png new file mode 100644 index 000000000..c070330fa Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_grey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_lightgrey.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_lightgrey.png new file mode 100644 index 000000000..c94287ee3 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_lightgrey.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_purple.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_purple.png new file mode 100644 index 000000000..9e4692e02 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_purple.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_red.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_red.png new file mode 100644 index 000000000..882d35f46 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_red.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_yellow.png b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_yellow.png new file mode 100644 index 000000000..b41b1b0cb Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Color/torn_yellow.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/aura.png b/src/main/resources/assets/customnpcs/textures/cloak/Created/aura.png deleted file mode 100644 index 94f6c840c..000000000 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Created/aura.png and /dev/null differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/CowCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/CowCape.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/CowCape.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/CowCape.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Crescent.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Crescent.png new file mode 100644 index 000000000..c8be06b40 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Crescent.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Doom.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Doom.png new file mode 100644 index 000000000..3e77ede6d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Doom.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Fire.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Fire.png new file mode 100644 index 000000000..b31606f33 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Fire.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/King.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/King.png new file mode 100644 index 000000000..2ee529c0c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/King.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Mystic.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Mystic.png new file mode 100644 index 000000000..ef6b983ba Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Mystic.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png index c88505278..db6178ba3 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/Red.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/SheepCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/SheepCape.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/SheepCape.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/SheepCape.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/ShroomCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/ShroomCape.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/ShroomCape.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/ShroomCape.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/SlimeCape.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/SlimeCape.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/SlimeCape.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/SlimeCape.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/aura.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/aura.png new file mode 100644 index 000000000..5b89d6f2d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/aura.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/bee.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/bee.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/bee.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/bee.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/burning.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/burning.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/burning.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/burning.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/camo.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/camo.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/camo.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/camo.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/candy_cane.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/candy_cane.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/candy_cane.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/candy_cane.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/card.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/card.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/card.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/card.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/clown.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/clown.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/clown.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/clown.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/dragon.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/dragon.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/dragon.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/dragon.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/dragoncape.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/dragoncape.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/dragoncape.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/dragoncape.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/eagle.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/eagle.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/eagle.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/eagle.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/enchant.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/enchant.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/enchant.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/enchant.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/flower.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/flower.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/flower.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/flower.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/giraffe.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/giraffe.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/giraffe.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/giraffe.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/green_royal.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/green_royal.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/green_royal.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/green_royal.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/heat.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/heat.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/heat.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/heat.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/ivy.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/ivy.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/ivy.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/ivy.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/magma_cape.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/magma_cape.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/magma_cape.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/magma_cape.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/migrate.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/migrate.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/migrate.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/migrate.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/migration_remade.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/migration_remade.png new file mode 100644 index 000000000..7283bda7d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/migration_remade.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/minecon.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/minecon.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/minecon.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/minecon.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/neon.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/neon.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/neon.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/neon.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/neon_green.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/neon_green.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/neon_green.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/neon_green.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/neon_orange.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/neon_orange.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/neon_orange.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/neon_orange.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/orange_break.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/orange_break.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/orange_break.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/orange_break.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/phantom.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/phantom.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/phantom.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/phantom.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/pirate.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/pirate.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/pirate.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/pirate.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/plank.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/plank.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/plank.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/plank.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/purple_gold.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/purple_gold.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/purple_gold.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/purple_gold.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/red_design.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_design.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/red_design.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/red_design.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/red_dirty.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_dirty.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/red_dirty.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/red_dirty.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/red_dragon.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_dragon.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/red_dragon.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/red_dragon.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/red_leader.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_leader.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/red_leader.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/red_leader.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/red_royal.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_royal.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/red_royal.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/red_royal.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_skull.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_skull.png new file mode 100644 index 000000000..b99029d7a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Extras/red_skull.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/ripper.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/ripper.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/ripper.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/ripper.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/skeleton.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/skeleton.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/skeleton.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/skeleton.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/solo.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/solo.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/solo.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/solo.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/spiral.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/spiral.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/spiral.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/spiral.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/tea_leaves.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/tea_leaves.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/tea_leaves.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/tea_leaves.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/thread.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/thread.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/thread.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/thread.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/tiger.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/tiger.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/tiger.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/tiger.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/waffle.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/waffle.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/waffle.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/waffle.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/warden.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/warden.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/warden.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/warden.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/waterfall.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/waterfall.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/waterfall.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/waterfall.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Created/zebra.png b/src/main/resources/assets/customnpcs/textures/cloak/Extras/zebra.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Created/zebra.png rename to src/main/resources/assets/customnpcs/textures/cloak/Extras/zebra.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiMaster.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/ColiMaster.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiMaster.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/ColiMaster.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiTrain.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/ColiTrain.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/ColiTrain.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/ColiTrain.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelMaster.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/PotelMaster.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelMaster.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/PotelMaster.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelTrain.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/PotelTrain.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/PotelTrain.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/PotelTrain.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavMaster.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/SavMaster.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavMaster.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/SavMaster.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavTrain.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/SavTrain.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/SavTrain.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/SavTrain.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Ultramarine.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/Ultramarine.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/Ultramarine.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/Old/Ultramarine.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/animal.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/animal.png new file mode 100644 index 000000000..936c8e630 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/animal.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/nature.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/nature.png new file mode 100644 index 000000000..6e1ecc748 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/nature.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/neutral.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/neutral.png new file mode 100644 index 000000000..241f6fd72 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/neutral.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/waste.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/waste.png new file mode 100644 index 000000000..e83966d70 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Awen/waste.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierI.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierI.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierI.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierI.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierII.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierII.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierIII.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierIII.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2Star.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierIV.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/RevDaybreak2Star.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierIV.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/TheTierV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierV.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/TheTierV.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Old/TierV.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierI.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierI.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierII.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierII.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierII.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierII.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIII.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierIII.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIII.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierIII.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierIV.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierIV.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierIV.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierV.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Daybreak/TierV.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/Prev/TierV.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierI.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierI.png new file mode 100644 index 000000000..7076bc56e Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierI.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierII.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierII.png new file mode 100644 index 000000000..e71ed150b Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierII.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierIII.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierIII.png new file mode 100644 index 000000000..e6fb85f1a Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierIII.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierIV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierIV.png new file mode 100644 index 000000000..581df3428 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierIV.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierV.png new file mode 100644 index 000000000..9c7701fd0 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierV.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierVI.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierVI.png new file mode 100644 index 000000000..b508058ac Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Daybreak/TierVI.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererBlack.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/Old_WhispererBlack.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererBlack.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/Old_WhispererBlack.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererRed.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/Old_WhispererRed.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Extras/WhispererRed.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/Old_WhispererRed.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Extras/Whisperer.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/Old_WhispererWhite.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Extras/Whisperer.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/Old_WhispererWhite.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererBlack.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererBlack.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererBlack.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererBlack.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererGrey.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererGrey.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererGrey.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererGrey.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Markus.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererGrey_Custom.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/Markus.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererGrey_Custom.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRed.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererRed.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRed.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererRed.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRedWhite.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererRedWhite.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererRedWhite.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererRedWhite.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererV.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererV.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererV.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererV.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererWhite.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererWhite.png similarity index 100% rename from src/main/resources/assets/customnpcs/textures/cloak/Guilds/WhispererWhite.png rename to src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Old/WhispererWhite.png diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Whisperer.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Whisperer.png new file mode 100644 index 000000000..c43fb4cad Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/Whisperer.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack.png new file mode 100644 index 000000000..edd8e2379 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_Custom.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_Custom.png new file mode 100644 index 000000000..3e367eb9d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_Custom.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_RedSymbol.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_RedSymbol.png new file mode 100644 index 000000000..b981ff5f8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_RedSymbol.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_RedTrim.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_RedTrim.png new file mode 100644 index 000000000..8db96cd6f Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBlack_RedTrim.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBrown_Custom.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBrown_Custom.png new file mode 100644 index 000000000..c991a2c1d Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererBrown_Custom.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererWhite.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererWhite.png new file mode 100644 index 000000000..20d89e2f8 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererWhite.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererWhite_RedSymbol.png b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererWhite_RedSymbol.png new file mode 100644 index 000000000..c0b45c00c Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/cloak/Guilds/Whisperer/WhispererWhite_RedSymbol.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png index fda282903..057c3c09d 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedBlue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png index 8d674d335..f58b600b2 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkBlue.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png index 128740951..67e44110a 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkPurple.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png index 7327cfe57..10411c679 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedDarkRed.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png index f4cc949e1..67ddb79f4 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedGreen.png differ diff --git a/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png b/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png index 5675e0046..204f3dd83 100644 Binary files a/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png and b/src/main/resources/assets/customnpcs/textures/cloak/RaggedRed.png differ